Foros del Web » Programando para Internet » PHP »

Sesiones : parecido a un carrito de la compra

Estas en el tema de Sesiones : parecido a un carrito de la compra en el foro de PHP en Foros del Web. Buenas tardes, Tengo que ir añadiendo a mi sesión productos ( que son formas), pero no consigo que se añadan correctamente.. Se supone que debo ...
  #1 (permalink)  
Antiguo 11/04/2016, 13:28
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 16 años, 5 meses
Puntos: 0
Sesiones : parecido a un carrito de la compra

Buenas tardes,

Tengo que ir añadiendo a mi sesión productos ( que son formas), pero no consigo que se añadan correctamente..

Se supone que debo de añadir una forma y que en cada formulario de la forma ya he puesto el session_start();

Pero solo coge una forma... no cge el resto que se envian con el metodo POST ¿Por qué?

El bucle esta porque en un futuro deberia haber solo 10 formas añadidas...

Gracias


Código PHP:
session_start();
$i=0;
session_register ("formas");
for (
$i=0$i<10$i++)
{
unset(
$_POST['btnAnadir']);
$_SESSION['formas'][$i]=$_POST;
$formas=$_SESSION['formas'][$i];

foreach(
$formas as $clave=>$valor)
{
    echo 
"Clave".$clave ."\n";
    echo 
"Valor".$valor ."\n";
    echo 
"\n";
}
}
?> 
Código HTML:
Ver original
  1.   <a href="formulario.html">Añadir otra más</a>
  2. </body></html>
  #2 (permalink)  
Antiguo 11/04/2016, 13:46
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Sesiones : parecido a un carrito de la compra

prueba asi:

Código PHP:
Ver original
  1. if (isset($_GET['id'])){
  2.     $id=$_GET['id'];
  3.     $codigo = $_GET['codigo'];
  4.     $nombre=$_GET['nombre'];
  5.     $mi_carrito[]=array('id'=>$id,'codigo'=>$codigo,'nombre'=>$nombre);
  6. }
  7.  
  8.  
  9. //si esta declarada la sesion carrito agrega los item nuevos
  10. if (isset($_SESSION['carrito'])){
  11.         $mi_carrito=$_SESSION['carrito'];
  12.             if (isset($_GET['id'])){
  13.                 $id=$_GET['id'];
  14.                 $codigo = $_GET['codigo'];
  15.                 $nombre=$_GET['nombre'];
  16.                 $pos=-1;
  17.                 //Buscamos el item en la variable de sesion
  18.                 for($i=0;$i<count($mi_carrito);$i++){
  19.                     if($id==$mi_carrito[$i]['id']){
  20.                         $pos=$i;
  21.                     }
  22.                 }
  23.                 //si lo encuentra actualiza la cantidad de articulos
  24.                 if($pos<>-1){
  25.                     $cuanto=$mi_carrito[$pos]['cantidad']+$cantidad;
  26.                     $mi_carrito[$pos]=array('id'=>$id,'codigo'=>$codigo,'nombre'=>$nombre);
  27.                 }else{
  28.                     //si no lo agrega
  29.                     $mi_carrito[]=array('id'=>$id,'codigo'=>$codigo,'nombre'=>$nombre);
  30.                 }
  31.     }
  32. }
  33.  
  34. //si no esta creada la sesion carrito la crea e y carga el articulo
  35. if (isset($mi_carrito)) $_SESSION['carrito']=$mi_carrito;

ese codigo lo que hace es agregar items a la variable de carro y si la encuentra actualiza la cantidad si no agrega el item y si es el primer item, crea la variable
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 12/04/2016, 08:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Sesiones : parecido a un carrito de la compra

Buenas tardes,

Sigo dando vueltas a este asunto, sin exito jajaja

Código PHP:
session_start(); //Comienzo la sesion 
unset($_POST['btnAnadir']);   //elimino  el boton  de enviar que también se envia
$mis_formas[$_POST['tipo']]=array($_POST); 

//almaceno en mis formas con su indice tipo lo enviado menos  el boton que antes lo elimine
$mis_formas[$_POST['tipo']]=$_SESSION['formas'];
// esto no se ni porque lo hago, ya que no entendi bien el codigo anterior

for ($i=0$i<count($mis_formas); $i++)
{
echo 
count($mis_formas);
foreach(
$mis_formas as $clave=>$valor)
{
    echo 
"Clave".$clave ."\n";
    echo 
"Valor".$valor ."\n";
    echo 
"\n";
}
}

Recorro con bucles para sacar el valor y solo se ha almacenado el ultimo  añdidoEn las otras paginas solo esta session_start(); 
  #4 (permalink)  
Antiguo 12/04/2016, 09:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sesiones : parecido a un carrito de la compra

Pues creo que todo lo estás haciendo mal, observa:
Código PHP:
Ver original
  1.  
  2. // primero creamos el array acumulador
  3. if (!isset($_SESSION['mis_formas'])) {
  4.   $_SESSION['mis_formas'] = [];
  5. }
  6.  
  7. // en caso de POST
  8. if (!empty($_POST)) {
  9.   unset($_POST['campo_del_submit']);
  10.  
  11.   // agregamos el post actual al array en sesión
  12.   $_SESSION['mis_formas'] []= $_POST;
  13. }
  14.  
  15. // más adelante iteramos únicamente lo que hay en sesión
  16. foreach ($_SESSION['mis_formas'] as $data) {
  17.  
  18.   // cada elemento de sesión es otro array
  19.   foreach ($data as $k => $v) {
  20.     echo "$k = $v <br>";
  21.   }
  22. }
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: carrito, compra, formulario, html, parecido, sesiones
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 18:35.