Foros del Web » Programando para Internet » PHP »

Fallo al insertar datos en la bd

Estas en el tema de Fallo al insertar datos en la bd en el foro de PHP en Foros del Web. Saludos. Tengo un formulario que inserta hasta 5 registros de cuatro campos cada uno en la base de datos. Mi problema es que me hace ...
  #1 (permalink)  
Antiguo 29/01/2005, 05:03
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 21 años, 9 meses
Puntos: 0
Fallo al insertar datos en la bd

Saludos.

Tengo un formulario que inserta hasta 5 registros de cuatro campos cada uno en la base de datos. Mi problema es que me hace bien solo el primero, me almacena basura en lugar del contenido. Les dejo el código a continuación. Gracias de antemano.


Código PHP:
<?php
for ($i=1;$i<=4;$i++){
$grupo[$i] = $_POST['grupo'.$i];
$anio[$i] = $_POST['anio'.$i];
$album[$i] = $_POST['album'.$i];
$observaciones[$i] = $_POST['tipo'.$i];
}

include (
"../config.php");
$conex mysql_connect($host,$user,$pass);
$seleccion mysql_select_db($base);

for (
$i=1;$i<=4;$i++){
 
$grupo $grupo[$i];
 
$anio $anio[$i];
 
$album $album[$i];
 
$observaciones $observaciones[$i];
 if (!empty(
$grupo) && !empty($anio) && !empty($album)){
   
$consulta "INSERT INTO discos VALUES ('','$grupo','$anio','$album','$observaciones')"
   
$resultado mysql_query($consulta);
   }
 }
echo 
'<title>Inserción de Discos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">'
;
echo 
"<center><font color='#FFFFFF' <b>Se añadieron un total de: ".($i-1)." discos.</b><center><br>".$vuelve;
echo 
"</font>";
?>
  #2 (permalink)  
Antiguo 29/01/2005, 05:53
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 19 años, 3 meses
Puntos: 0
Mira, deberias revisar primero (con unos echo) si el primer FOR te esta guardando bien los valores que vienen de las variables $_POST[].

En segundo lugar, en el insert, que son esas ' ' vacias que tienes como primer campo??? antes de '$grupo'.???, algo que se auto incrementa???
  #3 (permalink)  
Antiguo 30/01/2005, 08:52
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 21 años, 9 meses
Puntos: 0
El primer for almacena correctamente los datos en los arrays

Cita:
Iniciado por Yoko_cl
En segundo lugar, en el insert, que son esas ' ' vacias que tienes como primer campo??? antes de '$grupo'.???, algo que se auto incrementa???
Si, es el campo id

Última edición por Keleriano; 30/01/2005 a las 08:58
  #4 (permalink)  
Antiguo 30/01/2005, 09:33
 
Fecha de Ingreso: marzo-2004
Mensajes: 21
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola,
me parece que el fallo puede estar en el bucle que usas para introducirlo en la base de datos, haces $grupo = $grupo[i] con lo cual no puedes hacer en la siguiente iteracción lo mismo pues $grupo[i] no existe. Prueba a cambiar el nombre: $item_grupo = $grupo[i] por ejemplo.

$consulta = "INSERT INTO discos VALUES ('','$item_grupo'...

Suerte.
  #5 (permalink)  
Antiguo 30/01/2005, 09:35
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 19 años, 3 meses
Puntos: 0
EUREKA! era tan simple.....

tu problema es que en el segundo for creas esas variables auxiliares con el mismo nombre de los arreglos que tienes, cambiales el nombre y vas a ver que todo funciona perfecto. ie:
Código:
for ($i=1;$i<=4;$i++){
$aux1 = $grupo[$i];
$aux2 = $anio[$i];
$aux3 = $album[$i];
$aux4 = $observaciones[$i];
 
if (!empty($aux1) && !empty($aux2) && !empty($aux3)){
   $consulta = "INSERT INTO discos VALUES ('','$aux1','$aux2','$aux3','$aux4')";
   $resultado = mysql_query($consulta);
   }
}
Por otro lado, tus 2 for no insertan hasta 5 registros pues empiezan en 1, y y terminan en 4 (1, 2, 3, 4), debes hacerlos partir en 0 si quieres ponerle <=4, ademas los indices de los arrays es mejor partirlos en 0 siempre.
  #6 (permalink)  
Antiguo 31/01/2005, 01:30
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 21 años, 9 meses
Puntos: 0
Muchas gracias a ambos, ya funciona perfectamente :)
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 13:30.