Foros del Web » Programando para Internet » PHP »

formatear salida base de datos

Estas en el tema de formatear salida base de datos en el foro de PHP en Foros del Web. Buenas a todos, os explico mi "problema". Estoy creando un script para extraer de una tienda online los datos de los pedidos para importarlos al ...
  #1 (permalink)  
Antiguo 18/02/2011, 10:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 0
formatear salida base de datos

Buenas a todos, os explico mi "problema".
Estoy creando un script para extraer de una tienda online los datos de los pedidos para importarlos al programa de la agencia de transportes. Y para ello tiene que tener un formato como el de esta [URL="http://i55.tinypic.com/2zix4xd.jpg"]imagen[/URL]

En html, con tablas lo he conseguido sin problemas, pero el caso es que al copiar al portapapeles y pegarlo en el bloc de notas, ya que la importacion se tiene que hacer por archivos txt. se me descuadra todo, porque no conserva la separacion entre campos.

Lo que he hecho yo, pero no funciona ha sido medir la cadena mas larga, para el nombre con strlen y despues comparar con el strlen de las demas cadenas y obtener asi en la diferencia de caracteres, y rellenar el espacio entre campos con " ", pero de esta manera no coincide el inicio del siguiente bloque que es el de la direccion.

Alguien me puede ayudar a formatear la salida, para que quede como en la imagen, despues de copiar desde el navegador y pegar al portapapeles??
Recuerdo que cuando estudiaba c# habia una funcion llamada gotoxy, en php, no existe verdad??

Saludos y gracias!!!
  #2 (permalink)  
Antiguo 18/02/2011, 10:49
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 9 meses
Puntos: 127
Respuesta: formatear salida base de datos

bueno es facil
lees el archivo linea por linea y en la base separas por campos.

como lo veo en la imagen tienes que leer la linea asi.

fecha del 0 al 10, nombre del xx al xx

el book de notas te dice donde esta el cursor y en numero de linea.

tambien te puede ayudar para esto la funcion substr()
  #3 (permalink)  
Antiguo 18/02/2011, 10:52
Avatar de triibhals  
Fecha de Ingreso: agosto-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: formatear salida base de datos

Cuado hagas el select en php, has una tabla y alli pones todos los datos
__________________
No Deseo Suerte, Porque la Suerte es para la gente que no esta preparada, Te Deseo Exito ;D

http://www.paulpalacios.tk
  #4 (permalink)  
Antiguo 18/02/2011, 10:52
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Respuesta: formatear salida base de datos

Debes utilizar sprintf, o printf de esa manera le das un formato a cada string, te dejo un pequeño ejemplo, como puedes ver imprimimos los item del arreglo con "justificación de espacios"

Eso si, si el string ocupa mas que el tamaño definido, se imprime el string completo y nos echaría a perder el formato, por lo tanto seria bueno hacer un substr a los string a los tamaños fijos antes de imprimirlo.


Código PHP:
<?php

$articles
[] = array(
'url' => 'http://deerme.org/articles/view/23-funcion-recursiva-para-buscar-archivos',
'title' => 'Función Recursiva para buscar archivos',
'date' => '2010-12-01'
);
$articles[] = array(
'url' => 'http://deerme.org/articles/view/22-balanceado-de-cargas-con-haproxy',
'title' => 'Balanceado de cargas con HAProxy',
'date' => '2010-10-01'
);
$articles[] = array(
'url' => 'http://deerme.org/articles/view/15-sequencia-de-color-ansi-en-php',
'title' => 'Sequencia de color ANSI en PHP',
'date' => '2010-08-01'
);


foreach( 
$articles as $k => $article )
{
    
// 64 Caracteres para el Título
    
echo sprintf("%-64s"$article["title"]);
    
// 24 Caracteres para la Fecha
    
echo sprintf("%-24s"$article["date"]);
    
// 128 para la URL
    
echo sprintf("%-128s"$article["url"]);    
    echo 
"\n";

}


Saludos.

Última edición por DeeR; 18/02/2011 a las 10:59
  #5 (permalink)  
Antiguo 18/02/2011, 11:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: formatear salida base de datos

Cita:
Iniciado por enlinea777 Ver Mensaje
bueno es facil
lees el archivo linea por linea y en la base separas por campos.

como lo veo en la imagen tienes que leer la linea asi.

fecha del 0 al 10, nombre del xx al xx

el book de notas te dice donde esta el cursor y en numero de linea.

tambien te puede ayudar para esto la funcion [URL="http://enlinea.creaelicita.cl/guia/function.substr.html"]substr()[/URL]
Gracias, pero lo que yo hago es consultar en la base de datos y volcar los datos al navegador. Y desde el navegador copiar y pegar al bloc de notas.
  #6 (permalink)  
