Foros del Web » Programando para Internet » PHP »

Verificar estructura de CSV. ¿se podra?.

Estas en el tema de Verificar estructura de CSV. ¿se podra?. en el foro de PHP en Foros del Web. Bueno chicos... les cuento necesito analizar un csv que es adjuntado en un FORM... gracias a la ayuda del foro pude verificar el CSV del ...
  #1 (permalink)  
Antiguo 07/12/2010, 14:24
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 11 meses
Puntos: 89
Verificar estructura de CSV. ¿se podra?.

Bueno chicos... les cuento necesito analizar un csv que es adjuntado en un FORM...
gracias a la ayuda del foro pude verificar el CSV del lado servidor..
pero ahora lo que necesito es ver la estructura del CSV...
cada programa guarda los CSV con un formato....

yo estoy usando este codigo actualmente para meter el CSV a MySql...


[HIGHLIGHT="PHP"]
<?php
require("config.php");
$row = 1;
$fp = fopen ("uploads/prueba.csv","r");
while ($data = fgetcsv ($fp, 1000, ";"))
{
$num = count ($data);
print " <br>";
$row++;
echo "$row- ".$data[0].$data[1];
$insertar="INSERT INTO outbox (number,text,phone) VALUES ('$data[0]','$data[1]','1')";
mysql_query($insertar);
}
fclose ($fp);
?> [HIGHLIGHT]

como ven el formato del CSV tiene que ser:
Código:
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx ; xxxxxxxxxxxxxxxxxxxx
Puedo de alguna manera corroborar que este sea el formato?
que la separacion de campos en el csv sea " ; " y el salto de linea sin simbolo.

Gracias por tomarce un min en los problemas de otros.
__________________
Mono programando!
twitter.com/eguimariano
  #2 (permalink)  
Antiguo 07/12/2010, 14:31
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 9 años, 1 mes
Puntos: 13
Respuesta: Verificar estructura de CSV. ¿se podra?.

Primero leé la documentación de la función fgetcsv para ver los resultados, incluidos los casos de error.


http://php.net/manual/es/function.fgetcsv.php
En ese link abajo hay un código para una validación similar a la que planteas.
  #3 (permalink)  
Antiguo 07/12/2010, 15:00
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 11 meses
Puntos: 89
Respuesta: Verificar estructura de CSV. ¿se podra?.

Cita:
Iniciado por areslepra Ver Mensaje
Primero leé la documentación de la función fgetcsv para ver los resultados, incluidos los casos de error.


http://php.net/manual/es/function.fgetcsv.php
En ese link abajo hay un código para una validación similar a la que planteas.
areslepra no se cual es el ejemplo, me arias el favor de indicarlo. ya que hay muchisimos mi ingles es pesimo y no logro resolverlo.
__________________
Mono programando!
twitter.com/eguimariano
  #4 (permalink)  
Antiguo 07/12/2010, 15:12
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 9 años, 1 mes
Puntos: 13
Respuesta: Verificar estructura de CSV. ¿se podra?.

El primero pero no importa porque es más bien complicado y hace muchas validaciones que puede complicarte la cosa, yo en tu caso validaría lo separadores.
En tu caso que tengas 2 ";" eso lo haces con substr_ count.
Trata de diagramar el código y nos contas que tal.
  #5 (permalink)  
Antiguo 07/12/2010, 15:23
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 11 meses
Puntos: 89
Respuesta: Verificar estructura de CSV. ¿se podra?.

Mira areslepra, encontre esto que te parece??
http://www.php.net/manual/es/function.fputcsv.php

por lo jugue un poco vi esto:

Este es el ejemplo del link:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $lista = array (
  4.     array('aaa', 'bbb', 'ccc', 'dddd'),
  5.     array('123', '456', '789'),
  6.     array('"aaa"', '"bbb"')
  7. );
  8.  
  9. $fp = fopen('archivo.csv', 'w');
  10.  
  11. foreach ($lista as $campos) {
  12.     fputcsv($fp, $campos);
  13. }
  14.  
  15. fclose($fp);
  16. ?>
y te crea un archivo en la carpeta del php. llamado archivo.txt que tiene este formato:

Código:
aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""
si a este codigo le agrego esto:

<?php

$lista = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);

$fp = fopen('archivo.csv', 'w');

foreach ($lista as $campos) {
fputcsv($fp, $campos,';');
}

fclose($fp);
?>


me imprime esto:

Código:
aaa;bbb;ccc;dddd
123;456;789
"""aaa""";"""bbb"""
que me viene barbaro para continuar mi codigo.

El problema viene al implementarlo....
Ya que en el ejemplo aparece la variable $campos y no tengo ni idea de donde viene...
ademas el archivo CSV lo estoy manipulando recibido del Form no lo guardo en mi servidor.

subo el codigo hasta ahora:

Código PHP:
Ver original
  1. <?php
  2. include('config.php');
  3. $campa&#241;a=$_POST['campa'];
  4. $opera=$_SESSION['s_nombre'];
  5. $file=$_FILES['userfile'];
  6.  
  7. if ($campa&#241;a==NULL or $file==NULL)
  8. {
  9. echo "Por favor verifique completar todos los campos";
  10. }else{
  11. if ($file['type'] == 'application/vnd.ms-excel'){
  12.  
  13. echo $file['name']."<br>";
  14. echo $file['type'];
  15.  
  16. $fpname=$file['tmp_name'];
  17. $row = 0;  
  18. $fp = fopen ("$fpname","r");
  19. while ($data = fgetcsv ($fp, 1000, ";"))  
  20. {  
  21. $num = count ($data);  
  22. print " <br>";  
  23. $row++;  
  24. echo "$row- ".$data[0].$data[1];  
  25. }  
  26. fclose ($fp);
  27.  
  28. }else{echo "error";}}
  29.  
  30. ?>

el cual funciona barbaro....
ahora la idea es incluir
fputcsv()

fputcsv($fp, $campos, ";");

me imagino que en $fp tengo que agregar escritura -rw no?



NOTA: A tener bien claro que los CSV solo tiene dos campos.
__________________
Mono programando!
twitter.com/eguimariano
  #6 (permalink)  
Antiguo 07/12/2010, 15:28
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 9 años, 1 mes
Puntos: 13
Respuesta: Verificar estructura de CSV. ¿se podra?.

El tema de la variable $campos sale de aca

foreach ($lista as $campos) {

Revisa el funcionamiento del bucle foreach en la documentación de PHP para que se te aclare la cosa.

Para ver el permiso anda a la parte de la documentacion de la funcion fopen y te dice todos y la caracteristica de cada uno.
http://www.php.net/manual/es/function.fopen.php

Mira un poco eso y me decis si todavia no lo podes resolver.
  #7 (permalink)  
Antiguo 07/12/2010, 15:44
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 11 meses
Puntos: 89
Respuesta: Verificar estructura de CSV. ¿se podra?.

el permiso para fopen es a+ Lectura & escritura.

ahora en:

fputcsv($fp,$campos,";");

donde $fp:
$fpname=$file['tmp_name'];
$fp = fopen ("$fpname","a+");
y ";" es lo que indicara la delimitacion de los campos, pero $campos no se como remplazarlo.

Tambien me surgio una duda... si el formato de los campos es el siguiente:

hola , testesteste

me lo pasa a:

hola ; testesteste

PERO si tiene esto:

hola , testes,teste

me lo pasa a:

hola ; testes;teste

y eso me causa un error!!!
__________________
Mono programando!
twitter.com/eguimariano
  #8 (permalink)  
Antiguo 07/12/2010, 15:46
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 11 meses
Puntos: 89
Respuesta: Verificar estructura de CSV. ¿se podra?.

dolor de cabeza
__________________
Mono programando!
twitter.com/eguimariano
  #9 (permalink)  
Antiguo 07/12/2010, 15:57
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 9 años, 1 mes
Puntos: 13
Respuesta: Verificar estructura de CSV. ¿se podra?.

Aplica trim, mira su uso en el manual de PHP
Te oriento, a cada elemento del arreglo le aplicas trim, y cuando creas el csv separas con " ; " (con los espacios) entonces te quedan los espacios.

osea a cada elemento de $campos le aplicas trim con un bucle (for) y luego usas de separador en vez de ';' ' ; '
fputcsv($fp, $campos,';');
  #10 (permalink)  
Antiguo 07/12/2010, 16:03
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 11 meses
Puntos: 89
Respuesta: Verificar estructura de CSV. ¿se podra?.

Cita:
Iniciado por areslepra Ver Mensaje
Aplica trim, mira su uso en el manual de PHP
Te oriento, a cada elemento del arreglo le aplicas trim, y cuando creas el csv separas con " ; " (con los espacios) entonces te quedan los espacios.

osea a cada elemento de $campos le aplicas trim con un bucle (for) y luego usas de separador en vez de ';' ' ; '
fputcsv($fp, $campos,';');
Gracias areslepra, mejor lo dejamos para mañana ya me hice un bucle en la cabeza..... mañana revivo el tema, mejor sigo con otras cosas, que todavia tengo para rato
__________________
Mono programando!
twitter.com/eguimariano

Etiquetas: csv, estructura, verificar
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 12:23.