Функция экспорт в Excel с параметрами PHP
я хочу адаптировать эту функцию, которую я использую для экспорта всей БД в Excel, к функции, которая, передав ей параметр (paq), возвращает мне excel с совпадениями БД.
моя кнопка HTML.
<button onclick="Export()" class="btn btn-primary">Exportar a Excel</button>
функция Export в JS.
function Export()
{
var conf = confirm("Exportar a CSV?");
if(conf == true)
{
window.open("pasajeros/export.php", '_blank');
}
}
И export.php
<?php
require("ajax/db_connection2.php");
$query = "SELECT * FROM users";
if (!$result = mysqli_query($con, $query)) {
exit(mysqli_error($con));
}
$users = array();
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$users[] = $row;
}
}
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=EMT_Pasajeros.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('ID', 'Nombre', 'Apellido', 'Email', 'F.Nacimiento', 'Telefono', 'Tel.Seguro', 'Paquete','$ VENTA', '$ EMISIÓN', '$ NETA', 'DNI', 'Vendedor', 'Link Comprobante'));
if (count($users) > 0) {
foreach ($users as $row) {
fputcsv($output, $row);
}
}
?>
я хотел бы знать, как связать параметр Export ('parametro') onlick с функцией JS и передать этот параметр pasajeros/export.php чтобы сделать запрос к БД с WHERE parametro.
1 answers
У вас есть два варианта. Вы можете использовать метод ответа GET
(минимальное количество изменений в вашем коде, но менее безопасное) или метод ответа POST
(больше изменений в коде, но безопаснее) для достижения вашей цели. Во-первых, чтобы получить этот параметр в функции JS (где бы вы его ни получили) и отправить его с помощью этих методов, вы бы сделали что-то вроде этого:
GET
function Export(parametro)
{
var conf = confirm("Exportar a CSV?");
if(conf == true)
{
window.open("pasajeros/export.php?parametro="+parametro, '_blank');
}
}
Пост
function Export(parametro)
{
var conf = confirm("Exportar a CSV?");
if(conf == true)
{
var mdr = new XMLHttpRequest();
mdr.open("POST", "pasajeros/export.php", true);
mdr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
mdr.send("parametro="+parametro);
}
}
Чтобы получить этот параметр со стороны PHP
GET
$query = "SELECT * FROM users WHERE id = ".$GET["parametro"];
Пост
$query = "SELECT * FROM users WHERE id = ".$POST["parametro"];
Как вы можете заметить, в части JavaScript
мы включаем параметр в url
, который требуется, а в части PHP
мы получаем доступ к параметру благодаря супер глобальной переменнойGET
/POST
, это исправление.
Пост Ответ
- вы всегда должны быть осторожны с тем, что вводит любой из ваших пользователей . Я не знаю, откуда вы получите тот параметр, о котором мы говорим, но теперь более чем когда-либо важно параметризовать все ваши динамические запросы и избежать SQL-инъекций. Поэтому я очень рекомендую вам прочитать этот другой вопрос, который говорит об этом: как избежать SQL-инъекции?