Antiguo 18/02/2011, 11:03
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: formatear salida base de datos

Cita:
Iniciado por triibhals Ver Mensaje
Cuado hagas el select en php, has una tabla y alli pones todos los datos
Si, asi lo veo perfecto en el navegador, pero cuando copio y pego en el bloc de notas no me conserva las separaciones entre columnas, me entiendes??
  #7 (permalink)  
Antiguo 18/02/2011, 11:06
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: formatear salida base de datos

Cita:
Iniciado por DeeR Ver Mensaje
Debes utilizar sprintf, o printf de esa manera le das un formato a cada string, te dejo un pequeño ejemplo, como puedes ver imprimimos los item del arreglo con "justificación de espacios"

Eso si, si el string ocupa mas que el tamaño definido, se imprime el string completo y nos echaría a perder el formato, por lo tanto seria bueno hacer un substr a los string a los tamaños fijos antes de imprimirlo.


Código PHP:
<?php

$articles
[] = array(
'url' => 'http://deerme.org/articles/view/23-funcion-recursiva-para-buscar-archivos',
'title' => 'Función Recursiva para buscar archivos',
'date' => '2010-12-01'
);
$articles[] = array(
'url' => 'http://deerme.org/articles/view/22-balanceado-de-cargas-con-haproxy',
'title' => 'Balanceado de cargas con HAProxy',
'date' => '2010-10-01'
);
$articles[] = array(
'url' => 'http://deerme.org/articles/view/15-sequencia-de-color-ansi-en-php',
'title' => 'Sequencia de color ANSI en PHP',
'date' => '2010-08-01'
);


foreach( 
$articles as $k => $article )
{
    
// 64 Caracteres para el Título
    
echo sprintf("%-64s"$article["title"]);
    
// 24 Caracteres para la Fecha
    
echo sprintf("%-24s"$article["date"]);
    
// 128 para la URL
    
echo sprintf("%-128s"$article["url"]);    
    echo 
"\n";

}


Saludos.
Muchas gracias DeeR, pero he probado tu codigo en mi servidor local, y no me sale formateado como en tu imagen, sabes a que puede ser debido??
  #8 (permalink)  
Antiguo 18/02/2011, 11:17
Avatar de triibhals  
Fecha de Ingreso: agosto-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: formatear salida base de datos

Cita:
Iniciado por hhcj Ver Mensaje
Si, asi lo veo perfecto en el navegador, pero cuando copio y pego en el bloc de notas no me conserva las separaciones entre columnas, me entiendes??
Puesta muy cabron que agarre formato en un block de notas, ya que el texto alli no tiene formato de tabulaciones correctamente
__________________
No Deseo Suerte, Porque la Suerte es para la gente que no esta preparada, Te Deseo Exito ;D

http://www.paulpalacios.tk
  #9 (permalink)  
Antiguo 18/02/2011, 12:05
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: formatear salida base de datos

Ahora mismo estoy probando str_pad --> http://www.php-es.com/function.str-pad.html, pero no me funciona.
Puede ser problema del navegador, o del servidor???
Porque en el link, que he puesto funciona perfectamente...

Muchas gracias!!
  #10 (permalink)  
Antiguo 18/02/2011, 12:39
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Respuesta: formatear salida base de datos

Cita:
Iniciado por hhcj Ver Mensaje
Muchas gracias DeeR, pero he probado tu codigo en mi servidor local, y no me sale formateado como en tu imagen, sabes a que puede ser debido??
Como dice triibhals, es un problema de visualización, por defecto tu navegador no va a mostrar los saltos de lineas ya que está esperando "código html", una alternativa es agregar los header que el contenido que estás generando el texto plano o agregar el tag <pre> al principio del script (tambien puedes ver el código fuente y veras que el texto está formateado)

Agrega esto al principio
Código PHP:
echo "<pre>" 
o

Código PHP:
header("Content-Type: plain/text"); 
  #11 (permalink)  
Antiguo 18/02/2011, 14:19
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: formatear salida base de datos

Cita:
Iniciado por DeeR Ver Mensaje
Como dice triibhals, es un problema de visualización, por defecto tu navegador no va a mostrar los saltos de lineas ya que está esperando "código html", una alternativa es agregar los header que el contenido que estás generando el texto plano o agregar el tag <pre> al principio del script (tambien puedes ver el código fuente y veras que el texto está formateado)

Agrega esto al principio
Código PHP:
echo "<pre>" 
o

Código PHP:
header("Content-Type: plain/text"); 
pfffff mil gracias Deer ,
ya sale todo perfecto, me estaba desesperando...
Mil gracias otra vez!!

Etiquetas: formatear, salida
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 23:26.