Panier en PHP - PHP - Programmation
Marsh Posté le 31-03-2005 à 23:37:23
$_SESSION['panier'][$nbElem] = $idProduit;
c'est plutot le contraire...
$_SESSION['panier'][$idProduit] = $nbElem;
Marsh Posté le 31-03-2005 à 23:42:38
Nan en fait j'ai un produit X, je l'ajoute dans mon panier donc dans la 1ere case libre de mon tableau.
Donc je compte le nb d'element de mon tableau, au début 0 donc je met dans la case 0 puis 1 etc etc
Mais a priori ce code ne fonctionne pas
Marsh Posté le 31-03-2005 à 23:46:58
au fait je te proposait de mettre la quantitée achetée a la nieme place (id du produit -> unique)
Marsh Posté le 31-03-2005 à 23:47:26
En fait a priori en faisant ceci mon tableau de SESSION ne sauvegarde pas les idProduit dans le tableau car si dans une autre page ou je veux afficher le panier je fais :
Code :
|
Ca m'affiche 0 et donc a priori mon tableau est vide
Marsh Posté le 01-04-2005 à 00:20:21
je penses que dans ta session tu devrais sauvegardé ton tableau sérialisé, ce qui est plus simple
Marsh Posté le 01-04-2005 à 00:23:43
Tu veut dire quoi par sauvegarder mon tableau sérialisé ?
Marsh Posté le 01-04-2005 à 00:24:46
va voir du coté de
serialize()
et
unserialize()
ca permet de linéariser un tableau/objet
Marsh Posté le 01-04-2005 à 08:03:16
Pour metre un element dans un tableau, a la prochaine "case vide", il suffit de faire comme ca :
Code :
|
Donc ce que tu peux faire :
Code :
|
Plusieurs remarques
1) Ne pas oublier que quand tu fais ton session start tu recuperes la session d'avant, il faut donc, avant de creer un panier vide, verifier s'il n'existe pas deja, histoire de pas l'ecraser ...
2) je me rappelle plus si PHP copie les objets ou utilise un pointeur par defaut. C'est pour cela que j'ai prefere definir que $panier pointais vers $_SESSION['panier']. De cette facon tous les changements faits sur $panier sont en realite faits sur $_SESSION['panier']. Comme ca ton panier sera sauve d'une page a l'autre.
Marsh Posté le 01-04-2005 à 09:01:09
Cool, merci pour ton aide, je test ca en rentrant de cours a midi ! Et je vous dis si ca marche, merci
Marsh Posté le 01-04-2005 à 10:42:21
cerel a écrit : Pour metre un element dans un tableau, a la prochaine "case vide", il suffit de faire comme ca : |
Pour la version 4 il fait une copie par défaut. pour la version 5 je ne sais pas mais je ne crois pas que cela ait changé.
Marsh Posté le 01-04-2005 à 10:53:59
benamoubeach a écrit : je penses que dans ta session tu devrais sauvegardé ton tableau sérialisé, ce qui est plus simple |
Pas besoin ça se fait automatiquement, et tu peux même modifier la méthode pour linéariser/délinéariser avec session.serialize_handler
Marsh Posté le 01-04-2005 à 11:40:28
Bon j'ai toujours le meme probleme, c'est a dire que quand je veux afficher mes annonces ca foire :
Script AjoutPanier
Code :
|
AffichagePanier
Code :
|
Je ne comprend vraiment pas, on dirait que ma session ne stocke rien du tout c'est tres bizzare...
Marsh Posté le 01-04-2005 à 11:43:48
utilise print_r($_SESSION) tu verras ce qu'il y a dans ta session.
Marsh Posté le 01-04-2005 à 11:47:39
Ca m'affiche ca :
Dans AjoutPanier
1er ajout
Code :
|
2eme ajout
Code :
|
Dans AffichePanier
Code :
|
Je ne connaissais pas cette fonction. C'est pratique
Donc a priori c'est bien ca, quand j'ajoute ca marche mais apres quand je change de page je perd ce qu'il y a dans mon tableau, c'est bizzare. (Ca ajoute toujours dans la 1ere case aussi mais bon ca c'est pas le plus grave encore)
Marsh Posté le 01-04-2005 à 11:50:50
tu es sur que tu as placer un session_start() lors de l'ajout ?
Marsh Posté le 01-04-2005 à 11:52:18
Tain cte honte
C'etait ca, en fait je ne le met jamais dans mes pages parce que j'en ai pas besoin vu que je l'ai juste mis a l'accueil et apres tout est géré par des includes. Or ici je suis dan sun script donc la session n'existe pas ! C'etait juste ca, donc maintenant ca marche !!
Merci bcp pour votre aide
Marsh Posté le 01-04-2005 à 11:56:57
Juste pour info, on a pas le droit de faire ca :
Code :
|
La premiere fois ca marche ca me met l'annonce mais apres j'ai ca : (ligne 12 c'est celle de la requete)
Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in c:\program files\easyphp1-7\www\phpfachome\listeAnnonceFav.php on line 12
Warning: mysql_query(): A link to the server could not be established in c:\program files\easyphp1-7\www\phpfachome\listeAnnonceFav.php on line 12
erreur requete fav
Marsh Posté le 01-04-2005 à 12:00:53
Tu as fais une connexion mysql dans un include présent sur toute tes pages?
Marsh Posté le 01-04-2005 à 12:03:25
Oui je me connecte bien a ma base de donnée, d'ailleur la premiere annonce s'affiche comme il faut c'est ca qui est bizzare mais on dirait qu'on ne peut pas faire plusieurs mysql_query a la suite.
Marsh Posté le 01-04-2005 à 12:04:31
Loizo a écrit : Oui je me connecte bien a ma base de donnée, d'ailleur la premiere annonce s'affiche comme il faut c'est ca qui est bizzare mais on dirait qu'on ne peut pas faire plusieurs mysql_query a la suite. |
si tu peux le faire.
Fait un echo mysql_error(); juste apres le query
Marsh Posté le 01-04-2005 à 12:08:00
Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON)
Toujours la meme chose, a priori l'erreur c'est qu'il ne trouve plus ma base de donnée, bizzare alors que la 1ere annonce s'affiche parfaitement...
Marsh Posté le 01-04-2005 à 12:10:23
Loizo a écrit : Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) |
Donc il y a bien une connexion qui n'est pas faite.
Regarde si tu ne fait pas une mysql_close quelque part et si tu as bien un include de ta connexion.
Marsh Posté le 01-04-2005 à 12:10:24
apparemment tu perds ta connex en route et il essaye de se reconnecter avec les params par défaut (cad rien), c'est peut être dû au timeout de ton serveur mysql.
essaye de faire un mysql_ping avant ta requete
Marsh Posté le 01-04-2005 à 12:13:46
Bah encore une connerie de ma part et un mysqlk_close mal placé, le pire c'est que j'avais deja eu cette erreur et j'avais finis par trouver comment l'evitant avec une grosse bidouille au bout d'une heure. C'est chiant ce genre d'erreur si on nous met pas la tete dedans on passe tjs a coté
Merci en tout cas tout marche maintenant, mon site est donc finis cool Thx !!
Marsh Posté le 31-03-2005 à 23:35:01
Bonjour,
Je voudrai faire un systeme de panier en php. Malgré les differents tuto que j'ai pu trouver sur le net je n'y arrive pas.
Tout mon site est finis et il ne me reste que ca a faire
Donc voila ce que je me demande. Je compte utiliser (logique) les variables de SESSIONS. Je ne veux stocker que les id des produits et aucune quantitée (produit unique).
LE truc c'est que j'ai du mal a utiliser les tableaux en PHP.
Donc voila mon idée :
Quand l'utilisateur se log je crée le tableau :
Deja rien que ca j'en suis pas sur...
Ensuite quand l'utilisateur clic sur ajouter au panier je fais ceci :
Voila deja je pense que c'est n'importe quoi mais je nage désolé
Si vous pouviez m'aider ca serai vraiment sympas
PS : J'ai deja vu ceci http://developpeur.journaldunet.co [...] ie1a.shtml mais ca ne m'a pas aidé... Bien au contraire
Message édité par Loizo le 31-03-2005 à 23:41:42