Prob de panier virtuel ds un site dynamique

louli2 Messages postés 8 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 6 juin 2006 - 6 juin 2006 à 00:58
hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007 - 6 juin 2006 à 14:10
Bonsoir tt le monde, voilà mon problème: je crée un site dynamique commercial chui arrrivée dans l'étape de création du panier virtuel, il me semble que le code de la page "panier.php" est exact pourtant ça m donne plusieurs message d'erreur relatifs a la definition des variable: voilà les messages d'erreur:
Notice: Undefined variable: ajoutPanier in c:\program files\easyphp1-8\www\boutiquefleur_site\public\panier.php on line 9

Notice: Undefined variable: modifPanier in c:\program files\easyphp1-8\www\boutiquefleur_site\public\panier.php on line 19

Notice: Undefined variable: suppPanier in c:\program files\easyphp1-8\www\boutiquefleur_site\public\panier.php on line 30

Notice: Undefined variable: enregistreCommande in c:\program files\easyphp1-8\www\boutiquefleur_site\public\panier.php on line 40






Notice

: Undefined variable: liste in c:\program files\easyphp1-8\www\boutiquefleur_site\public\panier.php on line 77
 et voila le code de la page :
<?php
session_start();
if (!isset($total)) session_register(\"total\");
?>
<?php require_once('../Connections/connexionboutiquefleur.php'); ?>
<?php
mysql_select_db($database_connexionboutiquefleur, $connexionboutiquefleur);
//--------------------------------------AJOUT PANIER
if ($ajoutPanier= =\"Ajouter\")
    {
 $nb=1; //par défaut la quantité est de 1
 if (!isset($liste))
        session_register(\"liste\");
 //création de la variable de session \"liste\" pour le premier article  
    $liste[]=array($reference,$nb,$prix_unit,$prix_unit);
 //ajoute un article à la liste
 }
//------------------------------------MODIF PANIER
if ($modifPanier==\"Actualiser\")
    {
 for ($i=0;$i<count($liste);$i++)
        {
     $nbi=nb.$i;
     $liste[$i][1]=$$nbi;
     $liste[$i][3]=$liste[$i][1]*$liste[$i][2];
     //prixArticle=nbre*prixunitaire
     }
 }
//--------------------------------------SUPP PANIER
if ($suppPanier==\"Supprimer\")
    {
 for ($i=0;$i<count($liste);$i++)
        {
     if($article==$i)
     array_splice($liste,$i,1);
     //supression de l'article de la liste du panier
     }
     }
//----------------------------------------COMMANDER
if ($enregistreCommande==\"Commander\")
    {
 if (!isset($action))
        session_register(\"action\");
     $action=\"Enregistre\";
     header(\"Location: commande.php\");
     }
//------------------------------------------------------------
?>
<html>
<head>
<title>panier</title>
<meta http-equiv=\"content-type\" content=\"text/html\"; charset=iso-8859-1\">
</head>

Panier

<form action =\"panier.php\" methode= \"get\">
 <table width=\"650\" border=\"1\" align=\"center\" bordercolor=\"#FF0000\">
  ----

        <table width="650" border="0" align="center">
  ----

  ,

    Titre

    </td>
         Qantit&eacute;

   ,
          Prix

  ,
       Supp

   ,
  
  <?php
  $total =0.00;// initialisation du total de la commande à 0
  for ($i=0;$i<count($liste);$i++)
   {// debut du bloc for
   $query_rsPanier=\"select * from articles where reference='\".$liste[$i][0].\"'\";
   $rsPanier=mysql_query($query_rsPanier, $connexionboutiquefleur);
   $row_rsPanier=mysql_fetch_assoc($rsPanier);
   /*definition et exécution de la requête sql afin de de récuperer les information de l'article stockés dans la base (titre...)*/
   ?>
   ----

          <?php echo $row_rsPanier['titre'] ?>

  ,
       <select name="nb<?php echo $i ?>">
     <option value="1" <?php if($liste[$i][1]==1) echo "SELECTED"; ?>>1</option>
     <option value="2" <?php if($liste[$i][1]==2) echo "SELECTED"; ?>>2</option>
     <option value="3" <?php if($liste[$i][1]==3) echo "SELECTED"; ?>>3</option>
    </select>

  ,
       <?php echo $row_rsPanier['prix_unit'] ?>

  ,
       &suppPanier=Supprimer">
    
   

  ,
  
  <?php
  $total+=$row_rsPanier[prix_unit] * $liste[$i][1];
  }//fin du bloc for
  ?>
  ----

  ,
  ,
       
    total : <?php echo $total ?> DH
  

  ,
   ,
 
 

 </td>
 </tr>
 </table>
 

 
 
 
 

  </form>
 

  

</html>
HELP ME plz
</tbody>
</table>

10 réponses

hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
6 juin 2006 à 05:13
Limaiem heykel
Pourquoi vous n'utiliser pas une variable de session contenant un tableau qui lui meme contient (vos achats)
exemple : $_SESSION['Pannier'][$i];
avec et une autre var de SESSION contenant le nombre d'achat ainsi vous pouvez enlever/ajouter/supprimer et bien sur afficher votre tableau,
tu n'aura donc besoin que d'une autre var de parcours .
0
pastis51forever Messages postés 172 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 8 septembre 2006 1
6 juin 2006 à 10:51
Ca doit etre parce que tu fais des tests sur des variables qui ne sont pas initialisées.
Dans ton php.ini, tu peux enlever l'affichage des erreurs de type notice (qui sont des erreurs "pas graves" ou qui peuvent être voulues, si mes souvenirs sont bons.)
Dans mon souvenir, c'est avec une ligne du type E_ALL ~E_NOTICE, mais tu verras ca en parcourant le fichier.
Dans tous les cas, ces messages ne devraient pas apparaitre avec ton hebergement, mais il est vrai que c'est bizarre de faire des tests sur des variables qui n'existent pas. Il est mieux de faire
if (isset($ajoutPanier) AND $ajoutPanier=="Ajouter").
Sinon, c'est vrai qu'en géñeral, la gestion des paniers est beaucoup plus simple avec les variables de session.
0
louli2 Messages postés 8 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 6 juin 2006
6 juin 2006 à 11:33
merci

hlimaiem  , si j trouve pas de solution pour ce code j vai essayer avec des variable de session (NB: chui debutante en php j nai fait qu'un petit effort pour adapter des codes.... donc jai pas vraiment la liberté de choisir mes methode
0
louli2 Messages postés 8 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 6 juin 2006
6 juin 2006 à 11:43
Merciiiiiiii
 128715 pastis51forever Aprés avoir mis   :   if (isset($ajoutPanier) AND $ajoutPanier == "Ajouter") pour les 3 variable il m'affiche plus qu'un seul msg d'erreur :

Notice : Undefined variable: liste in c:\program files\easyphp1-8\www\boutiquefleur_site\public\panier.php on line 81
voila la partie du code ou la faute est marquée:
<?php
  $total =0.00;// initialisation du total de la commande à 0

  for ($i=0;$i<count($liste);$i++) // ligne 81
   {// debut du bloc for
   $query_rsPanier="select * from articles where reference='".$liste[$i][0]."'";
   $rsPanier=mysql_query($query_rsPanier, $connexionboutiquefleur);
   $row_rsPanier=mysql_fetch_assoc($rsPanier);
   /*definition et exécution de la requête sql afin de de récuperer les information de l'article stockés dans la base (titre...)*/
   ?>
   <tr>
    <td>

      <?php echo $row_rsPanier['titre'] ?>

   </td>
   <td>

    <select name="nb<?php echo $i ?>">
     <option value="1" <?php if($liste[$i][1]==1) echo "SELECTED"; ?>>1</option>
     <option value="2" <?php if($liste[$i][1]==2) echo "SELECTED"; ?>>2</option>
     <option value="3" <?php if($liste[$i][1]==3) echo "SELECTED"; ?>>3</option>
    </select>

   </td>
   <td>

    <?php echo $row_rsPanier['prix_unit'] ?>

   </td>
   <td>

    [panier.php?article=<?php echo $i ?>&suppPanier=Supprimer
    
    ]

   </td>
  </tr>
  <?php
  $total+=$row_rsPanier[prix_unit] * $liste[$i][1];
  }//fin du bloc for

Help plz ( NB: ya le temps ki m presse et javance plus en plus j n ss k1 debutante donc mes capacité sont trop limitées )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pastis51forever Messages postés 172 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 8 septembre 2006 1
6 juin 2006 à 11:58
C'est la même erreur, la variable n'est pas déclarée avant.
Tu peux mettre, juste avant ta ligne 81:

if (!isset($liste))
$liste=array();

devrait faire l'affaire
0
louli2 Messages postés 8 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 6 juin 2006
6 juin 2006 à 12:07
merci encore une fois jai plus de msg d'erreur mais  le panier est vide mm apres la selection d'un produit pourrais je entrer en contacte directe avec vs sur msn par exemple pour mieux communiquer plz
0
pastis51forever Messages postés 172 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 8 septembre 2006 1
6 juin 2006 à 12:15
Non, desolé, je suis au boulot.
Mais la je t'ai aidée sur ca parceque tu voulais continuer dans cette voie, et pour que tu saches gérer ce genre d'erreur, mais je te conseille quand meme vivement de faire ca avec les sessions, tu verras que c'est beaucoup plus efficace et rapide.
Tu devrais chercher sur ce meme site avec comme mots clés "gestion de panier", et tu verras qu'il y a de quoi apprendre.
Par contre, n'hesite pas, avant de tout prendre pour argent comptant, a lire les commentaires en dessous, ca te permettra de choisir un exemple de qualité.
Si tu veux quand meme rester sur ta solution, dis le moi, je regarderais plus en detail ton source, mais il faut savoir que les sessions sont faites pour ca, et que c'est rapide a comprendre

Brice
0
louli2 Messages postés 8 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 6 juin 2006
6 juin 2006 à 12:36
ok, ben j'aimerai b1 continuer avec c code voila klk explications selon ce que jai lu dans l livre sur lekel j me base :
les informations  relatives aux articles séléctionnés par l'utilisateur sont mémorisé dans des variables de session. Pour cela , on va utiliser une variable de type tableau ($liste[]) pour mémoriser toutes les informations de la liste du panier virtuel. ce premier tab contient lui mm autant de variable de type tableau qu'il y a d'articles à mémoriser ([x]: identifiant de chak article). Chak tableau d'article mémorise quant a lui quatre informations differentes ([y]=0 : reference [y]=1: quantité, [y]=2:prix_unit, [y]=3: prix total ===> donc la structure de tableau est  : ($liste[x][y])
0
pastis51forever Messages postés 172 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 8 septembre 2006 1
6 juin 2006 à 13:14
Pour l'acces aux variables de sessions, tu devrais utiliser le tableau
$_SESSION[], plus sur.
Moi ce que je ferais:
Chaque fois que le client choisit un nouveau produit, je mettrais simplement:
$_SESSION['panier'][]=array($id_du_produit,$quantite,$prix_unitaire);
Pour faire le calcul final, tu peux faire une boucle:
foreach ($_SESSION['panier'] as $article)
{
$total=$total+$article[2]*$article[1] //($article[2]=quantité,$article[1]=prix unitaire)
}
Pour supprimer un article, tu utilise la fonction unset sur l'element du tableau
0
hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
6 juin 2006 à 14:10
Limaiem heykel,
Je m'execuse pour le retard et (ma reponse n'etait aps tres clair j'etait fatiguer) Bon je vus assure que php permet de manipuler des tableaux entierement dynamique dnc t'est pas obliger de definir une limite de taille pour le panier.
Tu aura donc besoin de  2 variables :

 $comp= $_SESSION['compteur'];//var contenant le nombre de lignes de votre tabeleau donc tu 'initialise a 1 ou 0 au debut
$_SESSION['panier][$comp] = "produit1"; $com ++;
$_SESSION['panier][$comp] = "produit2"; $com ++;
$_SESSION['panier][$comp] = "produit3"; $com ++;
$_SESSION['compteur'] = $comp;
ainsi ds une autre page tu pourrai faire :
session_start();
$comp = $_SESSION['compteur'];
for ($i=1 ; $i<=$comp;$i++){
echo $_SESSION['panier][$i];
}
....
tu pourrait faire toute sorte de manipulation.
J'espere vous avoir donne une meilleur ideee que ce matin.
Bonne continuation
0
Rejoignez-nous