Ver Mensaje Individual
  #4  
Antiguo 05-03-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Reputación: 22
kayetano Va por buen camino
Hola juanperez

copio y pego del correo que te he mandado hace un rato

Cita:
Empezado por juanperez
Lo de siempre: nuevo en PHP (15 días)
Estoy haciendo un sitio donde el cliente marca productos en varias paginas y al final aparece una con la lista de pedidos para ser enviada por mail.

Estoy trabajando con sesiones, y subo la información con POST.
Lo normal para un carrito de tienda on-line.

Cita:
Empezado por juanperez
codigo:

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

if ($item){
if (!isset($carrinho)){
$carrinho[$item]=$cantidad;
}else{
foreach($carrinho as $k => $v){
if ($item==$k){
$carrinho[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado) $carrinho[$item]=$cantidad;
}
}
$_SESSION['carrinho']=$carrinho;
?>
Algunos consejos:
- No es necesario que utilices "session_register" cuando utilizas el array $_SESSION
- Puedes trabajar directamente con el array $_SESSION no es necesario que utilices una variable secundaria.
- Deberías filtrar todas los valores de los formularios para evitar inyección de código malicioso.
- Todo el código que has puesto se puede reducir a unas poca lineas (claro está si no haces nada más por medio)
Código PHP:
<?php
session_start
();
$item=$_POST['item'];
if( !isset(
$_SESSION['carrinho']) )
    
$_SESSION['carrinho'] = array();

if ( isset( 
$_POST['item'] ) && $item ){
    
$_SESSION['carrinho'][$item]['cantidad'] += $_POST['cantidad'];
    
$_SESSION['carrinho'][$item]['nombre'] += $_POST['name'];

}
?>

Cita:
Empezado por juanperez
Pero....

al llegar a la pagina final como hago para que me imprima la lista?

He probado con

if (isset($carrinho)){
foreach($carrinho as $k => $v){
echo "# $k Prod.: Quant.: $v n";
}
}

pero solo logro que aparezcan dos valores, el codigo del producto y la cantidad elegida, pero no el nombre.
Código PHP:
if (isset($_SESSION['carrinho'])){
    foreach(
$_SESSION['carrinho'] as $k => $v){
        echo 
"# $k Prod.: "$v['nombre'] ." Quant.: "$v['cantidad'] ."\n";
    }


A través del correo pocas veces contesto, y cundo no lo hago en el foro es porque no tengo tiempo.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente

Última edición por kayetano fecha: 05-03-2007 a las 20:15:11.
Responder Con Cita