Foros del Web » Programando para Internet » PHP »

consultas csv

Estas en el tema de consultas csv en el foro de PHP en Foros del Web. hola mi duda es la siguiente: Es posible realizar consultar los campos de la ultima fila en un archivo csv? hasta el momento solo se ...
  #1 (permalink)  
Antiguo 24/01/2011, 10:30
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 9 meses
Puntos: 3
consultas csv

hola mi duda es la siguiente:

Es posible realizar consultar los campos de la ultima fila en un archivo csv?

hasta el momento solo se leer un archivo csv y dividirlo por columnas, se q este tipo de consultas facilmente se pueden hacer con bd pero para la aplicacion q estoy desarrollando no es muy factible, espero q me puedan ayudar con esto.

Gracias!
  #2 (permalink)  
Antiguo 24/01/2011, 10:36
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 13 años, 6 meses
Puntos: 54
Respuesta: consultas csv

Bien, parece cuestion de logica:
lee todo el archivo csv y guardas el contenido en un array digamos llamado $data
y luego en $data[count($data)-1][0] deberias recuperar el primer campo de la ultima fila
por ejemplo

solo que creo que es mejor usar base de datos
  #3 (permalink)  
Antiguo 24/01/2011, 10:59
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: consultas csv

Muchas gracias, lo intentare ejecutar
  #4 (permalink)  
Antiguo 24/01/2011, 11:17
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: consultas csv

hola ya lo probe, sin embargo me mostro todo el csv este fue el codigo que utilice:

Código HTML:
echo "<table border='1'>";
while (( $data = fgetcsv ( $fp , 1000 , ";" )) !== FALSE ) 
{
	echo "<tr>";
        $data[count($data)-1][0] ;
	foreach($data as $row)
       {
		echo "<td>$row</td>";
	}
        echo "</tr>";
}

fclose ( $fp );
No se q estare haciendo mal, espero q me puedas ayudar, seguire intentando mientras tanto , Gracias!
  #5 (permalink)  
Antiguo 24/01/2011, 12:40
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 5 meses
Puntos: 17
Información Respuesta: consultas csv

En tu caso por lo que veo el separador de campo es el ; asi que cuando llamas a la funcion lo que te devuelve es un arreglo que contiene los campos de cada registro. ahora en tu ejemplo quedaria asi:
Código PHP:
Ver original
  1. echo "<table border='1'>";
  2. while (( $data = fgetcsv ( $fp , 1000 , ";" )) !== FALSE )
  3. {
  4.     echo "<tr>";
  5.         echo "<td>$row[0]</td>";
  6.                 echo "<td>$row[1]</td>";
  7.                 echo "<td>$row[2]</td>";
  8.                 echo "<td>Y asi sucesivamente hasta \$row[n]</td>";
  9.         echo "</tr>";
  10. }
  11.  
  12. fclose ( $fp );

Para las consultas es lo mismo, recorres el archivo y haces la busqueda en cada campo del resgistro en turno. la otra opcion si solo necesitas el ultimo registro del archivo es recorrer el archivo e ir almacenando los resultado en un arreglo y al final solo irte a la ultima posicion del arreglo y obtener el registro y hacer las opreaciones que quieres con el.
__________________
Saludos.
  #6 (permalink)  
Antiguo 24/01/2011, 13:18
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: consultas csv

jaime, si es cierto lo que dices y el codigo q mostraste pero esa parte ya la tengo hecha y trabajando lo q no hacer es lo otro, ir almancenando en un array y mostrar la ultima fila, esa es la parte q no se como hacer
  #7 (permalink)  
Antiguo 24/01/2011, 13:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 5 meses
Puntos: 17
Respuesta: consultas csv

Cita:
Iniciado por felipe12357 Ver Mensaje
jaime, si es cierto lo que dices y el codigo q mostraste pero esa parte ya la tengo hecha y trabajando lo q no hacer es lo otro, ir almancenando en un array y mostrar la ultima fila, esa es la parte q no se como hacer
Código PHP:
Ver original
  1. echo "<table border='1'>";
  2. while (( $data = fgetcsv ( $fp , 1000 , ";" )) !== FALSE )
  3. {
  4.    storeRecords[] = $data;
  5. }
  6. fclose ( $fp );
  7. //ultimo registro y primer elemento del registro
  8. storeRecords[count(storeRecords)-1][0]

Esto fue lo que historiasdemaria tambien te habia comentado que hicieras, y como puedes darte cuenta era un cambio sencillo.
Como algo adicional esto esta bien y te va servir siempre que tu archivo no cresca mucho y lo comento por que no conosco proyecto que se quede corto.
__________________
Saludos.
  #8 (permalink)  
Antiguo 24/01/2011, 14:19
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: consultas csv

hola lo logre de la siguiente forma:
Código PHP:
echo "<table border='1'>";
//a distingue las filas
$a=1;
while (( 
$data fgetcsv $fp 1000 ";" )) !== FALSE ) {

 
// Mientras hay líneas que leer...

//i es la variable q nos permite distinguir cada columna
   
$i=1;
  
    foreach(
$data as $row) {

        if (
$i==1)
        {
            
$ultima[]=$row;            
        }
}
fclose $fp );
//invierto el array
rsort($ultima);
 
//con esta funcion extraigo el primer valor del array
$salida1 array_shift ($ultima); 
echo 
"el ultimo valor es. $salida<p>";
//print_r($ultima); 
Espero q le pueda servir a alguien mas, pero ahora me viene una duda

por q dices q solo servira siempre y cuando el archivo no cresca mucho?
  #9 (permalink)  
Antiguo 24/01/2011, 15:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 5 meses
Puntos: 17
Respuesta: consultas csv

Sencillo de la forma que lo haces es un acceso secuencial esto quiere decir que para llegar a un registro en particular tienes que leer n-1 elementos antes. Así que a mas registros mas tiempo va tomar ubicar el registro. Así que realiza pruebas y ve como reacciona tu solución con un incremento de registro.
__________________
Saludos.
  #10 (permalink)  
Antiguo 24/01/2011, 16:31
 
Fecha de Ingreso: junio-2010
Mensajes: 168
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: consultas csv

El codigo funciona es cierto pero comparado con la base de datos es basteante lento, Gracias por la ayuda

Etiquetas: csv
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:57.