Foros del Web » Programando para Internet » PHP »

Problema con fgetcsv

Estas en el tema de Problema con fgetcsv en el foro de PHP en Foros del Web. Hola quiero leer un ficheros csv para importarlo a unaBD y la función getcsv me viene muy bien salvo por un tontería que ahora no ...
  #1 (permalink)  
Antiguo 23/03/2011, 11:24
 
Fecha de Ingreso: abril-2002
Mensajes: 186
Antigüedad: 22 años
Puntos: 2
Problema con fgetcsv

Hola quiero leer un ficheros csv para importarlo a unaBD y la función getcsv me viene muy bien salvo por un tontería que ahora no caigo sobre con la forma de resolverla.
Este ejemplo sacado de php.net lo que hace es que lee filas hasta que encuentra una fila vacía y lo que yo necesito es que lea un número fijo de filas (ej.: 25 dilas y tres columnas).
Lo ideal sería cambiar el bucle while por un bucle for pero no se cómo hacerlo.
Gracias de antemano.
Un saludo.



Código PHP:
  <?php
$row 
1;
if ((
$handle fopen("test.csv""r")) !== FALSE) {
    while ((
$data fgetcsv($handle1000";")) !== FALSE) {
        
$num count($data);
        echo 
"<p> $num fields in line $row: <br /></p>\n";
        
$row++;
        for (
$c=0$c $num$c++) {
            echo 
$data[$c] . "<br />\n";
        }
    }
    
fclose($handle);
}
?>
  #2 (permalink)  
Antiguo 23/03/2011, 11:32
Avatar de ArkangelGammar  
Fecha de Ingreso: enero-2011
Ubicación: <?php $persona->ubicacion('ArkangelGammar'); ?>
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 19
Busqueda Respuesta: Problema con fgetcsv

Cita:
Iniciado por victorfz Ver Mensaje
Hola quiero leer un ficheros csv para importarlo a unaBD y la función getcsv me viene muy bien salvo por un tontería que ahora no caigo sobre con la forma de resolverla.
Este ejemplo sacado de php.net lo que hace es que lee filas hasta que encuentra una fila vacía y lo que yo necesito es que lea un número fijo de filas (ej.: 25 dilas y tres columnas).
Lo ideal sería cambiar el bucle while por un bucle for pero no se cómo hacerlo.
Gracias de antemano.
Un saludo.



Código PHP:
  <?php
$row 
1;
if ((
$handle fopen("test.csv""r")) !== FALSE) {
    while ((
$data fgetcsv($handle1000";")) !== FALSE) {
        
$num count($data);
        echo 
"<p> $num fields in line $row: <br /></p>\n";
        
$row++;
        for (
$c=0$c $num$c++) {
            echo 
$data[$c] . "<br />\n";
        }
    }
    
fclose($handle);
}
?>
Lo que hace el fgetcsv es que te trae toda la fila, y vos vas a trabajando por campo en cada fila, por lo tanto, lo que podes hacer para trabajar con determinadas filas, es lo siguiente:

Código PHP:
  <?php
$row 
0;
if ((
$handle fopen("test.csv""r")) !== FALSE) {
    while ((
$data fgetcsv($handle1000";")) !== FALSE) {
//Me salteo la primer fila ya que generalmente tiene los titulo
        
if($row 0){
             
$dato1 $data[0]; //primera columna
             
$dato2 $data[1]; //segunda columna
             
$dato3 $data[24]; //vigesimoquinta columna
             //y asi sucesivamente.
         
}
        
$row $row 1//aca voy contando las filas
       
    
}
    
fclose($handle);
}
?>
[/QUOTE]

Espero haber sido de utilidad.

Saludos,
__________________
"No entiendes algo al menos que seas capaz de explicarselo a tu abuela.
Cada dia sabemos mas....y entendemos menos...."

A. Einstein - Genio mas alla de la razon.
  #3 (permalink)  
Antiguo 23/03/2011, 13:33
 
Fecha de Ingreso: abril-2002
Mensajes: 186
Antigüedad: 22 años
Puntos: 2
Respuesta: Problema con fgetcsv

Cita:
Iniciado por ArkangelGammar Ver Mensaje
Lo que hace el fgetcsv es que te trae toda la fila, y vos vas a trabajando por campo en cada fila, por lo tanto, lo que podes hacer para trabajar con determinadas filas, es lo siguiente:

Código PHP:
  <?php
$row 
0;
if ((
$handle fopen("test.csv""r")) !== FALSE) {
    while ((
$data fgetcsv($handle1000";")) !== FALSE) {
//Me salteo la primer fila ya que generalmente tiene los titulo
        
if($row 0){
             
$dato1 $data[0]; //primera columna
             
$dato2 $data[1]; //segunda columna
             
$dato3 $data[24]; //vigesimoquinta columna
             //y asi sucesivamente.
         
}
        
$row $row 1//aca voy contando las filas
       
    
}
    
fclose($handle);
}
?>
Espero haber sido de utilidad.

Saludos,[/QUOTE]







Hola gracias por responder tan rápido pero no me resuelve el problema que lo que necesito es que cuente con un número de filas predeterminado independientemente de que tengan contenido o no.
En este ejemplo solo me faltaría que el bucle while cuente hasta 25 filas en lugar de contar solo las que están con algún contenido.
Espero haberme explicado bien.
Un saludo.
Código PHP:
     while (($data fgetcsv($handle1000";")) != FALSE)//necesito que cuente siempre 25 filas
      
{
          
$num count($data);

          
$row++;
         echo=
$data[0];
      } 

Etiquetas: Ninguno
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 18:46.