Cześć, piszę skrypt który po wciśnięciu przycisku wysyła dane metodą **POST ** do skryptu **php ** a on tworzy plik z danymi Excel.
Problem jest taki że po wysłaniu danych skrypt się nie wykonuję (o ile dane w ogóle zostają wysłane).
Plik: getExcel.php
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
if(isset($_POST['excel']) && !empty($_POST['excel']))
{
require_once("database.php");
require_once("Classes/PHPExcel.php");
$PHPExcel = new PHPExcel();
$PHPExcel->getActiveSheet()->setCellValue('A1', 'Id');
$PHPExcel->getActiveSheet()->setCellValue('B1', 'First name');
$PHPExcel->getActiveSheet()->setCellValue('C1', 'Last name');
$PHPExcel->getActiveSheet()->setCellValue('D1', 'Email');
$PHPExcel->getActiveSheet()->setCellValue('E1', 'City');
$PHPExcel->getActiveSheet()->setCellValue('F1', 'Money');
$export = "%" . $_POST['excel'] . "%";
$sql = "SELECT * FROM users WHERE id LIKE :export OR first_name LIKE :export OR last_name LIKE :export OR email LIKE :export OR city LIKE :export OR money LIKE :export";
$records = $conn->prepare($sql);
$records->bindParam(':export', $export);
$records->execute();
if($records->rowCount() > 0)
{
$i = 1;
while($results = $records->fetch(PDO::FETCH_OBJ))
{
$i++;
$PHPExcel->getActiveSheet()->setCellValue('A' . $i, $results->id);
$PHPExcel->getActiveSheet()->setCellValue('B' . $i, $results->first_name);
$PHPExcel->getActiveSheet()->setCellValue('C' . $i, $results->last_name);
$PHPExcel->getActiveSheet()->setCellValue('D' . $i, $results->email);
$PHPExcel->getActiveSheet()->setCellValue('E' . $i, $results->city);
$PHPExcel->getActiveSheet()->setCellValue('F' . $i, $results->money);
}
}
$PHPExcel->getActiveSheet()->setTitle('users');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="users.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');
$objWriter->save('php://output');
}
}
else
{
header("Location: /livesearch/");
}
?>
Plik: main.js
$(document).ready(function(){
/* Search */
$("#search").keyup(function(){
var search = $(this).val();
if(search){
$.ajax({
type:'POST',
url:'search.php',
data:'search='+search,
success:function(html){
$('#tbody').html(html);
}
});
}
});
/* Export to Excel */
$("#excel").click(function(){
var value = $("#search").val();
if(value)
{
$.ajax({
type:'POST',
url:'getExcel.php',
dataType:'json',
data:{excel: value},
//data:'excel='+value,
success:function(data)
{
console.log('Success: ' + value);
},
error:function(data)
{
console.log('Error: ' + value);
}
});
}
});
});
Kod od " / Export to Excel / ".
Wydaję mi się że kod JS jest prawidłowy jednak w konsoli pojawia się **error **a plik **excel **nie jest tworzony.
Plik getExcel.php raczej jest prawidłowy ponieważ gdy wysyłam tam dane metodą **POST **"ręcznie" to wszystko działa.
<form method="POST" action="getExcel.php">
<input type="text" name="excel">
<input type="submit" value="Ok">
</form>