Salve a tutti. Devo far in modo di creare un insieme di file a seconda del contenuto di una
tabella MySQL e di farli scaricare tutti in un unico file zip. Sono un neofita in php e quello che sto facendo ora non funziona poiché il file zip che scarico risulta corrotto/non valido.
Questo è il mio attuale approccio:
codice:
// 1) dammi tutti gli imei
$imeis = array();
$stmt = $pdo->prepare("SELECT imei FROM users");
if ($stmt->execute()) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$imeis[] = $row["imei"];
}
} else {
die("error getting imeis");
}
// 2) per ogni imei, prendi tutte le sue azioni e mettile in un file
$files = array();
foreach ($imeis as $imei) {
// contenuto file corrente
$current_file = "";
$stmt = $pdo->prepare("SELECT actions FROM phones_actions "
. "WHERE phones=:imei");
$stmt->bindParam(":imei", $imei, PDO::PARAM_STR);
if ($stmt->execute()) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$action = $row["actions"];
$current_file .= $action . "\r\n";
}
} else {
die("error getting imeis");
}
print_r($current_file);
$myfile = fopen($imei . ".txt", "w") or die("Unable to open file!");
fwrite($myfile, $current_file);
fclose($myfile);
$files[] = $myfile;
// reset current file
$current_file = "";
}
// create zip file
$zipname = 'users_actions.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
$zip->addFile($file);
}
$zip->close();
// download zip file
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
$pdo = null;