Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera tenho o seguinte script para exportar uma base de dados em MYSQL para CSV
chmod("dados.csv", 0755). $fh = fopen("dados.csv","w"). fwrite($fh, ''). fclose($fh). $exportar_tabela = isset($_POST['exportar_tabela'])? $_POST['exportar_tabela']: ''. $exportar_invertida = isset($_POST['exportar_invertida'])? $_POST['exportar_invertida']: ''. if($exportar_tabela!= "") { if($_POST['ck_ativo'] == "1"){ $ativar = "WHERE ST_REGISTRO = 1". } if($_POST['ck_ativo'] == "2"){ $ativar = "WHERE ST_REGISTRO = 2". } if($_POST['ck_ativo'] == "0"){ $ativar = "". } $sql = "SELECT * FROM $exportar_tabela $ativar. ". $rs = mysql_query($sql). $dados = "". if(!$exportar_invertida) { $array_header = array(). while($record = mysql_fetch_array($rs)) { foreach ($record as $key => $value) { if(!is_numeric($key)) { if(!in_array($key, $array_header)) { $array_header[] = $key. } $dados.= preparaStringCSV($value).". ". } set_time_limit(0). } $dados.= "\r\n". } $fh =!@fopen("dados.csv","w"). if(!@fwrite($fh, implode(". ", $array_header)."\r\n".$dados)){ @fclose($fh). }else{ @fwrite($fh, implode(". ", $array_header)."\r\n".$dados). } @fclose($fh). } else { $array_header = array(). $contador = 0. $primeiro = true. while($record = mysql_fetch_array($rs)) { $contador++. $auxiliar = "". $auxiliar_fim = "". $inicio_cp = false. foreach ($record as $key => $value) { if(!is_numeric($key)) { if(strpos(strtolower($key), "cp")!== false && strpos(strtolower($key), "cp") == 0) { if(!in_array("CAMPO", $array_header)) { $array_header[] = "CAMPO". $array_header[] = "VALOR_CAMPO". } if($inicio_cp)$dados.= $auxiliar. $dados.= $key.". ".preparaStringCSV($value).". @@|\r\n". $inicio_cp = true. } else { if(!in_array($key, $array_header)) { $array_header[] = $key. } if($inicio_cp) { $auxiliar_fim.= preparaStringCSV($value).". ". } else { $dados.= preparaStringCSV($value).". ". $auxiliar.= preparaStringCSV($value).". ". } } } } $dados = str_replace("@@", $auxiliar_fim, $dados). if($contador >= 100) { $contador = 0. if($primeiro) { $fh =!@fopen("dados.csv","w"). if(!@fwrite($fh, implode(". ", $array_header)."\r\n".$dados)){ @fclose($fh). }else{ @fwrite($fh, implode(". ", $array_header)."\r\n".$dados). } $primeiro = false. $dados = "". } else { $fh =!@fopen("dados.csv","a"). //@fwrite($fh, $dados). if(!@fwrite($fh,$dados)){ @fclose($fh). }else{ @fwrite($fh, $dados). } @fclose($fh). $dados = "". } } } if($contador > 0) { if($primeiro) { $fh =!@fopen("dados.csv","w"). if(!@fwrite($fh, implode(". ", $array_header)."\r\n".$dados)){ @fclose($fh). }else{ @fwrite($fh, implode(". ", $array_header)."\r\n".$dados). } //fwrite($fh, implode(". ", $array_header)."\r\n".$dados). //fclose($fh). $primeiro = false. $dados = "". } else { $fh = fopen("dados.csv","a"). //fwrite($fh, $dados). //fclose($fh). if(!@fwrite($fh,$dados)){ @fclose($fh). }else{ @fwrite($fh, $dados). } @fclose($fh). $dados = "". } } } $mensagem_exportacao = "<a href='dados.csv' target='_blank'>Download da base $exportar_tabela</a>". O meu problema é o seguinte com até 1.500 registro ele gera o CSV normal... acima disso, me da o erro "ERROR 500 - INTERNAL SERVER ERROR", alguem sabe como eu posso solucionar isso? Não queria mudar o jeito de exportação, porque ele me gera pivoteado tambem o CSV, e isso me deu um grande trabalho para fazer. Qualquer ajuda será bem vinda. tentei colocar essa linha aonde grava if(!@fwrite($fh, implode(". ", $array_header)."\r\n".$dados)){ pra verificar se ia gravar ou nao, mas nao solucionou. Agradeço. upCarregando comentários...