Как фильтровать параметры раскрывающегося списка, чтобы перечислять мои записи в таблице?
Пример фильтра HTML:
<form action="filter.php" method="post"> <select name="filter"> <option>FILTER:</option> <option value="alphabetical">ASC</option> <option value="date">Date</option> </select> </form>
Базовый выбор MySQL:
SELECT * FROM table ORDER BY name
Основной HTML, который перечисляет значения:
echo '<h1>'.$name.'</h1> <h1>'.$date.'</h1>';
Второй фильтр (дата) должен сделать SELECT, в котором перечислены все записи с датами ASC. Второй первый (в алфавитном порядке) должен сделать SELECT, который перечисляет все записи имени только ASC.
Любая идея о том, как MySQL SELECT будет работать в этом случае?
HTML:
<select name="filter" onchange="filter(this.value)"> <option>FILTER:</option> <option value="alphabetical">ASC</option> <option value="date">Date</option> </select> <div id="results"></div>// store the results here
Jquery:
function filter(item){ $.ajax({ type: "POST", url: "filter.php", data: { value: item}, success:function(data){ $("#results").html(data); } }); }
filter.php:
include "connection.php"; //database connection $fieldname = $_POST['value']; if($fieldname=="alphabetical"){ // if you choose first option $query1 = mysqli_query("SELECT * FROM table ORDER BY name ASC"); // echo the results }else{ // if you choose second option $query1 = mysqli_query("SELECT * FROM table ORDER BY date ASC"); // echo the results }
Примечание. Не забудьте включить библиотеку jquery.
Они должны работать, предполагая, что имя и дата являются именами полей в таблице.
SELECT * FROM table ORDER BY name ASC SELECT * FROM table ORDER BY date ASC
Я бы сделал что-то вроде этого,
HTML:
<form action="filter.php" method="post"> <select name="filter"> <option>FILTER:</option> <option value="alphabetical">ASC</option> <option value="date">Date</option> </select> </form>
PHP
<?php switch($_POST['filter']){ case "alphabetical": $field = "name"; break 1; case "date": $field = "date"; break 1; } $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); $stmt = $mysqli->prepare("SELECT * FROM table ORDER BY ? ASC"); $stmt->bind_params("s",$field); $stmt->execute(); //ETC ?>