Как передать строки MySQL в конкретный div в html с помощью PHP?

Доброго времени суток всем. Поэтому я пытаюсь получить значение параметра выбора и набор строк в 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 в ответ ajax: $ ('container'). html ('""'); $ ("# responsecontainer"). html (ответ);

Jaydp 23.05.2018 10:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Сначала я бы упростил код, например:

<?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.

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