Foros del Web » Programando para Internet » PHP »

Saber la cantidad de columnas de un csv

Estas en el tema de Saber la cantidad de columnas de un csv en el foro de PHP en Foros del Web. Hola buenos dias Compañeros Estoy leyendo un archivo csv.. Este es el codigo Código PHP: $file  =  fopen ( $files_dir , "r" ); while( $rows  ...
  #1 (permalink)  
Antiguo 21/08/2011, 11:11
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Saber la cantidad de columnas de un csv

Hola buenos dias

Compañeros

Estoy leyendo un archivo csv..

Este es el codigo

Código PHP:
$file fopen($files_dir,"r");
while(
$rows fgetcsv($file,8000,";")){
$cont++;
$equipo $rows[0];
$plan $rows[1];
$precio $rows[2];


}
echo 
$cont
Pero necesito saber la cantidad de columnas que tenga el archivo csv, porque no siempre van a ser las mismas columnas , entonces en el ejemplo estoy leyendo tres columnas, pero el archivo puede llegar a tener mas, entonces no me tomaria las demas columnas siguientes.

Gracias
  #2 (permalink)  
Antiguo 21/08/2011, 11:16
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

usa la función count para saber cuántos elementos tiene ese array.

Código PHP:
Ver original
  1. <?php
  2. $fila = 1;
  3. if (($gestor = fopen("test.csv", "r")) !== FALSE) {
  4.     while (($datos = fgetcsv($gestor, 1000, ",")) !== FALSE) {
  5.         $número = count($datos);
  6.         echo "<p> $número de campos en la línea $fila: <br /></p>\n";
  7.         $fila++;
  8.         for ($c=0; $c < $número; $c++) {
  9.             echo $datos[$c] . "<br />\n";
  10.         }
  11.     }
  12.     fclose($gestor);
  13. }
  14. ?>

count
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 21/08/2011, 11:39
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

hola compa

Me esta mostrando lo siguiente


20 de campos en la linea 1:


Alcatel C701A-Azul
$ 92.444
$ 78.444
$ 64.444
$ 27.444
$ 9.520
$ 9.520
$ 9.520
$ 9.520
$ 9.520


Mi duda es de donde sale el 20?

Última edición por informacionsys; 21/08/2011 a las 11:44
  #4 (permalink)  
Antiguo 21/08/2011, 11:45
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

Cuenta cada campo separado por el punto y coma. En el ejemplo que te dejé cuenta los campos de cada fila.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 21/08/2011, 11:54
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Hola Compa

Bien gracias, aunque en realidad solo son 10 campos separados por ; , no deberia mostrar 20 sino 10 ....

Gracias
  #6 (permalink)  
Antiguo 21/08/2011, 11:57
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Hola compa .

Disculpa era un problema del archivo csv.... me estaba mostrando 20 porque habian columnas vacias..

Gracias
  #7 (permalink)  
Antiguo 21/08/2011, 11:57
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

No conozco tu archivo csv como para decirle porque te está pasando esto, pero el ejemplo es bastante claro. Coloca el separador de columnas y debería funcionar. Si puedes poner una fila no estaría mal, para no estar adivinando.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 21/08/2011, 12:06
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Hola compa

El codigo quedo asi:

Código PHP:
$fila 1;
$numero 0;
if ((
$gestor fopen($files_dir"r")) !== FALSE) {
    while ((
$datos fgetcsv($gestor1000";")) !== FALSE) {
        
$numero count($datos);
     echo 
"<br><br> $numero de campos en la línea $fila:  ";
     echo 
"<br><br>";
        
$fila++;
        for (
$c=0$c $numero$c++) {
         
         echo 
$datos[$c] . " - ";
            }
    }
   
fclose($gestor);
    

quedo igual jeje....

y el resultado es este:

10 de campos en la linea 2:


Alcatel C701A-Azul - $ 92.444 - $ 78.444 - $ 64.444 - $ 27.444 - $ 9.520 - $ 9.520 - $ 9.520 - $ 9.520 - $ 9.520 -
  #9 (permalink)  
Antiguo 21/08/2011, 12:09
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

Si estás separando con guiones para que colocas punto y coma ";" tienes que usar el serparador de columna.

Esta columna va a generar conflicto C701A-Azul, no se si te sirva ese separador.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 21/08/2011, 12:11
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Hola compa

No estoy separando por guiones, si te fijas el guion es nada mas para separar las columnas pero para imprimir, igual el lee el archivo con el ; lo que te mostre anteriormente no es la fila del archivo csv

Mira la fila del archivo csv es este;


Alcatel C701A-Azul;$ 92.444;$ 78.444;$ 64.444;$ 27.444;$ 9.520;$ 9.520;$ 9.520;$ 9.520;$ 9.520
  #11 (permalink)  
Antiguo 21/08/2011, 12:17
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

A mí me cuenta 10 campos con el código que te dejé:

Cita:
10 de campos en la línea 1:

Alcatel C701A-Azul
$ 92.444
$ 78.444
$ 64.444
$ 27.444
$ 9.520
$ 9.520
$ 9.520
$ 9.520
$ 9.520
Que bueno que ya te funciona
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 21/08/2011 a las 12:25
  #12 (permalink)  
Antiguo 21/08/2011, 12:26
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Hola compa

Si ya funciona super bien...


Oiie una ayudita mas .... mira la primer fila en realidad es esta


Equipo @
Más 210 Abierto @
Sin Fin 130 Ideal Prom Abierto @
Familia Mas Ideal 320 abierto / Más 330 Abierto @
Sin Fin 180 Ideal Prom Ab/MAS 480 Abierto/Sin Fin 160 Ideal Prom Ab / Familia SinFinIdeal120PromoAb / Familia SinFin Ideal160PromAb / Familia Mas Ideal 480 abierto @
Sin Fin 225 Ideal Prom Ab / Familia SinFin Ideal225PromAb @
Sin Fin 400 Ideal Prom Ab/MAS 780 Abierto/MAS 920 Abierto/ Familia Mas Ideal 780 abierto/ Familia SinFin Ideal400PromAb/ Familia Mas Ideal 920 abierto @
Sin Fin 560 Ideal Prom Ab/MAS 1250 Abierto/ Familia SinFin Ideal560PromAb / Familia Mas Ideal 1250abierto @
Sin Fin 730 Ideal Prom Ab / Familia SinFinIdeal730PromoAb @
Sin Fin 1000 IdealProm Ab/FamiliaSinFinIdeal1000prom Ab

Esto es el resultado.. ya los separa por @ si te fijas ahi estan las 10 columnas.......

miremos la columna 4


Familia Mas Ideal 320 abierto / Más 330 Abierto

Resulta que en esta columna necesito separar las dos frases que estan divididas por el / , y que me quede como una fila ejemplo asi;

Familia Mas Ideal 320 abierto
Más 330 Abierto

Intente utilizar el explode pero me sale error:


$fila = 1;
$numero = 0;
if (($gestor = fopen($files_dir, "r")) !== FALSE) {
while (($datos = fgetcsv($gestor, 1000, ";")) !== FALSE) {
$numero = count($datos);
echo "<br><br> $numero de campos en la línea $fila: ";
echo "<br><br>";
$fila++;
for ($c=0; $c < $numero; $c++) {

$data = explode("/",$datos[$c]);

echo $data[$c] . " @ ";
}
}
fclose($gestor);

}

Gracias
  #13 (permalink)  
Antiguo 21/08/2011, 12:36
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

Código PHP:
Ver original
  1. <?php
  2. $fila = 1;
  3. if (($gestor = fopen("prueba.csv", "r")) !== FALSE) {
  4.     while (($datos = fgetcsv($gestor, 1000, "@")) !== FALSE) {
  5.         $numero = count($datos);
  6.         echo "<p> $numero de campos en la línea $fila: <br /></p>\n";
  7.         $fila++;
  8.         for ($c=0; $c < $numero; $c++) {
  9.             if ($c == 3) {
  10.                 $r = explode('/', $datos[$c]);
  11.                 echo $r[0] . '<br />';
  12.                 echo $r[1] . '<br />';
  13.             } else {
  14.             echo $datos[$c] . "<br />";
  15.             }
  16.         }
  17.     }
  18.     fclose($gestor);
  19. }
  20. ?>

Si la columna es la número 4 entonces haces que separe esa línea.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #14 (permalink)  
Antiguo 21/08/2011, 12:55
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Hola compa

Lo estoy intentando probar pero me aparece un error de sintaxis, y aparentemente esta bien el codigo , el problema es dentro del for, no me quiere aceptar los if
  #15 (permalink)  
Antiguo 21/08/2011, 13:33
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Saber la cantidad de columnas de un csv

Compa gracias por la ayuda

No se cual sea el problema, es muy raro, voy a buscar otras opciones

Muchas Gracias
  #16 (permalink)  
Antiguo 21/08/2011, 13:38
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Saber la cantidad de columnas de un csv

Si no dejas el código imposible adivinar el error
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: cantidad, columnas, 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 22:18.