¿Cómo elimino los productos de la sesión en el carrito de compras usando el botón Eliminar?

¿Cómo elimino productos de sesión en un carrito de compras usando un botón de eliminación? Tengo el siguiente código; 'limpiar carrito' está funcionando y desactiva la sesión para todos los artículos de la compra. ¿Pero el problema es que 'eliminar' no desarma productos individuales a través de pid?

Php:

session_start();

$pid=$_SESSION['pid'];

function remove_product($pid){
  $pid=intval($pid);
  $max=count($_SESSION['product1']);

  for($i=0;$i<$max;$i++){

    if($pid==$_SESSION['product1'][$i]['pid']){
      unset($_SESSION['product1'][$i]);
      break;
    }

  }

  $_SESSION['product1']=array_values($_SESSION['product1']);

}

if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
  remove_product($_REQUEST['product1'][$pid]);
}

if($_REQUEST['command']=='clear' && isset($_REQUEST['remove'])){
  unset($_SESSION['image12']);
  unset($_SESSION['product1']);
  unset($_SESSION['price12']);
  unset($_SESSION['itemcode3']);
  unset($_SESSION['sizes12']);
}   

Js:

function del(pid){

  if(confirm('Do you really mean to delete this item')){
    document.form1.pid.value=pid;
    document.form1.command.value='delete';
    document.form1.submit();
  }

}

function clear_cart(){

  if(confirm('This will empty your shopping cart, continue?')){
    document.form1.command.value='clear';
    document.form1.submit();
  }

}

HTML:

<form  name="form1" method="post">  

  <input type="hidden" name="pid" />
  <input type="hidden" name="command" />  

  <input type="button" class="button2" value="Clear Cart" onclick="clear_cart()" />

  <a href="javascript:del(<?php echo $pid?>)">
    <input type="button" class="button2" value="Remove" />
  </a>

</form>

preguntado el 16 de abril de 13 a las 08:04

2 Respuestas

if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
remove_product($_REQUEST['product1'][$pid]);
}

no hay $_REQUEST['producto1'] en su formulario, tal vez

if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
remove_product($_REQUEST['pid']);
}

$_REQUEST['eliminar'] también

Respondido 16 Abr '13, 08:04

joe lee entonces debería ser $_SESSION['product1'] en lugar de $_REQUEST['product1'] - usuario2249079

if($_REQUEST['command']=='clear' && isset($_REQUEST['remove'])){
unset($_SESSION['image12']);
unset($_SESSION['product1']);
unset($_SESSION['price12']);
unset($_SESSION['itemcode3']);
unset($_SESSION['sizes12']);
}   

No veo ningún $_REQUEST['remove'] para enviar.

Su comando claro tampoco envía $pid, ¿no es necesario?

De hecho, clear() envía una cadena de consulta pid=&command=clear

Respondido 16 Abr '13, 08:04

Entonces, ¿cuál es la solución ahora? - usuario2249079

¿Qué quiere decir con $_REQUEST['remove'] si intenta verificar si se hace clic en los botones Borrar o Eliminar, parece que no es una verificación adecuada? ¿Qué desea que se verifique antes de que comience unset ()? es decir, si pid es enviado y clear se hace clic? - fondo real

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.