Foros del Web » Programando para Internet » PHP »

recoger variables de formulario e insertar en BD

Estas en el tema de recoger variables de formulario e insertar en BD en el foro de PHP en Foros del Web. Buenas tardes compañeros; Hace cosa de una semana he expuesto un tema de fechas , arrays, etc. He logrado avanzar un poquito pero , todabía ...
  #1 (permalink)  
Antiguo 30/11/2005, 12:14
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 13 años, 1 mes
Puntos: 3
recoger variables de formulario e insertar en BD

Buenas tardes compañeros;

Hace cosa de una semana he expuesto un tema de fechas , arrays, etc. He logrado avanzar un poquito pero , todabía necesito un empujón...

Del formulario recojo unas variables que van a ser tipo array:
cat[], prec[], fecha_detalle[]... Pues bien lo que quiero es que me recoja todas las variables con sus valores y me los inserte en una BD que tiene esos tres campos CANTIDAD, PRECIO, FECHA Lo he planteado algo tal que así pero me da error de foreach... este es el código , puedo poner las variables de este modo??? Un saludo y gracias de ante mano a todos de veras!!!
Código PHP:
//cojemos el ultimo id que se acaba de insertar para ponerlo en la DB "propuesta proveedor detalles"
    
$id_propuesta_proveedor=mysql_insert_id();
    
$conta=0;
    foreach(
$_POST["cant"] as $cantidad) {
        
mysql_query("insert into propuesta_proveedor_detalles
        (id_propuesta_proveedor, fecha, cantidad, precio)
        values
        ('$id_propuesta_proveedor','$fecha_detalle[$conta]', '$cantidad[$conta]', '$precio[$conta]')"
)
        or die (
mysql_error());
    
$conta++;
    } 
  #2 (permalink)  
Antiguo 30/11/2005, 13:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No uses un foreach() .. sería recomendable un simple for() (para generar tu $conta) ... Y toma los valores en sus arrays asociados superglobales .. es decir en $_POST.
Código PHP:
for ($conta=0$conta <= count($_POST['cant']; $conta++){
mysql_query("insert into propuesta_proveedor_detalles 
        (id_propuesta_proveedor, fecha, cantidad, precio) 
        values 
        ('$id_propuesta_proveedor','"
.$_POST['fecha_detalle'][$conta]."', '".$_POST['cantidad'][$conta]."', '".$_POST['precio'][$conta]."')") or die (mysql_error()); 

Un saludo,
  #3 (permalink)  
Antiguo 30/11/2005, 13:57
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Cluster dice:
Cita:
No uses un foreach()
¿Por qué?

Suponemos que tienes tres arrays cat[], prec[], fecha_detalle[] de la misma dimensión (longitud) del tipo:
Código PHP:
    cat[0] = "categoria1"cat[1] = "categoria2"cat[2] = "categoria3"
    
prec[0] = 100prec[1] = 150prec[2] = 160;
    
fecha_detalle[0] = "16/16/2005"fecha_detalle[1] = "11/11/1111"fecha_detalle[2] = "45/12/1520" 
Para insertar los valores, después de hacer las validaciones oportunas, puedes hacer:
Código PHP:
    foreach($_POST["cat"] as $c=>$v){
        
mysql_query("insert into propuesta_proveedor_detalles
        (id_propuesta_proveedor, fecha, cantidad, precio)
        values ('$id_propuesta_proveedor','$fecha_detalle[$c]', '$v', '$precio[$c]')"
)
        or die (
mysql_error());
    }
    
    
En lugar de coger $_POST["cat"para el foreach puedes escoger cualquiera de los tres.
    
$c -> almacenará la clave del elemento del array en el que nos encontremos en cada paso
    $v 
-> almacenará el valor del elemento del array en el que nos encontremos en cada paso 
Espero que te valga, ciao
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 07:20.