N'autoriser qu'une seule fois un produit dans une selection (simili panier)

Eléphanteau du PHP | 10 Messages

14 janv. 2009, 12:02

Tout d'abord bonjour à tous, très heureux d'être parmis vous :D .
Voici mon petit problème :
Je fais un site pour un amis.
C'est un site immobilier et il voudrait que ses clients puissent mettre les biens qui les intéressent dans une sélection.
Le problème est que je flanche sur ce qui est pour moi le moins compliqué : n'autoriser le même biens qu'a apparaitre une seule fois dans le panier.
Voici mon code que j'ai simplifié :

Code ajout
<?php
if (isset($_POST['panier']) && $_POST['panier']=='Ajouter') 
{
$id = $_POST['idpanier'];
$reference=$data['id'];
$nb=1; //par défaut la quantité est = 1
$prix=$data['budget'];
$liste[]=array($id,$reference,$nb,$prix);
$_SESSION['liste']=$liste;
}
?>
Mon panier
<?php


    
   

// on se connecte à notre base  
 $base = mysql_connect ();  
    mysql_select_db ();  
  

 if ($liste <= 0){
   echo '<tr bgcolor="#ffec90"><td valign="middle" align="center" height="400"><span class="titre2">&nbsp;&nbsp;&nbsp;Votre panier est vide</span></td></tr>
 <tr bgcolor="#ffec90"><td colspan="3" height="24" align="center" background="./img/bcriteres.png">&nbsp;</td></tr>';  
  }
  else
  {
    for ($i=0;$i<count($liste);$i++)
   {  
$sql = 'SELECT * FROM immobilier WHERE id ="'.$liste[$i][0].'"'; 
 
 // on exécute la requête  
 $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
 // on va scanner tous les tuples un par un  
 while ($data = mysql_fetch_array($req)) {  
 
 // on affiches les résultats dans la <table>
 echo '<tr bgcolor="#ffec90"><td valign="top"><table width="500" border="0" align="center" cellpadding="0" cellspacing="0" style="border: solid #ff8600 1px">
  <tr bgcolor="#ffec90" height="36">
    <td colspan="2" class="titrebien">&nbsp;&nbsp;' , htmlentities(trim($data['type'])) , ' ' , htmlentities(trim($data['transaction'])) , ' &agrave; ' , stripslashes ( htmlentities(trim($data['ville']))) , ' (' , htmlentities(trim($data['dept'])) , ') </td>
    <td align="right" style="color:red; font-weight:bold; font:16px;">' , htmlentities(trim($data['budget'])) , ' €&nbsp;&nbsp;</td>
  </tr>
  <tr bgcolor="#ffec90" height="36">
    <td width="135" rowspan="3" align="center"><img src="./img/biens/' , htmlentities(trim($data['image'])) , '" height="100" width="100" border="0" /></td>
    <td width="400"><span class="recherche" style="font-weight:bold">R&eacute;f&eacute;rence :</span> ' , htmlentities(trim($data['id'])) , ' </td>
    <td width="75" class="recherche" >&nbsp;</td>
  </tr>
  <tr bgcolor="#ffec90">
    <td width="400" valign="top"><span class="recherche" style="font-weight:bold">Contact :</span> ' , htmlentities(trim($data['contact'])) , '</td>
    <td class="recherche">&nbsp;</td>
  </tr>
  <tr bgcolor="#ffec90">
    <td><div align="justify">'.substr(''.stripslashes (htmlentities(trim($data['description']))).'', 0, 150).'...</div></td>
    <td  class="recherche">&nbsp;</td>
  </tr>
  <tr bgcolor="#ffec90" height="36">
    
    <td colspan="3" align="center" class="recherche"><a href=index.php?page=id9&ref='.htmlentities(trim($data['id'])).'><img src="./img/boutons/savoir.jpg" alt="En savoir +" height="20" border="0" /></a></td>
 </tr>
</table><br></td></tr>';  
 }  
 }
  
 // on libère l'espace mémoire alloué pour cette requête  
 mysql_free_result ($req); 
 
   
    echo '<td colspan="3" height="24" align="center" background="./img/bcriteres.png">&nbsp;</td>';  
 }  
 // on libère l'espace mémoire alloué pour cette requête  
 mysql_free_result ($resultat);  
 // on ferme la connexion à la base de données.  
 mysql_close ();  
  
 ?>
Avec ce code, a chaque que je clique sur "ajouter au panier" le bien s'ajoute au panier indéfiniment alors que je voudrais qu'il n'apparaisse qu'une fois par bien.

Merci de votre aide

Eléphant du PHP | 86 Messages

14 janv. 2009, 14:28

bonjour,

essai comme ça :
<?php
if (isset($_POST['panier']) && $_POST['panier']=='Ajouter') 
{
$id = $_POST['idpanier'];
$reference=$data['id'];
$nb=1; //par défaut la quantité est = 1
$prix=$data['budget'];
if(!isset($liste[$id]))
   $liste[$id]=array($reference,$nb,$prix);
$_SESSION['liste']=$liste;
}
?> 

Eléphanteau du PHP | 10 Messages

14 janv. 2009, 16:26

Non j'ai déjà essayé comme ceci et si je fais ça, je ne peux mettre qu'un bien dans le panier
ce que ce voudrait c'est mettre plusieurs biens dans le panier mais la quantité de celui ci doit être avec 1 au maximum
Modifié en dernier par Botitine le 14 janv. 2009, 16:29, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 janv. 2009, 16:28

Modération :
Botitine, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 10 Messages

14 janv. 2009, 16:31

Non zeus il n'est pas résolu :wink:
Ce code ne me permet que de mettre un biens dans le panier moi ce que je voudrais c'est qu'il n'autorise qu'une quantité par biens

ViPHP
ViPHP | 2287 Messages

14 janv. 2009, 16:38

Non j'ai déjà essayé comme ceci et si je fais ça, je ne peux mettre qu'un bien dans le panier
ce que ce voudrait c'est mettre plusieurs biens dans le panier mais la quantité de celui ci doit être avec 1 au maximum
La solution qu'il te propose est pourtant bonne. Il faut peut-être que tu adaptes également le parcours de ce tableau (un foreach conviendrait bien) à la lecture car ce n'est pas exactement la même structure.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphanteau du PHP | 10 Messages

14 janv. 2009, 16:47

Oui je viens de vérifier j'ai un petit soucis avec mon code dans panier.php c'est bon merci de votre aide

Nouveau probleme... ça ne passe pas sous iexplorer... quelqu'un pourrait encore m'aider ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

14 janv. 2009, 17:56

PHP étant un langage côté serveur, son fonctionnement ne dépend pas du navigateur.

En revanche, le HTML généré par ton code PHP peut...

Eléphanteau du PHP | 10 Messages

14 janv. 2009, 20:08

Lol je ne pense pas que ce soit mon code...
Sous iexplorer mon panier est toujours vide :shock:
J'ai vérifié mon navigateur et les paramétres m'ont l'air ok...