Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ajax. jQuery. Передать все значения табицы БД из PHP в JS и вывести их на экран. PHP 7.3

FrapsGN Мастер (1082), закрыт 3 года назад
Собственно проблема описана в теме вопроса, но в кратце: у меня есть кнопка, которая должны выводить все значения таблицы `users`, это я организовал, но очень уж бесит меня постоянная перезагрузка страницы. Можно ли сделать выборку из таблицы прямо в сайт без перезагрузки? Накиньте статеек для PHP 7.3
Лучший ответ
Константин Ефименко Гуру (3721) 3 года назад
"Можно ли сделать выборку из таблицы прямо в сайт.."

Допустим у нас есть некий файл - example.php, это файл, в который будут поступать только ajax запросы и более ничего. В нём мы делаем следующее:

if (isset($_POST['myReqest']))
{
MyAjax();
}
function MyAjax()
{}

Таким образом, мы сможет складывать в один файл, сколько угодно ajax запросов и они не будут конфликтовать и пересекаться.

function MyAjax()
{
include('connect.php');
$sql = ("Здесь будет ваш sql запрос обращения к базе");
$stmt = sqlsrv_query($conn, $sql);
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
$Param1 = $row['Значение из базы'];
}
echo json_encode((object)
[
"MyPar" => $Param1, //По этому названию, будем обращаться в jQuery
]);
}

Мы подключаем connect.php, это один единственный файл, который будет содержать переменную подключения к базе, в данном случае - $conn.

После извлечения нужных переменных, перечисляем и складываем их в объект json. Причём каждая отдельная переменная, будь-то строка или массив, будут различимы.

$.post("example.php", "myReqest="+MyStr, function(data)
{
var MyPar = JSON.parse(data).MyPar;
$('select').html('');
$.each(MyPar, function(i)
{
var counter = MyPar[i];
$('select').append('<option value="'+counter+'"></option>');
});
}, "json");

Со стороны jQuery, мы делаем POST запрос, где MyStr - это переменная, которую мы хотим передать. В обратном вызове, мы вытаскиваем конкретное значение и уже со стороны клиента распоряжаемся как хотим. В данном случае, мы очищаем и заполняем элемент select.

Мы так же можем захотеть, передать несколько элементов запрос, выглядит это так:

var jsonObj = [];
$('.elem').each(function()
{
item = {}
item["Par1"] = a;
item["Par2"] = b;
item["Par3"] = c;
jsonObj.push(item);
});
var jsonStr = JSON.stringify(jsonObj);
$.post("example.php", "myReqest="+jsonStr, function(data){}

Мы складывает в объект переменные столько раз, сколько цикл найдёт элементов с классом - elem. Затем преобразуем в строку json и отправляем подобно примеру выше.

Как, что и куда выводить со стороны клиента, уже решать только вам.
FrapsGNМастер (1082) 3 года назад
Большое спасибо! Буду сидеть всю ночь и разбирать ваш код!)
FrapsGNМастер (1082) 3 года назад
Вопрос по данной строчке
$('select').html('');
Она как я понял у объекта "отчищает все внутренности?
И ещё вопрос: если мы нажимаем кнопку submit в форме и посылаем через POST, то страница автоматически обновляется? Нужно получается запретить ей это делать принудительно через JS?
Константин Ефименко Гуру (3721) "Она как я понял у объекта "отчищает все внутренности?" $('select').html(''); Мы обращаемся ко всем элементам select, которые найдём на странице, и да затем очищаем их содержимое. "..если мы нажимаем кнопку submit в форме.. то страница автоматически обновляется?" Да это так, оставьте метод POST у формы, а кнопки сделайте <button type="button"></button>. Таким образом, вы будете отправлять ajax запрос, без обновления страницы.
Остальные ответы
Похожие вопросы