Foros del Web » Programando para Internet » PHP »

TXT tabulado

Estas en el tema de TXT tabulado en el foro de PHP en Foros del Web. Buenas a todos!!! Aqui con un problema nuevo: necesito exportar los mails y nombre de una base de datos como txt tabulado . Buscando por ...
  #1 (permalink)  
Antiguo 26/08/2009, 08:27
 
Fecha de Ingreso: julio-2008
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 1
TXT tabulado

Buenas a todos!!!
Aqui con un problema nuevo: necesito exportar los mails y nombre de una base de datos como txt tabulado . Buscando por la red encontre la solucion. Despues, como no era exacta, la retoque un poco y quedo como queria ... excepto por lo siguiente: en vez de ponerme un dato y despues tabular, primero tabula y despues pone el primer dato.
He aqui el codigo a ver si alguien entiende un poco mas esto :
Código PHP:
// Query DB 
$select "SELECT email, nombre FROM contactos, $tabla  
         WHERE $tabla.recibe = 1 AND contactos.ID = $tabla.ID_contactos"

          
$export mysql_query($selectdb_link); 
$row_export mysql_fetch_assoc($export); 
$fields mysql_num_fields($export); 
//echo $select ; 
// Is there any data or should we call it quits? 
$num_rows mysql_num_rows($export); 
if (!
$num_rows

   echo 
"<h1 style=\"font-family: Arial, Helvetica, sans-serif\">Sorry, no data available for export.</h1>"
   exit(); 

 
// Set headers 
 
//header("Content-type: application/vnd.ms-excel"); 
header("Content-Type: application/force-download"); 
//header("Content-Disposition: attachment; filename=DataExport_". date("mdy_Gis", $time) .".csv; size=$size_in_bytes"); 
header("Content-Disposition: attachment; filename=Recipientes_"date("mdy_Gis"$time) .".txt; size=$size_in_bytes"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
 
// Process rows 
$count mysql_num_fields($export); 
/* 
for ($i = 0; $i < $fields; $i++) 

   $header .= mysql_field_name($export, $i) . "\t"; 

*/ 
if ($num_rows

   
mysql_data_seek($export,0); 

 
while(
$row mysql_fetch_row($export)) 

   
$line ''
   foreach(
$row as $value
   { 
      if ((!isset(
$value)) OR ($value == "")) 
      { 
         
$value ""
      }  
      else 
      { 
         
//$value = str_replace('"', '""', $value); 
         //$value = '"' . $value . '"' . "\t"; 
         ///TABULA ENTRE MAIL Y NOMBRE 
         
$value $value ."\t"
      } 
      
$line .= $value
   } 
   
$data .= trim($line)."\n"
}  
 
$data str_replace("\r","",$data); 
echo 
$header."\n".$data
?> 
Ojala alguien entienda que hacer con esto!!!

Muchasd gracias!!
  #2 (permalink)  
Antiguo 26/08/2009, 08:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: TXT tabulado

Lo mas probable es que la primera vez que llama la variable no tiene información o tiene algun espacio y por eso te tabula la primera vez y luego te escribe las variables. Asegurate que el value no este vacio pero con la funcion de empty()
Código php:
Ver original
  1. if ((!isset($value)) OR (empty($value)))
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 26/08/2009, 15:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: TXT tabulado

Edito: ups!!! comillas para las cadenas... corregido

Código php:
Ver original
  1. while($row = mysql_fetch_row($export))
  2. {
  3.    $data .= "'{$row[0]}'\t'{$row[1]}'\n";
  4. }  
  5.  
  6. // Si no se necesitan las comillas, quedaria asi:
  7. while($row = mysql_fetch_row($export))
  8. {
  9.    $data .= implode("\t", $row) . "\n";
  10. }
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 26/08/2009 a las 15:11
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 01:12.