Foros del Web » Programando para Internet » PHP »

Problemas con fgetcsv.

Estas en el tema de Problemas con fgetcsv. en el foro de PHP en Foros del Web. Hola a todos, el problema que tengo es el siguiente, ojala me puedan ayudar. Tengo que subir un archivo en csv y abrirlo y leerlo ...
  #1 (permalink)  
Antiguo 28/12/2009, 14:55
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Problemas con fgetcsv.

Hola a todos, el problema que tengo es el siguiente, ojala me puedan ayudar. Tengo que subir un archivo en csv y abrirlo y leerlo con php, eso ya lo puedo hacer, pero necesito obtener de este archivo csv unos datos en especifico, pero no se como situarme o mas bien como obtener este valor del archivo, mi codigo es el siguiente:

<?php
$fp = fopen ( "prueba2.csv" , "r" );
while (( $data = fgetcsv ( $fp , 1000 , "," )) !== FALSE ) { // Mientras hay líneas que leer...

$i = 0;
foreach($data as $row) {

echo "Campo $i: $row<br>n"; // Muestra todos los campos de la fila actual
$i++ ;

}

echo "<br><br>nn";

}
fclose ( $fp );
?>

y de aqui necesito el valor de una celda en especifico, pero no se como guardar ese valor en una variable, el problema es que cuando imprimo un valor de $row, no se como imprimir el que quiero. De ante mano gracias.
  #2 (permalink)  
Antiguo 28/12/2009, 14:59
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: Problemas con fgetcsv.

Te sugiero que veas como publica las llaves el $data var_dump($data), eso lo colocas dentro del while. Luego con un if, colocas una condición que diga si es el $data["aqui_va_el_nombre_de_la_llave"], entonces, vas declarando en la variable lo que deseas.
__________________
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 28/12/2009, 15:02
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con fgetcsv.

disculpa abimaelrc, pero no entiendo como hacer lo que me dices, no soy muy experimentado con el php, me podrias explicar como hacerlo? disculpa la molestia
  #4 (permalink)  
Antiguo 28/12/2009, 15:03
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: Problemas con fgetcsv.

Primero haz esto dentro del while
Código PHP:
Ver original
  1. var_dump($data);
Luego nos dejas saber que te trae.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 28/12/2009, 15:09
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con fgetcsv.

me aparece lo siguiente:

array(1) { [0]=> string(129) "sergio;reyes;sanchez;josue;2;3;4;5;6;7;8;9;10;11; 12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28 ;29;30;31;32;33;34;35;36;37;38" }

de aqui sergio reyes sanchez josue y los demas numeros son los datos que estan en mi primera fila del archivo csv, pero abajo hay varias filas mas, de las cuales de algunas necesito ir sacando datos en especifico y meterlos en variables para trabajar con ellos, espero que esto sirva abimaelrc, gracias.
  #6 (permalink)  
Antiguo 28/12/2009, 15:18
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con fgetcsv.

me acabo de dar cuenta que abajo de lo que de la anterios cadena que puso, aparcecen mas cadenas con los demas datos y al principio de cada cadena me aparce esto:

