test de valeurs de tableau dans session

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2007, 16:12

Bonjour à tous,

j'utilise une petite ligne pour ajouter le choix d'un visiteur dans son panier:
if ($action=="ajouter") {
$ajout= array($_GET['idRecord'], $_GET['idLivre'], $_GET['prix']);
$_SESSION['panier'][] = $ajout;
}	  
Je ne sais pas comment faire pour mettre le tableau $ajout dans la session UNIQUEMENT s'il n'y figure pas déjà. pouvez vous m'aider?

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2007, 16:20

j'ai essayé ceci mais ça ne marche pas

if ($action=="ajouter") { 
      $ajout= array($_GET['idRecord'], $_GET['idLivre'], $_GET['prix']); 
        
      if ($_SESSION['panier'][] != $ajout) {
          $_SESSION['panier'][] = $ajout; 
        }
} 

Petit nouveau ! | 4 Messages

16 févr. 2007, 16:21

Bonjour,

tu peux regarder du côté de la fonction in_array.

if (!in_array($ajout, $_SESSION['panier'])) {
   $_SESSION['panier'][] = $ajout;
}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 févr. 2007, 16:23

plutôt que d'ajouter le tableau à la suite d'un tableau indexé, je te recommande de faire un tableau associatif a partir de l'idLivre ou de l'idRecord par exemple :
if ($action=="ajouter") { 
  $ajout= array($_GET['idRecord'], $_GET['idLivre'], $_GET['prix']); 
  $_SESSION['panier'][$_GET['idLivre']] = $ajout; 
}
tu pourras ainsi avec isSet() tester facilement si l'enregistrement que tu veux ajoutes existe déjà ou non dans ta session, sans avoir à parcourir le tableau et tester les valeurs une par une à chaque fois :)
if(isSet($_SESSION['panier'][$_GET['idLivre']])) // l'objet est déjà en session
  ...
else 
  ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...