Foros del Web » Programando para Internet » PHP »

Problema con insertar datos BD

Estas en el tema de Problema con insertar datos BD en el foro de PHP en Foros del Web. Como podria hacer para que me insertara en la base de datos todos los productos seleccionados con sus correspondientes resultados. Esta es la fuction: Código ...
  #1 (permalink)  
Antiguo 17/05/2007, 15:22
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Problema con insertar datos BD

Como podria hacer para que me insertara en la base de datos todos los productos seleccionados con sus correspondientes resultados.

Esta es la fuction:

Código PHP:
function imprime_carrito(){
        
$suma 0;
        echo 
'<FORM ACTION="insertar_pedido.php" enctype="multipart/form-data" method="post">
        <table border=1 cellpadding="4" width="100%" align="center" bordercolor="#000000">
              <tr bordercolor="#1D3A62">
                <td class="titulo_menu" align="center">Cantidad</td>
                <td class="titulo_menu" align="center">Referencia</td>
                <td class="titulo_menu" align="center">Precio (unidad)</td>
                <td class="titulo_menu" align="center">Acción</td>
              </tr>'
;
        for (
$i=0;$i<$this->num_productos;$i++){
            if(
$this->array_id_prod[$i]!=0){
                echo 
'<tr bordercolor="#000000">';
                echo 
"<td class='volver'><input name='textfield' type='text' name='cantidad' id='cantidad' size='3' maxlength='5' value='1' style='height:19px'></td>";
                echo 
"<td class='texto'>" $this->array_referencia_prod[$i] . "<input type='hidden' name='referencia' id='referencia' value='"$this->array_referencia_prod[$i] ."'></td>";
                echo 
"<td class='texto' align='center'>" $this->array_precio_prod[$i] . "<input type='hidden' name='precio' id='precio' value='"$this->array_precio_prod[$i] ."'><input type='hidden' name='estado' id='estado' value='on'></td>";
                echo 
"<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
                echo 
'</tr>';
                
$suma += $this->array_precio_prod[$i];
            }
        }
        
//muestro el total
        
echo "<tr></td><td><td class='texto'><b>TOTAL (€):</b></td><td class='texto' align='center'> <b>$suma</b></td><td bordercolor='#FFFFFF'>&nbsp;</td></tr>";
        
//total más IVA
        
echo "<tr bordercolor='#FFFFFF'><td bordercolor='#FFFFFF' colspan='4' align='center' class='volver'><input type='submit' name='boton' value='realizar pedido' style='height:17px' /></td></tr>";
        echo 
"</table>";
    } 
Y este el codigo de insertar_pedido.php

Código PHP:
<?php 
//Conexion
   
include("conex.php"); 

//Valores
   
$link=Conectarse();  
   
$pedido=$_POST['pedido'];
   
$cantidad=$_POST['cantidad'];
   
$referencia=$_POST['referencia'];
   
$precio=$_POST['precio'];
   
$estado=$_POST['estado'];

//Consulta para actualizar
mysql_query("insert into pedidos (pedido,cantidad,referencia,precio,id,estado,fecha) values ('','$cantidad','$referencia','$precio','".$_SESSION['id_usuario']."','$estado',NOW())",$link);

//Cerramos la conexion a DB
header("location: productos.php");

?>
  #2 (permalink)  
Antiguo 18/05/2007, 02:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 33
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Problema con insertar datos BD

Por lo pronto, en la medida de lo posible no uses comillas simples para html, no es estándar. Aquí te he retocado el código que tienes (sin modificar nada):

