louli2
Messages postés8Date d'inscriptionjeudi 26 janvier 2006StatutMembreDernière intervention 6 juin 2006
-
6 juin 2006 à 00:58
hlimaiem
Messages postés106Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention17 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>
<?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...)*/
?>
----
hlimaiem
Messages postés106Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention17 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 .
pastis51forever
Messages postés172Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 8 septembre 20061 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.
louli2
Messages postés8Date d'inscriptionjeudi 26 janvier 2006StatutMembreDerniè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
louli2
Messages postés8Date d'inscriptionjeudi 26 janvier 2006StatutMembreDerniè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>
louli2
Messages postés8Date d'inscriptionjeudi 26 janvier 2006StatutMembreDerniè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
pastis51forever
Messages postés172Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 8 septembre 20061 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
louli2
Messages postés8Date d'inscriptionjeudi 26 janvier 2006StatutMembreDerniè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])
pastis51forever
Messages postés172Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 8 septembre 20061 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
hlimaiem
Messages postés106Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention17 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