Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] eliminar cantidades de items - sessiones

Estas en el tema de eliminar cantidades de items - sessiones en el foro de PHP en Foros del Web. Código PHP: <?php      if(isset( $_GET [ 'accion' ])){          if( $_GET [ 'accion' ] ==  'eliminar' ){             @ $codigo  =  intval ( $_GET [ 'codigo' ]); ...
  #1 (permalink)  
Antiguo 29/10/2017, 16:46
 
Fecha de Ingreso: julio-2014
Mensajes: 59
Antigüedad: 9 años, 9 meses
Puntos: 0
eliminar cantidades de items - sessiones

Código PHP:
<?php

    
if(isset($_GET['accion'])){

         if(
$_GET['accion'] == 'eliminar'){
            @
$codigo intval($_GET['codigo']);
            if(isset(
$_SESSION['carrito'][$codigo])){
session_unset($_SESSION['carrito'][$codigo]);
            }
         }
  }  


@
$codigo $_POST["codigo"];
@
$cantidad intval($_POST["cantidad"]);

 
if(!isset(
$_SESSION["carrito"])){
$_SESSION["carrito"][0] = array("codigo"=>$codigo"cantidad"=>$cantidad);
}
else{
$found false;
    for(
$k=0;$k<sizeof($_SESSION["carrito"]);$k++){
        if(
$codigo == $_SESSION["carrito"][$k]["codigo"]){
        
$_SESSION["carrito"][$k]["cantidad"] += $cantidad;
        
$found true;
        break;
        }
    }
    if(!
$found){
    
$_SESSION["carrito"][sizeof($_SESSION["carrito"])] = array("codigo"=>$codigo"cantidad"=>$cantidad);
    }
}


  foreach(
$_SESSION['carrito'] as $producto)
   {     
 echo 
$producto['codigo'];
 echo  
" ";
 echo 
$producto['cantidad'] ;
 echo  
" ";
  
  
$codigo $producto['codigo'];
  
  
?>
  <a href='?accion=eliminar&codigo=<?php echo $codigo?>'>Eliminar</a>
<br>
<?php
                             
}  

?>

Al Querer eliminar un producto me elimina todos.

Quiero que elimine solo donde codigo=$codigo
  #2 (permalink)  
Antiguo 29/10/2017, 18:23
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: eliminar cantidades de items - sessiones

Pues eso ocurre porque se quiere eliminar el código,
pero la posición del array no corresponde con ese valor.

Además, el session_unset cómo bien te comentó alvaro_trewhela
se encarga de borrar todo lo que hay en el array de session,
en cuyo caso necesitas hacer uso de unset.

Propongo reescribir el código de este modo:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     if(isset($_GET['accion']))
  4.     {
  5.         if($_GET['accion'] == 'eliminar')
  6.         {
  7.             $codigo = intval($_GET['codigo']);
  8.  
  9.             if(isset($_SESSION['carrito'][$codigo]))
  10.                 unset($_SESSION['carrito'][$codigo]);
  11.         }
  12.     }
  13.  
  14.     if( sizeof($_POST) )
  15.     {
  16.         $codigo = $_POST['codigo'];
  17.         $cantidad = intval($_POST['cantidad']);
  18.      
  19.         if(!isset($_SESSION['carrito']))
  20.             $_SESSION['carrito'][$codigo] = $cantidad;
  21.         else
  22.         {
  23.             if( array_key_exists($codigo, $_SESSION['carrito']) )
  24.                 $_SESSION['carrito'][$codigo] += $cantidad;
  25.             else
  26.                 $_SESSION['carrito'][$codigo] = $cantidad;        
  27.         }
  28.     }
  29.  
  30.  
  31.     foreach(@$_SESSION['carrito'] as $codigo=>$cantidad)
  32.     {
  33. ?>
  34.         Codigo: <?php echo $codigo; ?>
  35.         Cantidad: <?php echo $cantidad; ?>
  36.         <a href='?accion=eliminar&codigo=<?php echo $codigo; ?>'>Eliminar</a>
  37.         <br>
  38. <?php
  39.     }
  40.  
  41. ?>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 30/10/2017, 00:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: eliminar cantidades de items - sessiones

Hola domichis,

Ya que lo has marcado como solucionado, que por lo que veo no es así, cuando lo tengas, es mejor si publicas la solución para que, cuando alguien venga buscando sobre el mismo problema, la pueda encontrar aquí.

Etiquetas: items
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 20:50.