2013-02-14 2 views
0

J'ai la fonction suivante en PHP qui ajoute un article à un panier chaque fois que l'utilisateur clique sur Ajouter au panier.Session en PHP rajoutant un article au panier lors de l'actualisation du site

Le problème est que si quelqu'un recharge manuellement la page après avoir ajouté un article au panier, un nouvel article est ajouté.

Des conseils pour éviter cela?

function addtocart($pid,$q) 
    { 
     if($pid<1 or $q<1) return; 
     if(is_array($_SESSION['cart'])) 
     { 

      $max=count($_SESSION['cart']); 
      $_SESSION['cart'][$max]['itemId']=$pid; 
      $_SESSION['cart'][$max]['qty']=$q; 
      $max=count($_SESSION['cart']); 
     } 
     else 
     { 
      $_SESSION['cart']=array(); 
      $_SESSION['cart'][0]['itemId']=$pid; 
      $_SESSION['cart'][0]['qty']=$q; 
      $max=count($_SESSION['cart']); 

     } 
    } 

Voilà comment j'appelle la fonction:

utilisateur clique sur le bouton Ajouter au panier:

<input type="button" value="<?php echo $lang['ADDTOCART']; ?>" class="addToCart" onclick="addtocart(<?php echo $itemId; ?>)" /> 

Javascript exécuté:

<script language="javascript"> 
    function addtocart(pid){ 
     document.cartAdding.itemId.value=pid; 
     document.cartAdding.command.value='add'; 
     document.cartAdding.submit(); 
    } 
</script> 

page rechargements et entre en ici:

if(isset($_REQUEST['command']) && $_REQUEST['command']=='add' && $_REQUEST['itemId']>0) 
{ 
     $pid=$_REQUEST['itemId']; 
     addtocart($pid,1); 
} 

Merci

+0

À quelle page rafraîchissent-ils manuellement? La page "Ajouter au panier"? – ceejayoz

+2

Comment est appelé 'addtocart()'? – Tchoupi

+2

[Post/Redirect/Get] (https://en.wikipedia.org/wiki/Post/Redirect/Get) –

Répondre

2

Vous pouvez mettre une instruction if pour vérifier si l'élément a déjà été ajouté. Au sommet de ma tête, quelque chose comme:

if (array_key_exists($pid, $_SESSION['cart']['itemId'])){ // check to see if product has already been added 
// put code statments here 
} 
+0

Que se passe-t-il si l'utilisateur souhaite à nouveau ajouter le même élément? Cela n'ajouterait pas? – samyb8

+0

Si l'utilisateur veut ajouter le même article, il veut ajouter une autre quantité (ou soustraire la quantité); Ainsi vous géreriez cela à l'intérieur de l'instruction if. –

Questions connexes