JiaWei Lee Ответов: 2

Неопределенный индекс: флажок в PHP


Список флажков для выбора пользователем типа жанра. Жанр вводится из базы данных. Поскольку sql вернет результат в виде массива, цикл for получит все значения и превратит их в флажок. Ошибка исходит из третьей строки цикла. Он показывает неопределенный индекс жанра

Что я уже пробовал:

<div class="list-group">
      <h3>Genre</h3>
      <?php
      $search_genre = "SELECT DISTINCT(genre) FROM movie_db WHERE product_status ='1' ORDER BY movieid DESC"
      $statement = mysqli_query($conn,$search_genre);
      $result = mysqli_fetch_all($statement);
      foreach ($result as $row){
         ?>
         <div class="list-group-item checkbox">
         <label><input type="checkbox" class="common_selector genre" value="<?php echo$row['genre'];?> > <?php echo $row['genre'];?></label>
</div>
<?php
}
?>

2 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Тебе есть чем заняться:

Исправьте код - пробелы очень важны:

value="<?php echo$row['genre'];?> >
value="<?php echo $row['genre']; ?>"
Но на самом деле циклы, которые строят HTML, должны, как правило, строить HTML, а не только значения (из php). Ваш оператор foreach() не должен резко заканчивать php, а вместо этого строить весь HTML, например так:
 foreach ($result as $row) {
  ECHO "<div class="list-group-item checkbox">"
     . " <label><input type='checkbox' class='common_selector genre'"
     . " value=\"{$row['genre']}\"> {$row['genre']} </label>"
     . "</div>";
}

Это гораздо более читабельно и выводит ваши строки данных. Этот


Рейтинг:
2

Richard Deeming

SELECT DISTINCT(genre) FROM movie_db WHERE product_status = '1' ORDER BY movieid DESC

Это приведет к получению результирующего набора с одним ООН-по имени колонка. В результате ваши строки не содержат столбца с именем genre.

Дайте вашей колонке псевдоним:
SELECT DISTINCT(genre) As genre FROM movie_db WHERE product_status = '1' ORDER BY movieid DESC