Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/08/2011, 07:32
Avatar de ras_chalo
ras_chalo
 
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: No logro solucionar mi problema; modificar el WHILE por otra cosa...

Cita:
Iniciado por vgonga1986 Ver Mensaje
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.
Wow!, Muchas gracias!!
Entiendo perfectamente la idea...desde ya la voy a empezar a implementar, que simple como lo planteaste!

Nuevamente te agradezco tu disposición, he aprendido mucho con tu post.
Saludos y gracias!!