Результаты для извлечения выбранной категории из галереи - php sql

У меня есть страница галереи на моем веб-сайте, над которым я работаю, и при переходе на нее просто отображаются ВСЕ категории (я просто 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 в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вы можете просто сделать такой запрос:

<?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 15.03.2019 17:28

@K.Haydock можно сделать if else >> if (там выбор) select * wehre и else select *

A. El-zahaby 15.03.2019 17:37

@A.E-zahaby, так что это работает, но теперь при переходе на страницу вообще НЕ показывает изображений, пока не будет нажата категория, можно ли как-нибудь показать, что вы имеете в виду, если никто не выбрал показать все, иначе просто показать категорию «x»? :-)

K.Haydock 16.03.2019 16:39

Сначала вам нужно убедиться, что идентификатор категории установлен и является числовым (чтобы избежать 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, ты знаешь другой способ сделать это с помощью подготовленного оператора?

K.Haydock 16.03.2019 17:31

Я попробовал это, но ей не нравится моя переменная: $catID = $_POST['catID']; $stmt = $conn->prepare ("SELECT * FROM tblImage WHERE fldCatID = ?"); $stmt->bind_param("i", $catID); $stmt->выполнить(); $result = $stmt->get_result();

K.Haydock 16.03.2019 18:15

Het @DanielG спасибо за ответ, я понял, что приведенный выше код не работает, так как когда пользователь попадает на страницу, идентификатор кошки не будет установлен при загрузке страницы, поэтому я добавил: if (isset($_POST ['catID'])) { $catID = $_POST['catID']; }

K.Haydock 18.03.2019 13:29

@K.Haydock Эквивалентный код указан в ответе, я просто выбрал тернарный оператор вместо оператора if. Используйте то, что вам наиболее удобно.

Daniel G 18.03.2019 22:11

Спасибо @DanielG Я не сталкивался с этим, будучи новичком, но я обязательно посмотрю на это, еще раз спасибо за вашу помощь! :-)

K.Haydock 19.03.2019 20:30

Другие вопросы по теме