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

Vale, revisando el código me he dado cuenta de un error. No se puede hacer así, porque pasas los datos por SESSION. Si te das cuentas, en SESSION sólo se van a quedar los datos (id, nombre y precio) del último producto del bucle, ya que los machacas.

Lo que tendrás que hacer es pasar un array con cada conjunto de datos, es decir, un array para id, otro para nombre y otro para precio. Usando la misma idea del array que se monta automático para cantidad. 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.     $nombres = array(); // Esto crea un array vacío.
  9.     $ids = array();
  10.     $precios = array();
  11.     while ($row= mysql_fetch_array($query)) {
  12.         echo "<h1>" .$row['nom_prod'], "</h1>";
  13.         $nombres[] = $row['nom_prod']; // Esto añade en la siguiente posición del array.
  14.     ?>
  15.           <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>
  16.           Cantidad: <input name="cantidad[]" type="text" id="cantidad" size="2"/>
  17.     <?php
  18.         echo "# ID: " .$row['id_prod'], ", ";
  19.         $ids[] = $row['id_prod'];
  20.         echo "Precio: " .$row['precio_prod'], " ";
  21.         $precios[] = $row['precio_prod'];
  22.     }
  23.     // Al final del bucle, los arrays se habrán llenado de datos y los guardas en la sesión:
  24.     $_SESSION["nombres"] = $nombres;
  25.     $_SESSION["ids"] = $ids;
  26.     $_SESSION["precios"] = $precios;
  27.     ?>
  28.             <input type="submit"  value="A&ntilde;adir al Carro" />
  29.             <img src='images/carro_anadir.gif' />
  30.         </form>
  31.     </div>

De esta forma en el PHP en el que trates el formulario tendrás 4 arrays:
Código PHP:
Ver original
  1. $ids = $_SESSION("ids");
  2. $nombres = $_SESSION("nombres");
  3. $precios = $_SESSION("precios");
  4. $cantidades = $_POST("cantidad");

Y puedes poner un bucle tal que así:
Código PHP:
Ver original
  1. for ($i = 0; $i < count($ids); $i++) {
  2.     echo "ID: " . $ids[$i];
  3.     echo "Nombre: " . $nombres[$i];
  4.     echo "Precio: " . $precio[$i];
  5.     echo "Cantidad: " . $cantidades[$i];
  6. }

Ahora sí, 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?