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. updesculpe , porém coloquei todos ini_set referente a memória e processamento no arquivo, também criei um htacess e nao solucionou o problema.
Boa tarde,
Esse erro acontece quando testas o script num servidor web ou num servidor local, tipo xampp?
Cara, o próprio mysql possui funções nativas para exportar para csv.
http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
E se vc tiver phpMyAdmin na tua hospedagem, ele tem um botão lá tb.
Em primeiro lugar, utilizar "up" é contra as regras do fórum. Somos voluntários, e como voluntários podemos, ou não, ter tempo para responder.
Em segundo lugar, você precisa ler o log de erros do servidor para saber o que acontece. Erro 500 é um "erro genérico" que o servidor lança.
De cara, são várias as razões, mas pode reduzir por funcionar com arquivos menores. Tais como: