Foros del Web » Programando para Internet » PHP »

es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Estas en el tema de es posible pasar todo lo que imprime en pantalla un php+sql en un txt? en el foro de PHP en Foros del Web. Saludos estoy haciendo unas consultas en mysql que con php consigo imprimir por pantalla pero me gustaria que esto que aparece, se me descargara en ...
  #1 (permalink)  
Antiguo 15/05/2014, 11:05
 
Fecha de Ingreso: marzo-2013
Mensajes: 36
Antigüedad: 11 años, 1 mes
Puntos: 1
es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Saludos estoy haciendo unas consultas en mysql que con php consigo imprimir por pantalla pero me gustaria que esto que aparece, se me descargara en un .txt

Es posible hacerlo de golpe o se tiene que ir linea a linea?

gracias!

Código PHP:
Ver original
  1. <?php
  2. include("conectar_db.php");
  3.  
  4.  
  5.     echo "<br>";
  6.  
  7.     $sql=mysql_query("SELECT COUNT(*) FROM usuaris WHERE carrec='2'");
  8.     $espai= " ";
  9.     echo "Total alumnes: $espai";
  10.     echo mysql_result($sql, 0);
  11.        
  12.  
  13.     echo "<br>"
  14. ;
  15.     $sqlmitjana=mysql_query("SELECT AVG(nota) FROM notes");
  16.     echo "Mitjana nota: $espai";
  17.         echo mysql_result($sqlmitjana, 0);
  18.  
  19.     echo "<br>";
  20.     echo "LLISTAT ALUMNES ";   
  21.     echo "<br>";
  22.     $institut="INSTITUTABC";
  23.     $comapunt=";";
  24.     $enter="<br>";
  25.  
  26.         $sql3="SELECT DNI,nom,cognom,telefon FROM usuaris WHERE carrec='2'"; // consulta verificada, funciona ok!          
  27.                    
  28.                     $result = mysql_query($sql3);
  29.                     while($row = mysql_fetch_array($result)){
  30.                         echo "<tr>\n";
  31.                         $consulta = $institut.$comapunt.$row['DNI'].$comapunt.$row['nom'].$comapunt.$row['cognom'].$comapunt.$row['telefon'].$comapunt.$enter;
  32.  
  33.                         echo "$consulta";
  34.                     echo "</tr>\n";
  35.                     }
  36.  
  37. ?>
  #2 (permalink)  
Antiguo 15/05/2014, 11:13
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

no haga los echos directamente va armando un string con todo lo que muestra en pantalla.

Código PHP:
$var "";
$var .= "le pego esto";
$var .= "le pego esto otro";
echo 
$var
luego hace una funcion que guarde en el archivo de texto la variable $var y listo.
  #3 (permalink)  
Antiguo 15/05/2014, 11:25
 
Fecha de Ingreso: marzo-2013
Mensajes: 36
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Hola helacer, perdona pero no entiendo a lo que te refieres.

Código PHP:
Ver original
  1. $var = "    echo "Total alumnes: $espai";
  2.     echo mysql_result($sql, 0);";
  3.         $var .= "   echo "Mitjana nota: $espai";
  4.         echo mysql_result($sqlmitjana, 0);";
  5.         $var .= "$consulta";
  6.         $var .= "$var";
  7.         echo $var;
  8.  
  9. $archivo = fopen('archivo.txt','a');
  10. fputs($archivo,$var);
  11. fclose($archivo);


y luego al final hago que esta última variable sea el total (de todo lo que quiere imprmir) para imprimir?

gracias
  #4 (permalink)  
Antiguo 15/05/2014, 11:35
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Si la idea es esa pero los esta haciendo mal

Ejemplo.

No es esto:
Código PHP:
$var .= "   echo "Mitjana nota$espai"; 
Sino esto:
Código PHP:
$var .= "Mitjana nota: ".$espai
La idea es ir guardando todo en una variable y ya cuando tenga todo en ella hay si hacer el echo.
  #5 (permalink)  
Antiguo 15/05/2014, 11:55
 
Fecha de Ingreso: marzo-2013
Mensajes: 36
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

hola, imprimiendolo todo en una sola variable
Código PHP:
Ver original
  1. $var = "";
  2.     $var = $enter;
  3.     $var .= "Total alumnes:".$espai.$sql;
  4.     $var = $enter;
  5.     $var .= "Mitjana nota:".$espai.$sqlmitjana;
  6.     $var = $enter;
  7.     $var .= $consulta;
  8.     echo $var;

no consigo ver el total de alumnos ni la media de estos, solo Resouce id5 y 5 y la última consulta solo me coge unos de los registros de los tres que hay.

esto es lo que me imrpime por pantalla:

Total alumnes: 3
Mitjana nota: 7.0714
LLISTAT ALUMNES
INSTITUTABC;12345678A;Sandra;Martinez Navarro;666555444;
INSTITUTABC;46507657R;Pere;Juan Sanchez;933832500;
INSTITUTABC;87654321B;Marta;Garcia Perez;987654987;

Total alumnes: Resource id #5Mitjana nota: Resource id #6INSTITUTABC;87654321B;Marta;Garcia Perez;987654987;

por que al pasarlo a una unica variable hay tantos cambios?
gracias
  #6 (permalink)  
Antiguo 15/05/2014, 12:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Código PHP:
Ver original
  1. <?php
  2.  
  3. /*
  4.     @author: Pablo Bozzolo (2014)
  5. */
  6. Class View
  7. {
  8.     static $_out=array();
  9.    
  10.     static public function  put($s)
  11.     {
  12.         self::$_out [] = $s;
  13.     }
  14.    
  15.     static public function get()
  16.     {
  17.         return implode('<br/>',self::$_out);
  18.     }
  19.    
  20.     static public function get_printable()
  21.     {
  22.         return implode("\r\n",self::$_out);
  23.     }
  24. }
  25.  
  26.  
  27. View::put('Hola');
  28. View::put('Esta es otra linea');
  29.  
  30. echo View::get();
  31.  
  32. // tambien ...
  33. file_puts_contents('archivo.txt',View::get_printable());

Podria mejorarse mucho... pero ahi tienes para empezar.. segun al metodo que llames te sale como para grabar en un archivo de texto o imprimirla o sacarla por pantalla
__________________
Salu2!
  #7 (permalink)  
Antiguo 15/05/2014, 12:11
 
Fecha de Ingreso: marzo-2013
Mensajes: 36
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Hola Italico, grcias por contestar

con el siguiente codigo:

Código PHP:
Ver original
  1. <?php
  2. include("conectar_db.php");
  3.  
  4.  
  5.     echo "<br>";
  6.  
  7.     $sql=mysql_query("SELECT COUNT(*) FROM usuaris WHERE carrec='2'");
  8.     $espai= " ";
  9.     echo "Total alumnes: $espai";
  10.     echo mysql_result($sql, 0);
  11.        
  12.  
  13.     echo "<br>"
  14. ;
  15.     $sqlmitjana=mysql_query("SELECT AVG(nota) FROM notes");
  16.     echo "Mitjana nota: $espai";
  17.         echo mysql_result($sqlmitjana, 0);
  18.  
  19.     echo "<br>";
  20.     echo "LLISTAT ALUMNES ";   
  21.     echo "<br>";
  22.     $institut="INSTITUTABC";
  23.     $comapunt=";";
  24.     $enter="<br>";
  25.  
  26.         $sql3="SELECT DNI,nom,cognom,telefon FROM usuaris WHERE carrec='2'"; // consulta verificada, funciona ok!          
  27.                    
  28.                     $result = mysql_query($sql3);
  29.                     while($row = mysql_fetch_array($result)){
  30.                         echo "<tr>\n";
  31.                         $consulta = $institut.$comapunt.$row['DNI'].$comapunt.$row['nom'].$comapunt.$row['cognom'].$comapunt.$row['telefon'].$comapunt.$enter;
  32.  
  33.                         echo "$consulta";
  34.                     echo "</tr>\n";
  35.                     }
  36.  
  37.  
  38.     //$var = "";
  39.     //$var = $enter;
  40.     //$var .= "Total alumnes:".$espai.$sql;
  41.  
  42.     //$var .= "Mitjana nota:".$espai.$sqlmitjana;
  43.  
  44.     //$var .= $consulta;
  45.     //echo $var;  
  46. Class View
  47. {
  48.     static $_out=array();
  49.    
  50.     static public function  put($s)
  51.     {
  52.         self::$_out [] = $s;
  53.     }
  54.    
  55.     static public function get()
  56.     {
  57.         return implode('<br/>',self::$_out);
  58.     }
  59.    
  60.     static public function get_printable()
  61.     {
  62.         return implode("\r\n",self::$_out);
  63.     }
  64. }
  65.  
  66.     View::put($enter);
  67.     View::put("Total alumnes:".$espai.$sql);
  68.     View::put($enter);
  69.     View::put("Mitjana nota:".$espai.$sqlmitjana);
  70.     View::put($consulta);
  71.  
  72.  
  73.     echo View::get();
  74.     echo View::get_printable();
  75.  
  76.  
  77.  
  78. ?>


Resultdo por pantalla:


Total alumnes: 3
Mitjana nota: 7.0714
LLISTAT ALUMNES
INSTITUTABC;12345678A;Sandra;Martinez Navarro;666555444;
INSTITUTABC;46507657R;Pere;Juan Sanchez;933832500;
INSTITUTABC;87654321B;Marta;Garcia Perez;987654987;


Total alumnes: Resource id #5


Mitjana nota: Resource id #6
INSTITUTABC;87654321B;Marta;Garcia Perez;987654987;

Total alumnes: Resource id #5
Mitjana nota: Resource id #6 INSTITUTABC;87654321B;Marta;Garcia Perez;987654987;

Aparecen de nuevo os resources y el ultimo array de la consulta no aparece completo

gracias
  #8 (permalink)  
Antiguo 15/05/2014, 12:17
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

No es cortar y pegar... primero, la clase View la debes colocar en archivo aparte e incluirla antes de usarla , ya no hagas ni un echo mas.. todo envialo a la clase como ya sabes.

Segundo y el porque del error, estas intentando "imprimir" un recurso, y en vez de eso debes ANTES obtener los registros:

mysql_fetch_assoc()
mysql_fetch_array()
o similar
__________________
Salu2!
  #9 (permalink)  
Antiguo 15/05/2014, 12:29
 
Fecha de Ingreso: marzo-2013
Mensajes: 36
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

si pero los registros no los he sacado ya anterormente con los echos?
bueno vamos alla haber que tal, gracias!
  #10 (permalink)  
Antiguo 15/05/2014, 12:39
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

PHP imprime cosas "en pantalla"?

Usa las funciones ob_start() y ob_get_clean()
  #11 (permalink)  
Antiguo 15/05/2014, 12:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: es posible pasar todo lo que imprime en pantalla un php+sql en un txt?

Cita:
Iniciado por dashtrash Ver Mensaje
PHP imprime cosas "en pantalla"?

Usa las funciones ob_start() y ob_get_clean()
Pues si... tambien lo habia pensado..

Código PHP:
Ver original
  1. echo 'La vida es bella</p>';
  2. $out = ob_get_contents();
  3. file_put_contents($archivo,$out,'a+');

Luego si lo quieres como TEXTO, tocaria quitarle los tags... para lo que esta strip_tags()

No se... me parece mas limpio lo que comente en lugar de ensuciar el codigo con esas funciones de manejo de buffer, ademas si usa algun framework tiene alguna clase View que puede extender y hacer lo mismo.
__________________
Salu2!

Etiquetas: imprime, mysql, pantalla, posible, select, sql, todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:14.