array(){[0]=>string()

dentro de los primeros parentesis va un consecutivo y dentro del segundo parentecis me aparece un numero que parace que es el nuemro de elemento de la cadena o algo asi, espro sirva de algo
  #7 (permalink)  
Antiguo 28/12/2009, 15:23
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: Problemas con fgetcsv.

Tienes un problema el delimitador que estas usando es el semicolon ;. Vas a tener que decirle al fgetcsv que delimitador estas usando. Ese es el tercer parametro del fgetcsv. Declara el delimitador y haz lo que te dije del var_dump
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 28/12/2009, 15:27
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con fgetcsv.

en ese parametro tiene una coma, pero si pongo un punto y coma me aparce otra cosa, te lo muestro :

array(41) { [0]=> string(6) "sergio" [1]=> string(5) "reyes" [2]=> string(7) "sanchez" [3]=> string(5) "josue" [4]=> string(1) "2" [5]=> string(1) "3" [6]=> string(1) "4" [7]=> string(1) "5" [8]=> string(1) "6" [9]=> string(1) "7" [10]=> string(1) "8" [11]=> string(1) "9" [12]=> string(2) "10" [13]=> string(2) "11" [14]=> string(2) "12" [15]=> string(2) "13" [16]=> string(2) "14" [17]=> string(2) "15" [18]=> string(2) "16" [19]=> string(2) "17" [20]=> string(2) "18" [21]=> string(2) "19" [22]=> string(2) "20" [23]=> string(2) "21" [24]=> string(2) "22" [25]=> string(2) "23" [26]=> string(2) "24" [27]=> string(2) "25" [28]=> string(2) "26" [29]=> string(2) "27" [30]=> string(2) "28" [31]=> string(2) "29" [32]=> string(2) "30" [33]=> string(2) "31" [34]=> string(2) "32" [35]=> string(2) "33" [36]=> string(2) "34" [37]=> string(2) "35" [38]=> string(2) "36" [39]=> string(2) "37" [40]=> string(2) "38" } Campo 0: sergio
Campo 1: reyes
Campo 2: sanchez
Campo 3: josue
Campo 4: 2
Campo 5: 3
Campo 6: 4
Campo 7: 5
Campo 8: 6
Campo 9: 7
Campo 10: 8
Campo 11: 9
Campo 12: 10
Campo 13: 11
Campo 14: 12
Campo 15: 13
Campo 16: 14
Campo 17: 15
Campo 18: 16
Campo 19: 17
Campo 20: 18
Campo 21: 19
Campo 22: 20
Campo 23: 21
Campo 24: 22
Campo 25: 23
Campo 26: 24
Campo 27: 25
Campo 28: 26
Campo 29: 27
Campo 30: 28
Campo 31: 29
Campo 32: 30
Campo 33: 31
Campo 34: 32
Campo 35: 33
Campo 36: 34
Campo 37: 35
Campo 38: 36
Campo 39: 37
Campo 40: 38


array(41) { [0]=> string(8) "shujeyli" [1]=> string(8) "santiago" [2]=> string(5) "duran" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" [6]=> string(55) "PROMOTORA INTERNACIONAL DE PESAS Y MEDIDAS S.A. DE C.V." [7]=> string(0) "" [8]=> string(0) "" [9]=> string(0) "" [10]=> string(0) "" [11]=> string(0) "" [12]=> string(0) "" [13]=> string(0) "" [14]=> string(0) "" [15]=> string(0) "" [16]=> string(0) "" [17]=> string(0) "" [18]=> string(0) "" [19]=> string(0) "" [20]=> string(0) "" [21]=> string(0) "" [22]=> string(0) "" [23]=> string(0) "" [24]=> string(0) "" [25]=> string(0) "" [26]=> string(0) "" [27]=> string(0) "" [28]=> string(0) "" [29]=> string(0) "" [30]=> string(0) "" [31]=> string(0) "" [32]=> string(0) "" [33]=> string(11) "FACTURA No." [34]=> string(0) "" [35]=> string(3) "245" [36]=> string(0) "" [37]=> string(0) "" [38]=> string(0) "" [39]=> string(0) "" [40]=> string(0) "" } Campo 0: shujeyli
Campo 1: santiago
Campo 2: duran
Campo 3:
Campo 4:
Campo 5:
Campo 6: PROMOTORA INTERNACIONAL DE PESAS Y MEDIDAS S.A. DE C.V.
Campo 7:
Campo 8:
Campo 9:
Campo 10:
Campo 11:
Campo 12:
Campo 13:
Campo 14:
Campo 15:
Campo 16:
Campo 17:
Campo 18:
Campo 19:
Campo 20:
Campo 21:
Campo 22:
Campo 23:
Campo 24:
Campo 25:
Campo 26:
Campo 27:
Campo 28:
Campo 29:
Campo 30:
Campo 31:
Campo 32:
Campo 33: FACTURA No.
Campo 34:
Campo 35: 245
Campo 36:
Campo 37:
Campo 38:
Campo 39:
Campo 40:
y asi como estos dos paracen varios, uno por cada fila que tengo en el archivo, espero me puedas seguir ayudando
  #9 (permalink)  
Antiguo 28/12/2009, 15:29
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con fgetcsv.

como se cual es el delimitador que usa el archivo csv?
  #10 (permalink)  
Antiguo 28/12/2009, 15:38
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: Problemas con fgetcsv.

Se da a ver facil, si te fijas en la primera vez que enviaste salio esto
Código PHP:
Ver original
  1. array(1) { [0]=> string(129) "sergio;reyes;sanchez;josue;2;3;4;5;6;7;8;9;10;11; 12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28 ;29;30;31;32;33;34;35;36;37;38" }
Con ello pude ver que el delimitador es el ; por eso te sugerí hacerlo de esa forma, ahora solo tienes que indicar cual parte del array deseas ver, por ejemplo, usando el segundo array que mencionaste
Código PHP:
Ver original
  1. array(41) { [0]=> string(6) "sergio" [1]=> string(5) "reyes" [2]=> string(7) "sanchez" [3]=> string(5) "josue" [4]=> string(1) "2" [5]=> string(1) "3" [6]=> string(1) "4" [7]=> string(1) "5" [8]=> string(1) "6" [9]=> string(1) "7" [10]=> string(1) "8" [11]=> string(1) "9" [12]=> string(2) "10" [13]=> string(2) "11" [14]=> string(2) "12" [15]=> string(2) "13" [16]=> string(2) "14" [17]=> string(2) "15" [18]=> string(2) "16" [19]=> string(2) "17" [20]=> string(2) "18" [21]=> string(2) "19" [22]=> string(2) "20" [23]=> string(2) "21" [24]=> string(2) "22" [25]=> string(2) "23" [26]=> string(2) "24" [27]=> string(2) "25" [28]=> string(2) "26" [29]=> string(2) "27" [30]=> string(2) "28" [31]=> string(2) "29" [32]=> string(2) "30" [33]=> string(2) "31" [34]=> string(2) "32" [35]=> string(2) "33" [36]=> string(2) "34" [37]=> string(2) "35" [38]=> string(2) "36" [39]=> string(2) "37" [40]=> string(2) "38" }

Solo tienes que indicar algo así
Código PHP:
Ver original
  1. while (( $data = fgetcsv ( $fp , 1000 , ";" )) !== FALSE ) {
  2.   $variable = $data[0];
  3.   $variable2 = $data[1];
  4.   $variable3 = $data[5];
  5.   //etc.etc.etc.
  6. }
Pero acuerdate que cada vez que corre el ciclo, se re-escribe la variable y toma el último valor. Así que mira bien como trabajas con esa variable.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 28/12/2009, 15:49
 
Fecha de Ingreso: diciembre-2009
Mensajes: 128
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problemas con fgetcsv.

ya lo probe y me funciona, pero el problema es cuandop quiero tomar datos que estan en otra fila del archivo, porque solo puedo tomar hasta le ultimo dato de la primera fila con $variable = $data[40]; pero ahi termina esa fila, el primer dato de la sighuiente fila es el que ya no se como timarlo, te pido de favor me ayudes con esto porque he batallado todo el dia, de antemano gracias y aprecio mucho todo esto
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 15:12.