Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/08/2011, 05:01
Avatar de vgonga1986
vgonga1986
 
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: No logro solucionar mi problema; modificar el WHILE por otra cosa...

Es muy sencillo el problema que tienes. Al añadir el while con ese código dentro, lo que has hecho es crear tantos formularios en tu web como iteraciones hace el while. Entonces, cuando le das a enviar, sólo se envía el formulario cuyo botón has pulsado. La solución también es sencilla, tienes que crear un único formulario, es decir, mover el while de lugar. Algo así:
Código PHP:
Ver original
  1. <?php
  2. $query= mysql_query('SELECT * FROM productos WHERE categ_prod = "apicolas"') or mysql_error();
  3. ?>
  4. <div class="producto">
  5.     <form action="agregar_producto.php" method="post">
  6.     <img src="IMAGENES DE SELECCION/editadas/IMG_3482.JPG" height="127"  align="left"/>
  7. <?php
  8. while ($row= mysql_fetch_array($query)) {
  9.     echo "<h1>" .$row['nom_prod'], "</h1>";
  10.     $nombre= $row['nom_prod'];
  11. ?>
  12.       <p> Es una secreci&oacute;n de las gl&aacute;ndulas hipofar&iacute;ngeas de las abejas nodrizas. Todas las larvas son alimentadas con jalea real los tres primeros d&iacute;as de su vida, a partir de esa fecha &uacute;nicamente la larva elegida reina se alimentar&aacute; con ella, mientras que las abejas obreras dispondr&aacute;n de una mezcla de polen, agua y miel. </p>
  13.       Cantidad: <input name="cantidad[]" type="text" id="cantidad" size="2"/>
  14. <?php
  15.     echo "# ID: " .$row['id_prod'], ", ";
  16.     $id = $row['id_prod'];
  17.     echo "Precio: " .$row['precio_prod'], " ";
  18.     $precio= $row['precio_prod'];
  19.  
  20.     $_SESSION["nom_prod"]= $nombre;
  21.     $_SESSION["id_prod"]= $id;
  22.     $_SESSION["precio_prod"]= $precio;
  23. }
  24. ?>
  25.         <input type="submit"  value="A&ntilde;adir al Carro" />
  26.         <img src='images/carro_anadir.gif' />
  27.     </form>
  28. </div>

Como ves, he hecho dos modificaciones más, el id del div no puede utilizar ahora un campo de la función, ya que el div no se repite, queda fuera del while y, por tanto, no puede usar datos extraidos del fetch.

Por otro lado, he tenido que cambiar el name del input text a cantidad[], ya que el input se repetirá tantas veces como productos haya en la consulta. Añadiendo los corchetes indicas a PHP que ese campo se enviará como un array de valores y no como un valor único. Es decir, en el PHP en que recibes la respuesta tendrás un array de cantidades.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?