У меня есть страница галереи на моем веб-сайте, над которым я работаю, и при переходе на нее просто отображаются ВСЕ категории (я просто SELECT * FROM tblImages, однако теперь я добавил фильтр, и я хочу, чтобы пользователи могли выбирать какую категорию фотографий они хотели бы видеть в галерее.
Мой код до сих пор (мой выпадающий список):
<div class = "grid-2">
<form action = "" method = "POST">
<label>Competition Categories</label>
<select name = "catID">
<option value = "">Select</option>
<option value = "1">Black & White</option>
<option value = "2">Urban</option>
<option value = "3">Natural World</option>
<option value = "4">Anything Goes</option>
<option value = "5">Straight Out Of The Camera</option>
<option value = "6">Landscape</option>
</select>
</fieldset>
<button name = "view-cat" type = "submit" type = "button">View</button>
</form>
</div>
Код моей галереи с моим запросом, чтобы сначала показать ВСЕ изображения:
<div class = "row">
<div class = "grid-full">
<h1><u>GALLERY</u></h1>
<div class = "masonry">
<?php
$query = "SELECT * FROM `tblImage`";
$result = $conn -> query($query);
while($row = $result -> fetch_assoc())
{
?>
<div class = "item">
<a href = "<?php echo $row['fldFilePath']; ?>" data-lightbox = "gallery" data-title = "<?php echo $row['fldName']; ?>"><img alt src = "<?php echo $row['fldFilePath']; ?>" class = "ImgRound"></a>
<button class = "update-title-btn">Update</button>
<button class = "delete-img-btn">Delete</button>
</div>
<?php
}
?>
Знаете ли вы, как я затем выполняю запрос к SELECT * FROM tblImage WHERE fldCatID =1; в зависимости от того, решил ли пользователь выбрать что-то из выпадающего списка??
Спасибо






вы можете просто сделать такой запрос:
<?php
if (isset($_POST['view-cat']){
$query = "SELECT * FROM `tblImage` WHERE fldCatID ='".$_POST['catID']."'";
$result = $conn -> query($query);
while($row = $result -> fetch_assoc())
{
... the code will loop
}
}else{
$query = "SELECT * FROM `tblImage` ";
$result = $conn->query($query);
while($row = $result-> fetch_assoc())
{
... the code will loop if no selection
}
}
@K.Haydock можно сделать if else >> if (там выбор) select * wehre и else select *
@A.E-zahaby, так что это работает, но теперь при переходе на страницу вообще НЕ показывает изображений, пока не будет нажата категория, можно ли как-нибудь показать, что вы имеете в виду, если никто не выбрал показать все, иначе просто показать категорию «x»? :-)
Сначала вам нужно убедиться, что идентификатор категории установлен и является числовым (чтобы избежать SQL-инъекций):
$catID = (isset($_POST['catID']) && is_numeric($_POST['catID'])) ? $_POST['catID'] : false;
Затем вы можете запустить запрос:
$query = "SELECT * FROM `tblImage`" . (($catID) ? " WHERE fldCatID $catID" : "");
Использование тернарного оператора (($catID) ? " WHERE fldCatID $catID" : "") выберет категорию, только если она установлена пользователем.
Привет @DanielG, ты знаешь другой способ сделать это с помощью подготовленного оператора?
Я попробовал это, но ей не нравится моя переменная: $catID = $_POST['catID']; $stmt = $conn->prepare ("SELECT * FROM tblImage WHERE fldCatID = ?"); $stmt->bind_param("i", $catID); $stmt->выполнить(); $result = $stmt->get_result();
Het @DanielG спасибо за ответ, я понял, что приведенный выше код не работает, так как когда пользователь попадает на страницу, идентификатор кошки не будет установлен при загрузке страницы, поэтому я добавил: if (isset($_POST ['catID'])) { $catID = $_POST['catID']; }
@K.Haydock Эквивалентный код указан в ответе, я просто выбрал тернарный оператор вместо оператора if. Используйте то, что вам наиболее удобно.
Спасибо @DanielG Я не сталкивался с этим, будучи новичком, но я обязательно посмотрю на это, еще раз спасибо за вашу помощь! :-)
Привет спасибо. Могу ли я спросить, будут ли ВСЕ изображения отображаться сначала, когда еще не было выбора с этим?