Я пытаюсь заполнить поле select
с помощью PHP. Проблема в том, что я не могу понять, как отображать их, потому что я получаю одно значение, которое соответствует значению в базе данных, которое отображается дважды, потому что я повторяю его как выбранный, а затем зацикливаю все результаты. Как я могу отобразить только тот, который соответствует значению полей, а затем все те, которые не соответствуют выбранному?
ТАБЛИЧНЫЕ КАТЕГОРИИ
cat_id cat_name 1 soccer 2 baseball 3 basketball
ТАБЛИЧНЫЕ СТАТЬИ
art_id art_cat_id 1 1
PHP / HTML
<select name="category"> <?php $sql = "SELECT cat_id cat_name, art_id, art_cat_id FROM categories LEFT JOIN articles ON categories.cat_id = articles.art_cat_id WHERE art_id = 1"; $result = query($sql); if($result===false) { echo("Query Fail"); } else { ?> <option value="<?php echo $data['art_cat_id'] ?>" selected="selected"><?php echo $data['cat_name'] ?></option> <?php while( $data = mysqli_fetch_array($result)) { ?> <option value="<?php echo $data['cat_id'] ?>"><?php echo $data['cat_name'] ?></option> <?php } } ?> </select>
Что он возвращает
<select name="category"> <option value="1" selected="selected">soccer</option> <option value="1">soccer</option> <option value="2">baseball</option> <option value="3">basketball</option> </select>
Что я ищу
<select name="category"> <option value="1" selected="selected">soccer</option> <option value="2">baseball</option> <option value="3">basketball</option> </select>
Пропустите строку, если значение соответствует первому.
Фрагмент:
?> <option value="<?php echo $data['art_cat_id'] ?>" selected="selected"><?php echo $data['cat_name'] ?></option> <?php while( $data = mysqli_fetch_array($result)) { if ($data['art_cat_id'] == $data['cat_id']) continue; ?> <option value="<?php echo $data['cat_id'] ?>"><?php echo $data['cat_name'] ?></option> <?php }