Почему некорректно работает SQL запрос в PHP коде?

SELECT * FROM `otzovik_table` WHERE `rating` <= 3 ORDER BY `rating` ASC


Запрос указанный выше работает некорректно, но если я ASC меняю на DESC все нормально.
Точнее в самом SQL она работает, а в PHP нет.
$query = "SELECT * FROM `otzovik_table` WHERE `rating` <= 4 ORDER BY `rating` ASC";


В БД есть 3 записи которые < или = 4, но выводится только самая меньшая и все.

Весь PHP код
<?php 

include "connect.php";

$sort_hight_low = $_POST['rating_sort'];
if ($sort_hight_low == "") {
	// $sort_hight_low = 1;
}
$sort_type = $_POST['sort_type'];
$only_or = $_POST['only_or'];

echo "У/В - " .$sort_hight_low . " / ";
echo "ТОЛЬКО - ".$sort_type . " / ";
echo "НОМЕР - ".$only_or . " / ";

if ($sort_hight_low == 1) {
	if ($sort_type == 1) {
		$query = "SELECT * FROM `otzovik_table` WHERE `rating` = '$only_or'";
		$result = mysqli_query($link, $query);
	}
	else {
		$query = "SELECT * FROM `otzovik_table` WHERE `rating` <= '$only_or' ORDER BY `otzovik_table`.`rating` DESC";
		$result = mysqli_query($link, $query);
	}
}
if ($sort_hight_low == 2) {
	if ($sort_type == 1) {
		$query = "SELECT * FROM `otzovik_table` WHERE `rating` = '$only_or'";
		$result = mysqli_query($link, $query);
	}
	else {
		$query = "SELECT * FROM `otzovik_table` WHERE `rating` <= '$only_or' ORDER BY `rating` ASC ";
		$result = mysqli_query($link, $query);
	}
}

$query = "SELECT * FROM `otzovik_table` WHERE `rating` < 4 ORDER BY `rating` ASC";
$result = mysqli_query($link, $query);
if ($result) {
	$rows = mysqli_num_rows($result);

				for ($i=0; $i < $rows; ++$i) { 
					$row = mysqli_fetch_array($result);
				?>
				<div class="out_block">
					<?php 
					echo "Имя: ";
					echo $row['name'];
					echo "<br>";
					echo "Почта: ";
					echo $row['email'];
					echo "<br>";
					echo "Сообщение: ";
					echo $row['message'];
					?>
					<div class="rating_out">
					<?php
					for ($i=0; $i < $row['rating']; ++$i) { 
						?>
						
							<div class="stars">
							</div>
						
						<?php
					}
					for ($i=0; $i < 5 - $row['rating']; ++$i) { 
						?> 
							<div class="unstars">
							</div>

						<?php
					}
					
					?>
					</div>
					<?php 
					echo "Дата отзыва: ";
					echo $row['date'];

					?>
				</div>
				<?php 

	}
}
?>
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
цикл в цикле
перезаписывается $i в результате чего цикл прекращается

for ($i=0; $i < $rows; ++$i) { 
   for ($i=0; $i < $row['rating']; ++$i) {  // <--- перезаписывает изначальный $i
   for ($i=0; $i < 5 - $row['rating']; ++$i) {  // <--- перезаписывает изначальный $i


Замените в начале $i например на $row_num
for ($row_num=0; $row_num < $rows; ++$row_num) {
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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