Как я могу добавить параметры фильтра для моей таблицы из моей базы данных в php

Я хочу отфильтровать вывод моей таблицы из моей базы данных, например, по 'product_id'. Таким образом, отображаются только товары с одинаковым идентификатором. Я добавил раскрывающийся список в HTML, но не знаю, как связать его с моим запросом mysql.

Здесь вы можете увидеть, как выглядят заголовки моей таблицы и как выглядит мой раскрывающийся список, он уже принимает данные моей базы данных, поэтому он уже показывает нужные продукты

 <div class = "form-group{P1}">
<label class = "col-sm-2 control-label" for = "selectp1" value = "{P1}">P</label>
<div class = "col-sm-10">
    <select id = "selectp1" name = "selectp1" required autofocus class = "form-control selectpicker unloadmsg" onchange = "showSelects();">
        {POPTIONS}
    </select>
</div>

     private function getDatensatzQuery() {
        $sql = "SELECT [....]


                . 'LEFT JOIN [....];

        if ($filterdata['filterfor'] == 'date') {
            $sql .= "AND DATE(a.datum) = '$filterdata[datum]' ";
        } else if ($filterdata['filterfor'] == 'daterange') {
            $sql .= "AND a.datum BETWEEN '" . date('Y-m-d H:i:s', 
  $filterdata['filterrangefrom']) . 
                    "' AND '" . date('Y-m-d H:i:s', 
  $filterdata['filterrangeto']) . "' ";
        }
        if ($filterdata['filterfor']=='produkt'){
            $sql .= "AND p_id= '$filterdata[p]'";
        }

        $sql .= "ORDER BY $orderby " . (($orderdesc) ? 'DESC' : 'ASC');
        $sql .= ($paginate) ? " LIMIT $start, $schritt" : '';          
        return $sql;
}

Не стесняйтесь задавать вопросы

доступно много учебников, попробуйте что-нибудь сделать, см. stackoverflow.com/questions/15415571/ajax-php-drop-down-list

Rahul Shrivastava 13.04.2018 11:27
Стоит ли изучать 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 и хотите разрабатывать...
1
1
494
2

Ответы 2

Обновлено: удалил мой последний комментарий, вот что я закодировал с моим пониманием вашего вопроса, но я не могу помочь с фильтрами / сортировкой SQL, поскольку я никогда не использовал его

<table style = "text-align: center;">
    <tr>
        <th>
            ID
        </th>
        <th>
            NAME
        </th> 
        <th>
            IP
        </th>
    </tr>
<?php
    $servername = "";
    $susername = "";
    $spassword = "";
    $dbname = "";
    $conn = mysqli_connect($servername, $susername, $spassword, $dbname); //Connect
    if (!empty($_POST['option_filter'])){
        $choosen_filter = $_POST['option_filter'];
        //You can now create the SQL request to filter the results to display to the user depending on one of the options
        if ($choosen_filter == 'filtrer_ids'){
            //SQL filter per IDS
        }else if ($choosen_filter == 'filtrer_names'){
            //SQL filter per NAMES
        }else if ($choosen_filter == 'filtrer_ips'){
            //SQL filter per IPS
        }
        // ----------------------------------------------------------------------------------
        // This is just an example to get every row of the database with all 3 variables
        // You can print each row with all results just after sorting/filtering them
        $sql = "SELECT id,username,ip FROM users_database";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                $MYSQL_username = $row['username'];
                $MYSQL_ip = $row['ip'];
                $MYSQL_id = $row['id'];
                $display=1; //Just to remember that you got results
                //Then print the entire row with each values
                print('<tr><th>'.$MYSQL_username.'/th><th>'.$MYSQL_ip.'</th><th>'.$MYSQL_id.'</th></tr>');
               }
        }
        // ----------------------------------------------------------------------------------
    }
?>
</table>
<form action = "PAGE.php" method = "POST" id = "filter">
    <select name = "option_filter">
        <option value = "filtrer_ids">Filter IDS</option>
        <option value = "filtrer_names">Filter NAMES</option>
        <option value = "filtrer_ips">Filter IPS</option>
    </select>
    <input type = "submit" name = "submit" value = "filter">
