@Tati_92

Я новичок! Применена функция ORDER BY, при обновлении страницы не выводит товар с БД, но при нажатии на сортировку все выводит.В чем ошибка?

Учусь по видео! создаем интернет магазин с БД. При переходе на страницу браузер выдает ошибку :

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in W:\domains\korea.ru\for_face.php on line 89

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in W:\domains\korea.ru\for_face.php on line 132

При нажатии на сортировку- товары выводятся, при нажатии на виды показа страниц(блочный и строчный) тоже выводится.
Помогите разобраться в чем ошибка!!!!!

<!DOCTYPE html>

<html >
 <head>
    <?php
    include('includes/db.php');//Подключаю БД
	
	$sorting='';
    if(isset($_GET['sort'])) {
        $sorting = $_GET['sort'];
            }
    switch ($sorting) {
		
    case 'price-asc';
		$sorting = 'price ASC';
		$sort_neme = 'От дешовых к дорогим';
		break;
		
		case 'price-desc';
		$sorting = 'price DESC';
		$sort_neme = 'От дорогих к дешовым';
		break;
		
		case 'popular';
		$sorting = 'count DESC';
		$sort_neme = 'Популярные';
		break;
		
		case 'news';
		$sorting = 'datetime DESC';
		$sort_neme = 'Новинки';
		break;
		
		case 'brand';
		$sorting = 'brand DESC';
		$sort_neme = 'Бренд';
		break;
		
        default:
		$sorting = 'products_id DESC';
		$sort_neme = 'Нет сортировки';
        break;		
	}
	
	?>

  <meta charset="utf-8"/>
 
  <meta name="viewport" content="width=device-width,initil-scale=1"/> <!-- ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ -->
  
  <link href="css/stil.css" rel="stylesheet" type="text/css"/>  <!-- ССЫЛКА НА CSS -->
  <link href="css/media.css" rel="stylesheet" type="text/css"/>  <!-- ССЫЛКА НА CSS -->

 
  
  <title>Косметика для лица</title><!-- Название веб-страницы -->

  <?php require "header.php"; ?>
  
  </head> 
  <div  id="topbutton">&#8593;<br/>Наверх</div> 
 
 <body>
  
	
  <div id="conteiner">   
  <div id="conteiner-goods">
  
  <p id="view">Вид:</p>
  <a href="#"> <img  id="box_list1" src="image/nav/box-list.png" alt="img"/></a>
  <a href="#"> <img  id="box_list2" src="image/nav/box1.png" alt="img"/></a>
  
  <p id="sort">Cортировать:</p>
  <a id="link"><?php echo $sort_neme; ?></a>
  <div id="sort_block">
  <a href="for_face.php?sort=price-asc">От дешовых к дорогим</a><br>
  <a href="for_face.php?sort=price-desc">От дорогих к дешовым</a><br>
  <a href="for_face.php?sort=popular">Популярные</a><br>
  <a href="for_face.php?sort=news">Новинки</a><br>
  <a href="for_face.php?sort=brand">Бренд</a>
  </div>
  
 <div id="single_goods_block"> 
 
 <?php
 
 $result =  mysqli_query($link, "SELECT * FROM  teble_products  ORDER BY  $sorting");//выводим товары
    
	if (mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_array($result);
    do {
      echo('
	 
	 
	 <div id="goods_block">
	    <img class="img_face" src="image/goods/fase/'.$row["image"].'"/>
		
		<p class="style_title"><a href="#">' . $row["title"] . '</a> </p> 
		<hr>
	    
		<a data-tooltip="Просмотры"><img id="reviews" src="image/nav/eye.png"/><p id="reviews_quantity">0</p></a>
		
		<a data-tooltip="Добавить в Избранные"><p id="heart_quantity">0</p> <img id="heart" src="image/nav/heart.png"/></a>
		
		<p class="price_goods_face"><strong> '.$row["price"].' </strong> руб.</p> 
		
		<a href="http://korea.ru/cart.php" data-tooltip="Корзина">
		<img  id="cart_goods_face"src="image/Box pink-256.png" alt="img"/>
		<p id="cart_quantity">0</p>
		</a> 
		
		
		<div class="mini_description"> '.$row["mini_description"].'</div>
    </div>     
	  	
    
	  ');
    }
    while ($row = mysqli_fetch_array($result));
  }
 ?>

   </div>
 

 <div id="single_goods_line"> 
	
 <?php
 
 $result =  mysqli_query($link, "SELECT * FROM  teble_products ORDER BY  $sorting");//выводим товары
    
	if (mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_array($result);
    do {
		
	
      echo('
	 
	 
	 <div id="goods_block_line">
	    <img class="img_face_line" src="image/goods/fase/'.$row["image"].'"/>
		
		<p class="style_title_line"><a href="#">' . $row["title"] . '</a> </p> 
		
	    
		<a data-tooltip="Просмотры"><img id="reviews_line" src="image/nav/eye.png"/><p id="reviews_quantity_line">0</p></a>
		
		<a data-tooltip="Добавить в Избранные"><p id="heart_quantity_line">0</p> <img id="heart_line" src="image/nav/heart.png"/></a>
		
        <a href="http://korea.ru/cart.php" data-tooltip="Корзина">
		<img  id="cart_goods_face_line"src="image/Box pink-256.png" alt="img"/>
		<p id="cart_quantity_line">0</p>
		</a>
		
		<p class="price_goods_face_line"><strong> '.$row["price"].' </strong> руб.</p> 
		
		<div class="description_line"> '.$row["description"].'</div>
    </div>     
	  	
    
	  ');
    }
    while ($row = mysqli_fetch_array($result));
  }
 ?>


   </div>
   </div>
</div>
   
   <script type="text/javascript" src="js/jquery-3.4.1.min.js"></script> <!--  подключается первым -->
   <script type="text/javascript" src="js/jquery.cookie.js"></script>
   <script type="text/javascript" src="js/goods.js"></script>
  
   <script type="text/javascript" src="js/script.js"></script><!--подключается вторым-->
   
 </body> 
  <?php include "footer.php"; ?>

 
</html>


$('document').ready(function(){
	
	$("#box_list1").click(function(){//блок
		
		$("#single_goods_block, #goods_block").show();//показать
		$("#single_goods_line, #goods_block_line").hide();//скрыть
		
		$.cookie('select-style','block');
		
	});
	
	$("#box_list2").click(function(){//список
	
		$("#single_goods_line, #goods_block_line").show();//Показать 
		$("#single_goods_block, #goods_block").hide();//скрыть
		
        $.cookie('select-style','line');
	});
    
	

    $("#link").click(function(){
  
        $("#sort_block").slideToggle(200);
  
  
    }); 
});
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ошибка в запросе.
Чтобы узнать - какая именно, перед коннектом к БД всегда должна быть строчка
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

и тогда пхп подробно расскажет, что не так с твоим запросом

Для новичка кстати код не так уж и плох.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@maksim_fix
Junior PHP developer
Ошибки говорят, что в mysqli_num_rows попадает булево значение, а должен быть объект mysqli_result. Значит, что-то не так с $result
Прочитайте документацию https://www.php.net/manual/ru/function.mysql-num-r...
Пример оттуда:
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
Ответ написан
@kur4chyt
Качественный говнокод от производителя
Вместо mysqli_num_rows($result)
Используйте $result->num_rows

Мне это помогло.
Ответ написан
@Tati_92 Автор вопроса
Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'Unknown column 'products_id' in 'order clause'' in W:\domains\korea.ru\for_face.php:89 Stack trace: #0 W:\domains\korea.ru\for_face.php(89): mysqli_query(Object(mysqli), 'SELECT * FROM ...') #1 {main} thrown in W:\domains\korea.ru\for_face.php on line 89

вот что пишет! Объясните пожалуйста!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы