sessions et insertion dans la bd

sessions et insertion dans la bd - PHP - Programmation

Marsh Posté le 08-12-2004 à 20:11:29    

bonsoir,  
voila mon ptit soucis
en fait, C la derniere page d'un site de vente en ligne, elle appelle une fonction, qui elle, est chargée d'inserer dans la base de donne les coordonnees du clients et ses achats via les sessions, mais le soucis C que si le client actualise la page alors, il va inserer une nouvelle commande identique.
(je ne veux pas detruire la session apres cette fonction parce que l'utilisateur peut avoir envie de changer son mode de paiement).
 
alors j'avais pensé faire un truc du genre :
si une commande avec le meme nom, le meme nombre d'articles,et le meme prix existe dans la bd  
alors ne rien faire
sinon inserer_commande

mais le client peut avoir envie de passer la meme commande
 
alors comment dois je m'y prendre, jouer avec les sessions toujours presentent,mon id de commande  :??:  
 
merci de votre aide :ange:


Message édité par attentio le 24-03-2005 à 20:48:29

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 08-12-2004 à 20:11:29   

Reply

Marsh Posté le 08-12-2004 à 21:11:47    

Pourquoi ne pas ajouter l'id de commande à la session tout simplement ?

Reply

Marsh Posté le 08-12-2004 à 22:07:20    

be non, je peux pas l'idee de la commande s'incremente dans la bd, il n'existe pas avant


Message édité par attentio le 08-12-2004 à 22:07:58
Reply

Marsh Posté le 08-12-2004 à 22:57:03    

ben ton idée du contyrole me parait bonne, si la commande existe déjà (meme caractéristique), tu affiche au visiteur qu'une commande identique vient d'etre passée, et un bouton pour lui permettre de valider si effectivement il veut repasser la meme...

Reply

Marsh Posté le 08-12-2004 à 22:58:52    

Oui mais non, une fois ta commande crée dans la db, qu'est ce qui t'empêche de récupérer l'id et de l'ajouter à la session ?  
 
Puis quand tu enregistres la commande, il te suffit de vérifier si un id est présent dans les données de session.

Reply

Marsh Posté le 09-12-2004 à 02:22:59    

non ca peut pas marcher :pt1cable:  
regarde
ma page a la fois  insere la commande et affiche la validation de la commande

Code :
  1. //page recap
  2. <?
  3. inserer_commande();
  4. echo'mr'.$_SESSION['nom'].' votre commande n°'.$_SESSION['commande_id'].'a bien ete enregistré.
  5. ?>


 

Code :
  1. // page fonctions
  2. <?
  3. function inserer_commande(){
  4. //insertion dans la db
  5. insert into clients ...
  6. insert into article_commande ...$prix, $mode_paiement
  7. // requete  numero de commande
  8.   if(mysql_numrows($resultat_commande)>0){
  9.   $res = mysql_fetch_array($resultat_commande);
  10.     $commande = $res['commande_id'];
  11. }
  12.   else
  13.     return false;
  14. $_SESSION['commande_id']=$commande_id
  15. } ?>


donc ce qu'il faut c'est que l'utilisateur en actualisant la page n'insere pas une nouvelle commande identique dans la db, par contre il peut revenir en arriere pour changer son mode de paiement ou meme ces articles , et la du coup, ca crera une nouvelle commande.
 
j'espere avoir été clair
 
merci


Message édité par attentio le 09-12-2004 à 02:25:35
Reply

Marsh Posté le 09-12-2004 à 02:37:36    

Là, c'est même pas un problème de php, c'est juste une question de logique :)
 
Schématiquement :

Code :
  1. function gestion_commande(){
  2. if (isset($_SESSION['commande_id'])){
  3.    update machin value truc where id = $_SESSION['commande_id']
  4. } else {
  5.    insert blablabla
  6.    $_SESSION['commande_id'] = mysql_insert_id()
  7. }
  8. }


 
(et sépare la validation de l'affichage du message de validation)

Reply

Marsh Posté le 09-12-2004 à 02:44:53    

oui en effet ... je dois etre torturé ... ca parait si simple maintenant !
merci a toi


Message édité par attentio le 09-12-2004 à 02:45:28
Reply

Marsh Posté le 09-12-2004 à 15:05:55    

oui mais probleme !
si je fais un
update commande value truc where id = $_SESSION['commande_id']
et que le client decide de mettre d'autres articles dans son caddie, l'update ne va ajouter ces articles dans la table commande.
comment dois je m'y prendre ... est ce que le mieux serais de supprimer ces articles dont le numero de commande est =ID puis les inserer de nouveau.
 
merci de votre aide
 

Reply

Marsh Posté le 09-12-2004 à 18:43:24    

ou de flager les articles commandés déjà encodé d'une manière ou d'une autre (préférable à la suppression/insertion à mon avis).

Reply

Marsh Posté le 09-12-2004 à 18:43:24   

Reply

Marsh Posté le 09-12-2004 à 19:39:37    

qu est ce que tu appellle "FLAGER"???

Reply

Marsh Posté le 09-12-2004 à 20:24:14    

flager, du verbe anglais "to flag" marquer, signaler. En clair, ajouter une variable à ta session qui indique si l'article a déjà été encodé. Le comment dépend de la manière dont tu gères tes commandes dans ta bd :)

Reply

Marsh Posté le 10-12-2004 à 11:35:43    

à croire que notre ami attentio n'a jamais fait de CTF (capture the flag) à Quake... :D


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 11:44:31    

au lieu de detruire la session, tu detruis simplement le caddie tout simplement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed