Page 1 sur 1

N'autoriser qu'une seule fois un produit dans une selection

Posté : 14 janv. 2009, 12:02
par Botitine
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

Posté : 14 janv. 2009, 14:28
par edison1986
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;
}
?> 

Posté : 14 janv. 2009, 16:26
par Botitine
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

Posté : 14 janv. 2009, 16:28
par zeus
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.

Posté : 14 janv. 2009, 16:31
par Botitine
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

Posté : 14 janv. 2009, 16:38
par Calimero
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.

Posté : 14 janv. 2009, 16:47
par Botitine
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 ?

Posté : 14 janv. 2009, 17:56
par albat
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...

Posté : 14 janv. 2009, 20:08
par Botitine
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...