Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Bucle FOR para array solo inserta ultimo registro a MYSQL

Estas en el tema de Bucle FOR para array solo inserta ultimo registro a MYSQL en el foro de PHP en Foros del Web. Buen dia espero me puedan ayudar, tengo un formulario que pasa datos por medio de POST a otra hoja donde los procesa para ingresarlos a ...
  #1 (permalink)  
Antiguo 14/03/2013, 12:30
 
Fecha de Ingreso: marzo-2013
Ubicación: Tijuana B.C.
Mensajes: 5
Antigüedad: 11 años, 1 mes
Puntos: 0
Bucle FOR para array solo inserta ultimo registro a MYSQL

Buen dia espero me puedan ayudar, tengo un formulario que pasa datos por medio de POST a otra hoja donde los procesa para ingresarlos a una base de datos MYSQL, el problema que tengo es que uno de los campos que trato de ingresar es un array el cual se genera de un textarea con varias lineas, pero al correr el bucle FOR solo inserta la ultima serie que se ingreso en el textarea,,,aqui esta la fraccion del codigo:


$asesor = $_POST['comboasesores'];
$factscan = $_POST['txtbox_fact'];
$series = $_POST['series']; /* Este es el ARRAY */
$prest = "PRESTAMO";
$fact = substr($factscan,3,10);


$keyarr=explode("\n" ,$series);
$imax=count($keyarr)-1;

if(!$fact){
for ($i=0; $i<$imax; $i++){
echo "<p> esta es la serie $i = $keyarr[$i] </p> \n";
$eq = "INSERT INTO eqmuestra(asesor, serie, analista, fact, fecha, hora) values ('$asesor','$keyarr[$i]','$user', '$prest', now(), now())";
echo $imax;
mysql_free_result($eq);
}


Espero me haya explicado bien y me puedan ayudar.
Gracias de antemano!
  #2 (permalink)  
Antiguo 14/03/2013, 14:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Bucle FOR para array solo inserta ultimo registro a MYSQL

Yo creo que no debería insertar ningún registro, porque tienes mysql_free_result() en vez de mysql_query().
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 14/03/2013, 14:39
 
Fecha de Ingreso: marzo-2013
Ubicación: Tijuana B.C.
Mensajes: 5
Antigüedad: 11 años, 1 mes
Puntos: 0
Bueno perdon,,esa linea era una prueba para tratar de liberar la consulta despues de ejecutarla,,,,,,pero aun sin esa linea no los agrega!
  #4 (permalink)  
Antiguo 14/03/2013, 15:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Bucle FOR para array solo inserta ultimo registro a MYSQL

Pero... sí estás usando mysql_query()?... muestra tu código real, para no jugar al adivino.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 14/03/2013, 17:51
 
Fecha de Ingreso: marzo-2013
Ubicación: Tijuana B.C.
Mensajes: 5
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Bucle FOR para array solo inserta ultimo registro a MYSQL

Tienes razon, aqui esta el codigo


<body>
<?
session_start();
if ($_SESSION['user']=="")
header("Location: error.php");
$user=$_SESSION['user']
?>
<?
$conexion=mysql_connect("localhost","oasis","almac en");
if(!$conexion){
echo "<p>Error: No se puede conectar al servidor</p>\n";
}
else "<p>Error: Si hay conexion al servidor</p>\n";
$bd=mysql_select_db("alm oasis",$conexion);
if(!$bd){
echo "<p>Error: No se pudo seleccionar la bd</p>\n";
header("location: error.php");
}

$asesor = $_POST['comboasesores'];
$factscan = $_POST['txtbox_fact'];
$series = $_POST['series'];
$prest = "PRESTAMO";
$fact = substr($factscan,3,10);
$fecha=date("Y/m/d");



$keyarr=explode("\n" ,$series);
$imax=count($keyarr)-1;


if(!$fact){
for ($i=0; $i<$imax; $i++){
echo "<p> esta es la serie $i = $keyarr[$i] </p> \n";
echo $imax;

$eq = "INSERT INTO eqmuestra(asesor, serie, analista, fact, fecha, hora) values ('$asesor','$keyarr[$i]','$user', '$prest', now(), now())";

}


$result = mysql_query($eq) or die(mysql_error());
if(!$result){
$msg="no insertados";
header("location:registroeq.php?m=".$msg);
}
else{
$msg="Insertado";
header("location:registroeq.php?m=".$msg);
}
}
else{
for ($i=0; $i<$imax; $i++){
echo "<p> esta es la serie $i = $keyarr[$i] </p> \n";

$eq = "INSERT INTO eqmuestra(asesor, serie, analista, fact, fecha, hora) values ('$asesor','$keyarr[$i]','$user', '$fact', now(), now())";
}
$result = mysql_query($eq) or die(mysql_error());
if(!$result){
$msg="no insertados";
header("location:registroeq.php?m=".$msg);
}
else{
$msg="Insertado";
header("location:registroeq.php?m=".$msg);
}
}
?>
</body>


Gracias,,,,,,,
  #6 (permalink)  
Antiguo 14/03/2013, 17:56
 
Fecha de Ingreso: marzo-2013
Ubicación: Tijuana B.C.
Mensajes: 5
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Bucle FOR para array solo inserta ultimo registro a MYSQL

Ya quedo,,,,,,lo que pasa es que el mysql_query lo habia puesto fuera del bucle,,,,,,,,,muchas gracias Triby...... y disculpa la molestia!!!!!
  #7 (permalink)  
Antiguo 14/03/2013, 17:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Bucle FOR para array solo inserta ultimo registro a MYSQL

Tienes mysql_query() fuera del for, por eso sólo ingresa la última fila, con $eq = "bla bla bla"; solo creas una cadena para consulta, pero no se ejecuta.

No es molestia, me da gusto que lo hayas solucionado.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: bucle, formulario, inserta, mysql, registro, ultimo
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 11:39.