Доброго времени суток всем. Поэтому я пытаюсь получить значение параметра выбора и набор строк в MySql в зависимости от имени столбца в базе данных. Итак, вот HTML-код:
<html>
<body>
<select name = "FilterDoc" onchange = "filterby(this);">
<option disabled>Filter By</option>
<option value = "document_type">Document Type</option>
<option value = "date">Date</option>
<option value = "hei">HEI</option>
<option value = "other">Other Govt.</option>
<option value = "person">Person</option>
</select>
<div class = "panel-body" id = "container">
</div>
Вот код для Ajax:
<script type = "text/javascript">
function filterby(sel){
$.ajax({ //create an ajax request to display.php
type: "POST",
data: {FilterDoc: $(sel).val()},
url: "filterdocu.php",
dataType: "html", //expect html to be returned
success: function(response)
{
$("#responsecontainer").html(response);
}
console.info(reply);
});} </script>
Теперь значение параметра select будет передано в файл PHP. Я не знаю, подходит ли для этого «оператор if», поскольку у меня не было такого опыта получения значений в html и т. д., И я пытаюсь найти лучший способ получить строки из MySql и отобразить их в контейнер.
Вот код PHP:
<?php echo"<div class='panel panel-primary' id='container'>";
if ($_POST["FilterDoc"]= = "document_type")
{
echo "<script type='text/javascript'>$('container').html('""');</script>";
$result=mysqli_query($conn,"SELECT * FROM records ORDER BY document_type ASC");
while($data = json_encode(mysql_fetch_assoc($result))
{
echo json_encode($data);
}
}
else if ($_POST["FilterDoc"]= = "date")
{
$result=mysqli_query($conn,"SELECT * FROM records ORDER BY date_received DESC");
echo "<script type='text/javascript'>$('container').html('""');</script>";
while($data = json_encode(mysql_fetch_assoc($result))
{
echo json_encode($data);
}
}
else if ($_POST["FilterDoc"]= = "hei")
{
$result=mysqli_query($conn,"SELECT * FROM records ORDER BY hei ASC");
echo "<script type='text/javascript'>$('container').html('""');</script>";
while($data = json_encode(mysql_fetch_assoc($result))
($result))
{
echo json_encode($data);
}
}
else if ($_POST["FilterDoc"]= = "Other")
{
$result=mysqli_query($conn,"SELECT * FROM records ORDER BY other_govt ASC");
echo "<script type='text/javascript'>$('container').html('""');</script>";
while($data = json_encode(mysql_fetch_assoc($result))
{
echo json_encode($data);
}
}
else if ($_POST["FilterDoc"]= = "Person")
{
$result=mysqli_query($conn,"SELECT * FROM records ORDER BY contact_person ASC");
echo "<script type='text/javascript'>$('container').html('""');</script>";
while($data = json_encode(mysql_fetch_assoc($result))
{
echo json_encode($data);
}
}echo"</div>"; ?>
Я также не совсем уверен, что использование javascript для очистки контейнера является правильным способом перед помещением содержимого в контейнер div. Буду очень признателен за вашу помощь. Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Сначала я бы упростил код, например:
<?php
echo "<div class='panel panel-primary' id='container'>";
// Set Variable
$filter = $_POST["FilterDoc"]; // This needs proper escaping
$result = mysqli_query($conn,"SELECT * FROM records ORDER BY $filter ASC");
while($data = json_encode(mysql_fetch_assoc($result)) {
echo json_encode($data);
}
echo "</div>";Это часть PHP, теперь я бы переписал javascript.
function filterby(sel) {
$.ajax({ //create an ajax request to display.php
type: "POST",
data: {
FilterDoc: $(sel).val()
},
url: "filterdocu.php",
dataType: "html", //expect html to be returned
success: function(response) {
$("#container").empty().html(response);
}
});
}Но, возможно, весь ваш процесс фильтрации может оказаться неэффективным. Вы можете получить все данные одним вызовом SQL и выполнить фильтрацию с помощью атрибутов JS / data.
поместите javascript в ответ ajax: $ ('container'). html ('""'); $ ("# responsecontainer"). html (ответ);