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;

Rispondi quotando
