Функция экспорт в 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.

 2
Author: Santiago, 2017-07-27

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-инъекции?
 1
Author: Kenny Barrera, 2017-07-27 19:13:15