Ciao,

ho questo script che interroga il DB e genera un .xls funzionante sotto php5 ma che va in loop in ambiente php7 (file generato che continua a aumentare di dimensione senza mai scaricarsi - download infinito)

Temo sia dovuto a come php7 interpreta l'array.... lo posto per intero:



Codice PHP:
  function cleanData(&$str)
  {
    
$str preg_replace("/\t/""\\t"$str);
    
$str preg_replace("/\r?\n/""\\n"$str);
    if(
strstr($str'"')) $str '"' str_replace('"''""'$str) . '"';
  }

  
// filename for download
  
$filename "foglio_presenze" date('Ymd') . ".xls";


 
header("Content-Disposition: attachment; filename=\"$filename\"");
 
header("Content-Type: application/vnd.ms-excel");


$flag false;

$seminarioID $_GET['recordID'];

mysqli_select_db($tao_conn$database_tao_conn);

$result mysqli_query($tao_conn,"SELECT seminari.titolo, seminari.datainizio, seminari.datafine, iscrizioni.dataritiro, utenti.cognome, utenti.nome, corsi.titoloCorsi, null as mattina1, null as pomeriggio1, null as mattina2, null as pomeriggio2
FROM iscrizioni
LEFT JOIN seminari ON 
$seminarioID = seminari.idseminari
LEFT JOIN corsi_has_seminari ON iscrizioni.corsi_idcorsi = corsi_has_seminari.corsi_idcorsi 
LEFT JOIN utenti ON iscrizioni.utenti_idutenti = utenti.idutenti 
LEFT JOIN corsi ON iscrizioni.corsi_idcorsi = corsi.idcorsi
WHERE iscrizioni.dataritiro IS NULL AND iscrizioni.seminari_idseminari = 
$seminarioID OR iscrizioni.dataritiro IS NULL AND corsi_has_seminari.seminari_idseminari = $seminarioID 
ORDER BY corsi.titoloCorsi, utenti.cognome"
) or die('Query failed!');
  while(
false !== ($row =  mysqli_fetch_assoc($result))) {
    if(!
$flag) { 
      echo 
"Titolo seminario: " .$row['titolo']."\r\n""\r\n";
      echo 
"Data inizio: " .$row['datainizio']."\r\n";
      echo 
"Data fine: ".$row['datafine']."\r\n""\r\n"
     
// display field/column names as first row
     
$keys array_keys($row);
     
array_shift($keys);
     
array_shift($keys);
     
array_shift($keys);
     
array_shift($keys);
      echo 
implode("\t"$keys ) . "\r\n";
      
$flag true;
    }
    unset(
$row['titolo']);
    unset(
$row['datainizio']);
    unset(
$row['datafine']);
    unset(
$row['dataritiro']);
    
array_walk($row__NAMESPACE__ '\cleanData');
    echo 
implode("\t"array_values($row)) . "\r\n";
  }
  exit;