Foros del Web » Programando para Internet » PHP »

Carrito de compra

Estas en el tema de Carrito de compra en el foro de PHP en Foros del Web. Hola a todos, No consigo hacer funcionar el siguiente codigo: <?php session_start(); session_register(['itemsEnCesta'); $item=$_POST['item']; $cantidad=$_POST['cantidad']; $itemsEnCesta=$_SESSION['itemsEnCesta']; if ($item){ if (!isset($itemsEnCesta)){ $itemsEnCesta[$item]=$cantidad; }else{ foreach($itemsEnCesta as $k ...
  #1 (permalink)  
Antiguo 01/02/2013, 15:42
 
Fecha de Ingreso: enero-2013
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Carrito de compra

Hola a todos,

No consigo hacer funcionar el siguiente codigo:

<?php
session_start();
session_register(['itemsEnCesta');
$item=$_POST['item'];
$cantidad=$_POST['cantidad'];
$itemsEnCesta=$_SESSION['itemsEnCesta'];

if ($item){
if (!isset($itemsEnCesta)){
$itemsEnCesta[$item]=$cantidad;
}else{
foreach($itemsEnCesta as $k => $v){
if ($item==$k){
$itemsEnCesta[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado)
$itemsEnCesta[$item]=$cantidad;
}
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
Dime el producto <input type="text" name="item" size="20"><br>
Cuantas unidades <input type="text" name="cantidad" size="20"><br>
<input type="submit" name='Enviar' value="Añadir a la cesta"><br>
</form>
<?
if (isset($itemsEnCesta)){
echo'El contenido de la cesta de la compra es:<br>';
foreach($itemsEnCesta as $k => $v){
echo 'Artículo: '.$k.' ud: '.$v.'<br>';
}
}
?>
</tt>
</body>
</html>

La funcion session_register() esta obsoleta y no funciona en la nuevas versiones, hay que sustituirla por $_SESSION, pero ¿que valor le doy a $_SESSION['itemsEncesta']?
¿Alguien tiene alguna solucion sencilla de carrito?
  #2 (permalink)  
Antiguo 01/02/2013, 17:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Carrito de compra

Cierto, ya no debes usar session_register, ahora, simplemente creas la variable de sesión en un script y debe estar disponible en todo el sitio, simplemente puedes hacer lo siguiente:

Código PHP:
Ver original
  1. <?php
  2. if( !isset($_SESSION['itemsEncesta'])) {
  3.     $_SESSION['itemsEncesta'] = array();
  4. }
  5.  
  6. // Después, en lugar de isset(), usas count()
  7. if(count($_SESSION['itemsEncesta']) > 0) {
  8.     // Hay algo aquí!
  9. } else {
  10.    // El carrito está vacío!
  11. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 20/08/2013, 19:31
 
Fecha de Ingreso: agosto-2013
Mensajes: 1
Antigüedad: 10 años, 8 meses
Puntos: 0
Exclamación Respuesta: Carrito de compra

Tengo el mismo problema, por mas que cambio el código pasa lo mismo, no causa ningn problema pues al agregar el primer lemento es donde manda un mensaje que no esta definido el $_SESSION['itemsEnCesta'];
ya al agregar el 2do elemento desaparece el error, mi codigo es:

session_start();
//Validar si se está ingresando con sesión correctamente

if( !isset($_SESSION['itemsEncesta'])) {
$_SESSION['itemsEncesta'] = array();
}

//session_register('itemsEnCesta');

//


$codigo = $_REQUEST['txtCodigo'];
$nombre = $_REQUEST['txtNombre'];
$cantidad = $_REQUEST['txtCantidad'];
$pu = $_REQUEST['txtPrecio'];
$parcial = ($cantidad * $pu);
$descuento = 0;

if ($parcial > 500) {
$descuento = ($parcial * 0.05);
}
$itemsEnCesta = $_SESSION['itemsEnCesta'];
if ($codigo) {

if(count($_SESSION['itemsEncesta']) > 0) {
$itemsEnCesta[$codigo] = array("codigo" => $codigo,
"nombre" => $nombre,
"cantidad" => $cantidad,
"pu" => $pu,
"parcial" => $parcial,
"descuento" => $descuento,
"subtotal" => ($parcial + $descuento));
} else {
$itemsEnCesta[$codigo] = array("codigo" => $codigo,
"nombre" => $nombre,
"cantidad" => $cantidad,
"pu" => $pu,
"parcial" => $parcial,
"descuento" => $descuento,
"subtotal" => ($parcial + $descuento));
}
}
$_SESSION['itemsEnCesta'] = $itemsEnCesta;
?>
  #4 (permalink)  
Antiguo 20/08/2013, 20:31
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Carrito de compra

Código PHP:
session_start();
//Validar si se está ingresando con sesión correctamente
    

    
if(isset($_SESSION['itemsEncesta'])){
        
            
$carrito=$_SESSION['itemsEncesta'];
            
            
            if (isset(
$_REQUEST['txtCodigo'])){
                
                
$codigo $_REQUEST['txtCodigo'];
                
$nombre $_REQUEST['txtNombre'];
                
$cantidad $_REQUEST['txtCantidad'];
                
$pu $_REQUEST['txtPrecio'];
                
$parcial = ($cantidad $pu);
                
$descuento 0;
                
$indice=-1;
                
                
                
//TENGO DUDAS EN QUE USAS ESTO, NO SE SI VA ACA O DONDE
                //NO COMPRENDO SU FUNCION
                
if ($parcial 500) {
                    
$descuento = ($parcial 0.05);
                }
                
                
                
                for(
$i=0;$i<=count($carrito)-1;$i ++){
                    
                    if(
$nombre==$carrito[$i]['txtNombre'])
                    {
                    
$indice=$i;      
                       }
                
                }
                
                if(
$indice != -1) {
                
                    
$cuanto $carrito[$indice]['txtCantidad'] + $cantidad;
                    
$carrito[$indice]=array("nombre"=>$nombre
                                                
"precio"=>$pu
                                                
"cantidad"=>$cuanto
                                                
"codigo"=>$codigo,
                                                
"parcial" => $parcial,
                                                
"descuento" => $descuento,
                                                
"subtotal" => ($parcial $descuento));
                
                }else {
                    
$carrito[]=array("nombre"=>$nombre
                                                
"precio"=>$pu
                                                
"cantidad"=>$cuanto
                                                
"codigo"=>$codigo,
                                                
"parcial" => $parcial,
                                                
"descuento" => $descuento,
                                                
"subtotal" => ($parcial $descuento));
                }
            }
            
        }
        
$_SESSION['itemsEnCesta'] = $carrito
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: carrito, carritodecompras, mysql
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 10:14.