У меня есть файл php, который подключается к базе данных ниже, он работает нормально и отображает таблицу результатов, в которой пользователь указывает один файл с раскрывающимся списком, и в нем есть Jquery указатель даты для диапазона дат в выбранном запрос. Это грязно (извините за это!), Но функционально. Проблема в том, что я хочу добавить кнопку загрузки, чтобы конечный пользователь мог выводить то, что на экране, в CSV, включая заголовки. Мои попытки выявить мой любительский подход к кодированию (то есть я не могу это сделать!) Я возился с плагином table2excel. Я уверен, что это проще, чем то, что я не уверен, как написать функцию .csv, сохраняя при этом код, который я есть или действительно ли это может быть сделано вокруг существующего кода. Большинство моих попыток экспорта в .csv дали пустой .csv или прекрасный .csv моего реального кода !!
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT CLIENT.company,CLIENT.first,CLIENT.last,INVOICES.clientid,CLIENT.class_id,INVOICES.invid,FROM_UNIXTIME(INVOICES.date)as date,INVOICES.amount,payment_records.type,inv_taxes.name,inv_taxes.value,inv_taxes.rate
FROM `INVOICES`
LEFT JOIN payment_records ON payment_records.invid = INVOICES.invid
LEFT JOIN inv_taxes ON inv_taxes.invid = INVOICES.invid
RIGHT JOIN CLIENT ON CLIENT.clientid = payment_records.clientid
where CLIENT.class_id = :Brand_Id and INVOICES.date >= :from_date && INVOICES.date <= :to_date GROUP BY INVOICES.invid");
$stmt->bindParam(":Brand_Id", ($_POST['Brand_Id']));
$stmt->bindParam(":from_date", ($_POST['from_date']));
$stmt->bindParam(":to_date", ($_POST['to_date']));
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>
<!-- This is my script which does display the datepicker when the input boxes are clicked -->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Taxes </title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$.datepicker.setDefaults({
showOn: "button",
buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
buttonText: "Date Picker",
buttonImageOnly: true,
dateFormat: '@',
altTimeFormat: 'HH mm ss'
});
$(function() {
$("#from_date").datepicker({ dateFormat: '@' })
.change( function(){ this.value = parseInt(this.value,10)/1000; });
$("#to_date").datepicker({ dateFormat: '@' })
.change( function(){ this.value = parseInt(this.value,10)/1000; });
});
</script>
<!--{ dateFormat : '@'}-->
</body>
</html>