Preciso criar um arquivo, estou preso em um loop...

  • Autor Autor xcodex
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
X

xcodex

Hola!, primero que nada quiero pedir disculpas ya últimamente estoy preguntando mucho, pero los tiempos me corren jaja.

La cuestión..

Tengo un script que genera un reporte cvs:
PHP:
<?php
    require "include/bd-connect.php";
    $pdo = bd_connect();

    //Header
    header("Content-Type:text/csv; charset=utf-8");
    header("Content-Disposition: attachment; filename='report.cvs'");

    //Salida de archivo
    $exit = fopen("php://output", "w");

    //Encabezados:
    fputcsv($exit, array('id', 'Title', 'Author'));

    //Consulta para crear reporte:
    $sql_libros = $pdo->prepare("SELECT id,title,author FROM books WHERE active = 1 ORDER BY id ASC");
    $sql_libros->execute();
    $resultado_libros = $sql_libros->fetchAll();
    foreach ($resultado_libros as $row) {
        fputcsv($exit, array($row["id"],
        $row["title"],
        $row["author"]));
    }

    fclose($exit);
?>

El reporte se genera, y me aparece la opción para descargarlo. Todo genial hasta aquí.
Lo que me gustaría hacer es que dicho reporte se copie a una carpeta del servidor, probé con copy($exit, ruta_destino) pero nada sucede.
¿Alguna sugerencia?.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
amigo es un foro nadie deberia molestarse porque preguntes, asi que no tienes porque pedir diisculpas
 
Segun vi, el fichero de salida no es $exit es:

report.cvs

Entonces ese es el que quiere copiar, no?

seria

PHP:
copy("report.cvs", ruta_destino);
 
Segun vi, el fichero de salida no es $exit es:

report.cvs

Entonces ese es el que quiere copiar, no?

seria

PHP:
copy("report.cvs", ruta_destino);

Intenté, pero me aparece: copy(report.cvs): failed to open stream: No such file or director.
Por lo que entiendo no se está creando el archivo report.cvs en el servidor, solo lo descarga directamente. 🙁🙁
 
Intenté, pero me aparece: copy(report.cvs): failed to open stream: No such file or director.
Por lo que entiendo no se está creando el archivo report.cvs en el servidor. 🙁🙁
Pones que se está creando sin problemas, lo que dice ahi es que no encuentra el archivo, lo tienes que crear no solo hacerlo para descargar.

Tienes que guardarlo en algún lugar primero y después copiarlo

con fwrite

Saludos
 
agrega dos fopen, uno que creará la copia en el servidor, y el otro como lo tienes tu. luego llama a los dos en el foreach.

Inserir CODE, HTML ou PHP:
<?php
$exit1 = fopen('carpeta/fichero.csv', 'w');
$exit2 = fopen("php://output", "w");

foreach ($resultado_libros as $row) {
        fputcsv($exit1, array($row["id"],$row["title"],$row["author"]));
        fputcsv($exit2, array($row["id"],$row["title"],$row["author"]));
    }
?>
 
agrega dos fopen, uno que creará la copia en el servidor, y el otro como lo tienes tu. luego llama a los dos en el foreach.

Inserir CODE, HTML ou PHP:
<?php
$exit1 = fopen('carpeta/fichero.csv', 'w');
$exit2 = fopen("php://output", "w");

foreach ($resultado_libros as $row) {
        fputcsv($exit1, array($row["id"],$row["title"],$row["author"]));
        fputcsv($exit2, array($row["id"],$row["title"],$row["author"]));
    }
?>
¡Funcionó!, muchísimas gracias a todos 😎
 
Voltar
Topo