Código PHP:
function imprime_carrito(){
 
$suma 0;
 echo 
'<FORM ACTION="insertar_pedido.php" enctype="multipart/form-data" method="post">
  <table border=1 cellpadding="4" width="100%" align="center" bordercolor="#000000">
  <tr bordercolor="#1D3A62">
  <td class="titulo_menu" align="center">Cantidad</td>
  <td class="titulo_menu" align="center">Referencia</td>
  <td class="titulo_menu" align="center">Precio (unidad)</td>
  <td class="titulo_menu" align="center">Acción</td>
  </tr>'
;
 for (
$i 0$i $this->num_productos$i++) {
  if (
$this->array_id_prod[$i] != 0) {
   echo 
'<tr bordercolor="#000000">
    <td class="volver">
    <input name="textfield" type="text" name="cantidad" id="cantidad" size="3" maxlength="5" value="1" style="height: 19px">
    </td>
    <td class="texto">'
    
.$this->array_referencia_prod[$i]. '<input type="hidden" name="referencia" id="referencia" value="' .$this->array_referencia_prod[$i]. '">
    </td>
    <td class="texto" align="center">'
    
.$this->array_precio_prod[$i]. '<input type="hidden" name="precio" id="precio" value="' .$this->array_precio_prod[$i]. '">
    <input type="hidden" name="estado" id="estado" value="on">
    </td>
    <td><a href="eliminar_producto.php?linea=$i">Eliminar producto</td>
    </tr>'
;
   
$suma += $this->array_precio_prod[$i];
  }
 }
 
# Muestro el total
 
echo '<tr></td><td>
  <td class="texto"><b>TOTAL (€):</b></td><td class="texto" align="center"> <b>' 
.$suma'</b></td><td bordercolor="#FFFFFF">&nbsp;</td></tr>';
 
# Total más IVA
 
echo '<tr bordercolor="#FFFFFF"><td bordercolor="#FFFFFF" colspan="4" align="center" class="volver">
  <input type="submit" name="boton" value="realizar pedido" style="height: 17px" /></td></tr>
  </table>'
;

Lo que te ocurre es que cada vez que itera el FOR escribes nuevos INPUT con mismos names/ids; deberías añadirle el índice de la iteración para diferenciarlos, por ejemplo:

Código PHP:
$name_input 'referencia_' $i;
echo 
'<input name="' .$name_input'" type="text" />'
Y luego, en la parte del código donde recoges el post, como a priori no sabes cúantos input pueden llegarte, puedes jugar con las funciones array_values() y array_keys(), que te devuelven los valores de las variables y los nombres de las mismas respectivamente. O también recorriento el array $_POST.
  #3 (permalink)  
Antiguo 18/05/2007, 07:02
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Cita:
Iniciado por verm83 Ver Mensaje
Lo que te ocurre es que cada vez que itera el FOR escribes nuevos INPUT con mismos names/ids; deberías añadirle el índice de la iteración para diferenciarlos, por ejemplo:

Código PHP:
$name_input 'referencia_' $i;
echo 
'<input name="' .$name_input'" type="text" />'
Y luego, en la parte del código donde recoges el post, como a priori no sabes cúantos input pueden llegarte, puedes jugar con las funciones array_values() y array_keys(), que te devuelven los valores de las variables y los nombres de las mismas respectivamente. O también recorriento el array $_POST.
Esta parte es la que no entiendo para traspasarla al codigo, ya me lo comentaron de hacer algo asi pero no se como traspasarlo..

Es decir que en vez de poner por ejemplo:

Código:
<input type="hidden" name="precio" id="precio" value="' .$this->array_precio_prod[$i]. '">
Que es lo que tengo ahora mismo coger y poner esto otro?

Código PHP:
$precio '$this->array_precio_prod' $i
echo 
'<input name="' .$precio'" type="text" />'
O como lo pongo? Cosa que tb tengo mi duda en lo del post,
Perdona por ser tan así.., pero soy bastante novato en programacion.

Y muchisimas gracias por guiarme un poco mas..
  #4 (permalink)  
Antiguo 21/05/2007, 12:09
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Sé que con lo que me contestaron es suficiente pero alguien puede decidme como puedo hacerlo?
  #5 (permalink)  
Antiguo 23/05/2007, 14:52
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Alquien podría ayudarme?
  #6 (permalink)  
Antiguo 24/05/2007, 11:59
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

por favor alguna ayudita?
  #7 (permalink)  
Antiguo 29/05/2007, 11:42
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Aun no he conseguido que esto rule...
  #8 (permalink)  
Antiguo 29/05/2007, 11:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problema con insertar datos BD

No, te esta diciendo que cambies el nombre del campo:
Código PHP:
echo '<input type="hidden" name="precio_'.$i.'" id="precio" value="' .$this->array_precio_prod[$i]. '">'
  #9 (permalink)  
Antiguo 29/05/2007, 12:17
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Dejandolo todo asi?

Código PHP:
    function imprime_carrito(){
        
$suma 0;
        
        echo 
'<FORM ACTION="insertar_pedido.php" enctype="multipart/form-data" method="post">
        <table border=1 cellpadding="4" width="100%" align="center" bordercolor="#000000">
              <tr bordercolor="#1D3A62">
                <td class="titulo_menu" align="center">Cantidad</td>
                <td class="titulo_menu" align="center">Referencia</td>
                <td class="titulo_menu" align="center">Precio (unidad)</td>
                <td class="titulo_menu" align="center">Acción</td>
              </tr>'
;
        for (
$i=0;$i<$this->num_productos;$i++){
            if(
$this->array_id_prod[$i]!=0){
            
$precio 'precio_' $i;
            
$referencia 'referencia_' $i;
                echo 
'<tr bordercolor="#000000">';
                echo 
"<td class='volver'><input name='textfield' type='text' name='cantidad' id='cantidad' size='3' maxlength='5' value='1' style='height:19px'></td>";
                echo 
"<td class='texto'>" $this->array_referencia_prod[$i] . "<input type='hidden' name='" .$referencia" id='" .$referencia" value='"$this->array_referencia_prod[$i] ."'></td>";
                echo 
"<td class='texto' align='center'>" $this->array_precio_prod[$i] . "<input type='hidden' name='" .$precio"' id='".$precio."' value='"$this->array_precio_prod[$i] ."'><input type='hidden' name='estado' id='estado' value='on'></td>";
                echo 
"<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
                echo 
'</tr>';
                
$suma += $this->array_precio_prod[$i];
            }
        }
        
//muestro el total
        
echo "<tr></td><td><td class='texto'><b>TOTAL (€):</b></td><td class='texto' align='center'> <b>$suma</b></td><td bordercolor='#FFFFFF'>&nbsp;</td></tr>";
        
//total más IVA
        
echo "<tr bordercolor='#FFFFFF'><td bordercolor='#FFFFFF' colspan='4' align='center' class='volver'><input type='submit' name='boton' value='realizar pedido' style='height:17px' /></td></tr>";
        echo 
"</table>";
    } 
  #10 (permalink)  
Antiguo 29/05/2007, 12:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problema con insertar datos BD

Tambien tienes que cambiar el de cantidad, y a la hora de recibirlo via POST vas a tener que hacer mas complicado para ciclarlo a lo mejor leyendo la cantidad del carrito.

Saludos.
  #11 (permalink)  
Antiguo 29/05/2007, 12:27
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

No si la cantidad va a ser una.... ya que aun no he podido conseguir en este carrito dar la opcion de cantidad...
  #12 (permalink)  
Antiguo 29/05/2007, 12:42
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Bueno si es verdad tengo el campo para añadir la cantidad pero bueno lo que me interesa ahora es eso de insertar los productos a la BD y despues una vez funcione pues ya me pongo con lo de la cantidad...
  #13 (permalink)  
Antiguo 29/05/2007, 13:07
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Pues de la forma que lo estoy haciendo no me recoge el valor... me muestra en la BD 0 es decir nada
  #14 (permalink)  
Antiguo 07/06/2007, 16:09
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Problema con insertar datos BD

Aun no lo consegui hay alguien que me pueda ayudar para insertar el resultado de la cesta en la BD?
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:32.