</from>

Я хочу добавить раскрывающиеся поля над таблицей, где я могу выбрать параметры, которые фильтруют мою таблицу. Так, как будто я должен добавить ниже sql-запрос, что если выбрано раскрывающееся поле, я должен добавить, например, «AND product_id = 1», но я не знаю, как получить ввод из раскрывающегося поля в мой php-скрипт.

RYU5 13.04.2018 12:04

Давным-давно это была моя попытка ^^ У меня сработало, но я использовал только 1 фильтр. Обратите внимание, что я использовал JQuery.

Рядом с выпадающим списком Айв добавил кнопку:

<button id = "suchen" onclick = "Suchen()" value = "Suche starten" class = "btn btn-secondary">Suche starten</button>

Он вызывает мою функцию поиска с именем «Suchen ()» (функция JS).

function Suchen() {
     var eingrenzung1 = $("#filter :selected").text();
     var eingrenzung2 = $("#filter2 :selected").text();
     var eingrenzung3 = $("#filter3 :selected").text();
     var eingrenzung4 = $("#filter4 :selected").text();
     //Just an idea, otherwise the if-Check would be false
     if (eingrenzung2 == ""){
           var eingrenzung2 = "%"
     }
     if (eingrenzung3 == ""){
           var eingrenzung3 = "%"
     }
     if (eingrenzung4 == ""){
           var eingrenzung4 = "%"
     }
     Ajax('#tabelle', 'http://localhost/.../ajax/Tabelle.php?eingrenzung1='+eingrenzung1+'&eingrenzung2='+eingrenzung2+'&eingrenzung3='+eingrenzung3+'&eingrenzung4='+eingrenzung4;

}

Он отправляет данные в таблицу (я поместил таблицу в дополнительный документ) и активирует проверку в этом документе.

if (isset($_GET['eingrenzung1']) AND isset($_GET['eingrenzung2']) AND isset($_GET['eingrenzung3']) AND isset($_GET['eingrenzung4'])) {
    $kopf1->Sucher($_GET['eingrenzung1'], $_GET['eingrenzung2'], $_GET['eingrenzung3'], $_GET['eingrenzung4']);
    $result2 = $kopf1->alleDaten;
    $anzahl = $kopf1->anzahl;
}

$ kopf1 - это объект, не знаете, используете ли вы ООП ?, и класс-функция Сучера:

public function Sucher($eingrenzung1,$eingrenzung2,$eingrenzung3,$eingrenzung4){
    $query = "SELECT * FROM table WHERE Column1 LIKE '$eingrenzung1%' AND Column2 LIKE '$eingrenzung2%' AND Column3 LIKE '$eingrenzung3%' AND Column4 LIKE '$eingrenzung4%'";
    $this->Ausfuehren($query);
    $this->alleDaten = $this->query->fetchAll(PDO::FETCH_BOTH);
    $this->anzahl = $this->query->rowCount();
    return $this->alleDaten;
}

И затем я повторяю результаты в таблице (в Table.php)

<?php
for($i=0;$i < $anzahl;$i++){    ?>
    <tr id = "<?php echo $result2[$i][0]; ?>" name = "j">
        <td class = "t1"><input type='checkbox' name='multiDelete' class = "bd"></td>
        <td class = "t1" value = "<?php echo $result2[$i][0]; ?>"><?php echo $result2[$i][0]; ?></td>
        <td class = "t1"><?php echo $result2[$i][1]; ?></td>
        <td class = "t1"><?php echo $result2[$i][2]; ?></td>
        <td class = "t1"><?php echo $result2[$i][3]; ?></td>
        <td class = "t1"><?php echo $result2[$i][4]; ?></td>
        <td class = "t1"><?php echo $result2[$i][5]; ?></td>
        <td class = "t1"><?php echo $result2[$i][6]; ?></td>
        <td class = "t1"><?php echo $result2[$i][7]; ?></td>

    </tr>
<?php
}   

?>

(Я знаю, это не выглядит красиво ^^)

Не знаю, поможет ли это

Обновлено: Может быть, это немного лучше подходит для вашего вопроса сейчас

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