Foros del Web » Programando para Internet » PHP »

problemas con foreach

Estas en el tema de problemas con foreach en el foro de PHP en Foros del Web. Hola a todos buen día/tarde/noche Les platico lo que quiero hacer y como lo estoy haciendo: Tengo un formulario el cual consta de es un ...
  #1 (permalink)  
Antiguo 18/01/2012, 10:23
 
Fecha de Ingreso: octubre-2006
Ubicación: Xoxocotla, Morelos Mexico
Mensajes: 243
Antigüedad: 17 años, 6 meses
Puntos: 0
problemas con foreach

Hola a todos buen día/tarde/noche

Les platico lo que quiero hacer y como lo estoy haciendo:

Tengo un formulario el cual consta de es un textarea en el que se encuentran las rutas de varios archivos:

c:\archivo1.csv
c:\archivo2.csv
c:\archivon.csv

Al momento de darle el botón enviar me manda a un script que pretendo que haga la carga de todos esos archivos a una base de datos MySQL, el script que uso es el siguiente:


.
..

$archivos = $_POST['nombres'];
$inserta = nl2br($archivos);
$lineas = explode ( '<br />' , $inserta );

foreach ($lineas as $t) {

$query = "load data infile '$t' into table fn fields terminated by '|'";
mysql_query($query);
echo $query;
}

..
.

Recibo el contenido de textarea en $archivos, sustituyo espacios por saltos de linea con nl2br y coloco cada ruta en una celda de un arreglo llamado $lineas. (la parte del echo $query solo es para ver que se está tomando cada archivo por cada iteración)

En efecto el echo me arroja la cantidad de sentencias como cantidad de lineas tiene mi textarea, y en cada una cambiando el archivo a insertar, pero el resultado es que en la base de datos solo se insertan los registros del primer archivo, únicamente ese.

Coloque el tema en PHP porque no estoy seguro que esté fallando, si el foreach o el load data.

Agradezco de antemano las aportaciones.

Saludos.
  #2 (permalink)  
Antiguo 18/01/2012, 11:59
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: problemas con foreach

Lo primero que te diria, es que si solo lo hace con el primero, es porque quizas solo tenga un indice tu arreglo... para esto, compruebalo haciendo esto:
print_r($lineas);

Luego, una posible solucion seria que reemplazes esto:
$archivos = $_POST['nombres'];
$inserta = nl2br($archivos);
$lineas = explode ( '<br />' , $inserta );

por:
$lineas = explode( '\n' , $_POST['nombres']);

y por ultimo... mas rapido aun ^^
Código PHP:
Ver original
  1. foreach(explode('\n', $_POST['nombres']) as $t) mysql_query("load data infile '$t' into table fn fields terminated by '|'");

Espero te sirva... Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 18/01/2012, 12:37
 
Fecha de Ingreso: octubre-2006
Ubicación: Xoxocotla, Morelos Mexico
Mensajes: 243
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problemas con foreach

Antes que nada gracias por el aporte, ya vi, el error no es en el foreach, sino en la operación MySQL, coloque un mysql_error(); después de la ejecución del query y me arroja el mensaje de que el archivo no fue encontrado siendo que si existe.
Creo que buscare por MySQL porque arroja ese error.

Gracias de cualquier manera.

Saludos.
  #4 (permalink)  
Antiguo 18/01/2012, 13:19
 
Fecha de Ingreso: octubre-2006
Ubicación: Xoxocotla, Morelos Mexico
Mensajes: 243
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problemas con foreach

Eureka!!!! ya se cual es el error

agrega un espacio en blanco antes de la ruta de los archivos 2 en adelante, es decir la ruta que busca es

' c:\archivo2.csv' en lugar de 'c:\archivo2.csv'

Como elimino ese espacio?? solo eso y queda resuelto.

Gracias!!!
  #5 (permalink)  
Antiguo 18/01/2012, 13:28
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: problemas con foreach

Podrias hacerlo con trim, strstr o con substring.
Y trata de probar con el codigo que postie, es un poco mas eficiente.

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 18/01/2012, 13:36
 
Fecha de Ingreso: octubre-2006
Ubicación: Xoxocotla, Morelos Mexico
Mensajes: 243
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problemas con foreach

Jajajajaja yo solo me respondo.

Por si alguien necesita algo parecido, mi script quedo así:

.
..

$archivos = $_POST['nombres'];
$inserta = nl2br($archivos);
$lineas = explode ('<br />' , $inserta);

foreach ($lineas as $t) {
$b = trim($t);
$query= "load data infile '$b' into table fn fields terminated by '|'";
mysql_query($query);
echo mysql_error();
}

..
.

Agregue un trim($t) antes de completar el query, con eso me vuela el espacio y queda la ruta correcta.

Preferí trabajar por separado las instrucciones, se me hace mas entendible por si en algún futuro tengo lagunas mentales.

Saludos.
  #7 (permalink)  
Antiguo 18/01/2012, 13:37
 
Fecha de Ingreso: octubre-2006
Ubicación: Xoxocotla, Morelos Mexico
Mensajes: 243
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problemas con foreach

Gracias, si, con el trim quedo, no había visto tu mensaje.

Probare con el código, ya lo tengo, muchas gracias.

Etiquetas: foreach, formulario, mysql, registro
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 21:11.