Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1207 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Panier en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Panier en PHP

n°1031917
Loizo
Posté le 31-03-2005 à 23:35:01  profilanswer
 

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...
 

Code :
  1. $_SESSION['panier'] = array();


 
Ensuite quand l'utilisateur clic sur ajouter au panier je fais ceci :
 

Code :
  1. $nbElem=count($_SESSION['panier']);
  2. $_SESSION['panier'][$nbElem] = $idProduit;


 
Voila deja je pense que c'est n'importe quoi mais je nage désolé :(
Si vous pouviez m'aider ca serai vraiment sympas :jap:  
 
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
mood
Publicité
Posté le 31-03-2005 à 23:35:01  profilanswer
 

n°1031921
KangOl
Profil : pointeur
Posté le 31-03-2005 à 23:37:23  profilanswer
 

$_SESSION['panier'][$nbElem] = $idProduit;
 
c'est plutot le contraire...
$_SESSION['panier'][$idProduit] = $nbElem;


---------------
Nos estans firs di nosse pitite patreye...
n°1031926
Loizo
Posté le 31-03-2005 à 23:42:38  profilanswer
 

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 :(

n°1031934
KangOl
Profil : pointeur
Posté le 31-03-2005 à 23:46:58  profilanswer
 

au fait je te proposait de mettre la quantitée achetée a la nieme place (id du produit -> unique)


---------------
Nos estans firs di nosse pitite patreye...
n°1031936
Loizo
Posté le 31-03-2005 à 23:47:26  profilanswer
 

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 :
  1. $nbAnnonce = count($_SESSION[panier]);
  2. echo $nbAnnonce;


 
Ca m'affiche 0 et donc a priori mon tableau est vide

n°1031983
benamoubea​ch
tivuplai
Posté le 01-04-2005 à 00:20:21  profilanswer
 

je penses que dans ta session tu devrais sauvegardé ton tableau sérialisé, ce qui est plus simple :)

n°1031986
Loizo
Posté le 01-04-2005 à 00:23:43  profilanswer
 

Tu veut dire quoi par sauvegarder mon tableau sérialisé ?

n°1031988
benamoubea​ch
tivuplai
Posté le 01-04-2005 à 00:24:46  profilanswer
 

va voir du coté de  
 
serialize()
et  
unserialize()  
 
ca permet de linéariser un tableau/objet

n°1032038
cerel
Posté le 01-04-2005 à 08:03:16  profilanswer
 

Pour metre un element dans un tableau, a la prochaine "case vide", il suffit de faire comme ca :

Code :
  1. var $tab = array();
  2. $tab[]="Un premier element";
  3. $tab[]="Un deuxieme element";


 
Donc ce que tu peux faire :

Code :
  1. session_start();
  2. if (!isset($_SESSION['panier']) { // le panier n'existe pas encore
  3.   $_SESSION ['panier']= array();  // creation d'un panier vide
  4. }
  5. // ...
  6. // ajout d'un article au panier
  7. $articleid = getArticleId(); // ici je te laisse recuperer l'id de ton article
  8. $panier = &$_SESSION['panier']; // ici panier pointe vers le panier  
  9.                                 // qui se trouve dans la session
  10. $panier[] = $articleid;         // on mets notre article dans le panier
  11. // ...


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.

n°1032078
Loizo
Posté le 01-04-2005 à 09:01:09  profilanswer
 

Cool, merci pour ton aide, je test ca en rentrant de cours a midi ! Et je vous dis si ca marche, merci :)

mood
Publicité
Posté le 01-04-2005 à 09:01:09  profilanswer
 

n°1032192
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 10:42:21  profilanswer
 

cerel a écrit :

Pour metre un element dans un tableau, a la prochaine "case vide", il suffit de faire comme ca :  
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.


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é.

n°1032204
soju
One shot !
Posté le 01-04-2005 à 10:53:59  profilanswer
 

benamoubeach a écrit :

je penses que dans ta session tu devrais sauvegardé ton tableau sérialisé, ce qui est plus simple :)


Pas besoin :o ça se fait automatiquement, et tu peux même modifier la méthode pour linéariser/délinéariser avec session.serialize_handler

n°1032260
Loizo
Posté le 01-04-2005 à 11:40:28  profilanswer
 

Bon j'ai toujours le meme probleme, c'est a dire que quand je veux afficher mes annonces ca foire :
 
Script AjoutPanier

Code :
  1. $panier = &$_SESSION['favoris'];
  2. $panier[] = $_GET['id'];
  3. echo $_SESSION['favoris'][0]; //Affiche bien le numero de l'annonce


 
AffichagePanier

Code :
  1. $nbAnnonce = count($_SESSION['favoris']);
  2. echo $nbAnnonce; //Affiche 0


 
Je ne comprend vraiment pas, on dirait que ma session ne stocke rien du tout c'est tres bizzare...


Message édité par Loizo le 01-04-2005 à 11:40:51
n°1032265
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 11:43:48  profilanswer
 

utilise print_r($_SESSION) tu verras ce qu'il y a dans ta session.

n°1032270
Loizo
Posté le 01-04-2005 à 11:47:39  profilanswer
 

Ca m'affiche ca :
 
Dans AjoutPanier
1er ajout

Code :
  1. Array ( [favoris] => Array ( [0] => 1 ) )


2eme ajout

Code :
  1. Array ( [favoris] => Array ( [0] => 7 ) )


 
Dans AffichePanier

Code :
  1. Array ( [login] => Nesta [pwd] => f60acd6991c212d2881fc542bab5fd10 [id] => 2 [type] => Membre [favoris] => Array ( ) )


 
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)

n°1032278
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 11:50:50  profilanswer
 

tu es sur que tu as placer un session_start() lors de l'ajout ?

n°1032280
Loizo
Posté le 01-04-2005 à 11:52:18  profilanswer
 

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 :)

n°1032281
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 11:52:55  profilanswer
 

no soucy

n°1032286
Loizo
Posté le 01-04-2005 à 11:56:57  profilanswer
 

Juste pour info, on a pas le droit de faire ca :
 

Code :
  1. for ($i=0; $i<$nbAnnonce; $i++)
  2. {
  3.     $resultat=mysql_query("SELECT * From Annonce Where Ref=".$_SESSION['favoris'][$i])
  4.     or die ("erreur requete fav" );
  5.     ...
  6. }


 
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

n°1032290
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 12:00:53  profilanswer
 

Tu as fais une connexion mysql dans un include présent sur toute tes pages?

n°1032293
Loizo
Posté le 01-04-2005 à 12:03:25  profilanswer
 

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.

n°1032295
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 12:04:31  profilanswer
 

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


Message édité par Berceker United le 01-04-2005 à 12:04:54
n°1032299
Loizo
Posté le 01-04-2005 à 12:08:00  profilanswer
 

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...

n°1032301
Berceker U​nited
PSN : berceker_united
Posté le 01-04-2005 à 12:10:23  profilanswer
 

Loizo a écrit :

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...


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.

n°1032302
soju
One shot !
Posté le 01-04-2005 à 12:10:24  profilanswer
 

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

n°1032307
Loizo
Posté le 01-04-2005 à 12:13:46  profilanswer
 

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é :D
Merci en tout cas tout marche maintenant, mon site est donc finis cool :) Thx !!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Panier en PHP

 

Sujets relatifs
Faire des sessions PHP sur un compte gratuit FreeScript PHP comment recuperer la main rapidement
Prévisions météo en PHP ?Script PHP
AGENDA PHPQu'est ce que le PHP?
HTTPS, panier ... comment ca marche[PHP] Probleme tout simple.
caddie/panier PHP ?[PHP] Question sur cookie + panier de site web commercial
Plus de sujets relatifs à : Panier en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR