probleme avec une variable de session - PHP - Programmation
Marsh Posté le 05-10-2004 à 17:30:30
Bon, là, faudrait quand même que tu lises les réponses qu'on te donne à tes (nombreux) autres topics concernant le même problème :
Comment veux tu que php utilise $_SESSION['prix_général'] à la ligne 12 alors qu'il ne sera défini qu'à la ligne 16 de recap.php ? Si tu as toujours pas compris où est le problème, sérieux, on peut absolument rien pour toi.
Marsh Posté le 05-10-2004 à 18:05:30
je suis desolé .. je les ai lu ... mais moi etre debutant donc moi pas toujours comprendre du premier coup
alors si je comprends a peu pret :
cela signifie que je dois metre prix_general avant le if, non???
ce qui donne :
Code :
|
mais si je fais ca j'ai un Undefined variable: test dans la fonction inserer_commande et le calcul ne se fait donc plus dans affiche_somme_total();
...(mais qu'il est bete!!!...mais qu'il est bete!!!)
voila, donc explique moi precisemment ce que je dois faire(tu me l'a sans doute deja expliqué)mais ne comprends pas ( rassure toi : G tous les neuronnes ! )
merci encore a toi de ta patience
Marsh Posté le 05-10-2004 à 19:15:42
Non, mais c'est la logique même de ton script qui est boiteux, ça ira presque plus vite de le recommencer que de le corriger
Regarde :
1. Tu insères ta commande en utilisant $_SESSION['prix_general'] mais tu ne définis celui çi qu'après l'insertion
2. En calculant $_SESSION['prix_general'] comme tu le fais dans ta réponse, tu utilises $livraison qui ne sera lui aussi défini que plus tard
3. Ton $test ne sert strictement à rien dans ta fonction, il est normal que php ne le trouve pas, tu ne le passes ni en argument, ni comme variable globale.
4. Pas la peine de passer $_POST comme argument d'une fonction, c'est un tableau global
5. C'est plus rapide de faire if(inserer_commande()) que if(inserer_commande()!=false)
6. print_r est une instruction provoquant un affichage, mettre un echo juste devant ne sert pas à grand chose
Bref, reprends les choses depuis une page blanche et fait les choses dans l'ordre :
a)De quoi as-tu besoin pour l'insertion dans la db ?
b)Qu'est ce que tu as déjà au début du script et que dois-tu calculer ? As-tu les infos qu'il te faut pour les calculs ?
c)Au moment de l'insertion, as-tu toutes les données que tu as listée en a ?
Et en y allant étape par étape, tu comprendras mieux ce que tu fais, pourquoi tu dois le faire (et ce sera bien mieux pour le futur que si je te donne une solution toute faite )
Marsh Posté le 05-10-2004 à 20:16:46
MERCI ... C vraiment gentil !!!
bilan des choses (dis moi ce qu'il va pas):
1 - en ce qui concerne la page recap.php
J'ai fait
Code :
|
...bien entendu ca m'ecrit "ca marche pas" .j'ai poutant mis les choses a plat comme tu m'as conseillé(j'ai meme parlé a voix haute )
rien a faire!!!
2 - en ce qui concerne print_r, je savais pas ...merci!
3 - j'ai viré mon $test qui en effet ne servait a rien
.... etc etc
merci encore de ton aide
ps : dis moi tout
Marsh Posté le 05-10-2004 à 20:57:07
7. utilise mysql_insert_id à la place du select et du test dans la fonction inserer_commande (j'imagines que tu veux récupérer l'id de la ligne que tu viens d'ajouter ? )
Bon, pour ton problème, est ce que ton enregistrement est bien inséré dans ta db ? si non, fait un echo du $query d'insertion pour vérifier que la requête est correcte, si oui, euh, le remplacement suggéré en 7 devrait résoudre le problème
Marsh Posté le 05-10-2004 à 21:34:25
... et bien en faite mon enregistrement ne peut etre inséré comme c'est des l'ouverture de la page recap.php (celle qui affiche le recapitulatif de la commande)que ca bug ... chose que je n'avait pas avant quand tout etait dans le if( inserer_commande($_POST)) ... je vois pas
Marsh Posté le 05-10-2004 à 21:49:10
et si je remplace le select par mysql_insert_id j'ai un
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource
Marsh Posté le 05-10-2004 à 22:10:01
attentio a écrit : ... et bien en faite mon enregistrement ne peut etre inséré comme c'est des l'ouverture de la page recap.php (celle qui affiche le recapitulatif de la commande)que ca bug ... |
Oui, bon, et le echo de la requête il donne quoi ?
Citation : et si je remplace le select par mysql_insert_id j'ai un |
RTFM
mysql_insert_id remplace TOUTE ta structure select + test
Là, à l'heure actuelle, ton code devrait être
Code :
|
Marsh Posté le 05-10-2004 à 22:31:34
et bien en fait je ne vois pas vraiment de koi tu parles quand tu me kose de test etant donné que je l'ai viré comme elle servait a rien
ma fonction est un peu plus complexe que ca, la voici dans son integralité (avec des selects)
Code :
|
Marsh Posté le 05-10-2004 à 23:01:56
Non mais là, ça devient n'importe quoi, je veux bien aider, mais faudrait voir à pas te foutre du monde non plus, on ne va pas deviner les infos que tu juges pas utile de donner...
Et tu peux garder ce genre de commentaire :
Citation : |
parce que mon ami, je te kosais du test (oui, un IF c'est à ça que ça sert...), pas d'une variable $test...
Marsh Posté le 06-10-2004 à 00:09:25
je suis vraiment désolé ...je pensais bien faire en ne mettant pas toute la fonction(15 km de code ca peut effrayer) quant au test on s'est mal compris ... excuse moi ...
Marsh Posté le 06-10-2004 à 02:04:17
...pour en revenir a mon probleme (si tu est bien daccord pour m'aider,STP )je ne pense pas que ca vienne de inserer_commande mais plutot de cette foutue variable prix_general:
avant j'avais :
Code :
|
...tout marchait, sauf qu'il ne m'inserais que la somme du caddie
donc maintenant G un truc du genre
Code :
|
... et il me fait un sale coup
donc petite reflexion de ma part, est ce que ca ne peut pas venir des arguments passés dans la fonction? parce que $_post recupere actuellement les donnees qui ont ete precedament passé dans un formulaire
ancien code complet de la page recap.php
Code :
|
merci encore mille fois
Marsh Posté le 06-10-2004 à 03:08:01
INFORMATION POSITIVE !!!!
en fesant :
Code :
|
j'arrive a inserer une commande ...mais par contre il m'affiche toujours
'probleme avec inserer_commander'.
Marsh Posté le 05-10-2004 à 16:05:58
bonjour !
voila j'ai de grosses difficultés avec une variable de session
$_SESSION['prix_general'];
elle permet d'additionner le somme d'un caddie avec les frais de livraison.
mais voila a l'affichage tout ce passe bien grace a la fonction affiche_somme_total dans laquelle il n'y a qu'un echo $_SESSION['prix_general'];
et dans le print_r($_SESSION); de la page recap.php il recuperere bien 'prix_general'
ex :
Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 [prix_general] => 200000119 )
mais si je veux inserer inserer la commande dans ma base de donnée, tout fonctionne sauf pour $test qui est egal a $_SESSION['prix_general'];, il iinsere comme valeur 0.00
0.00 qu'on retrouve dans le caddie parce que si je ne declare pas $_SESSION['prix_general'] ='0.00'; alors ma fonction affiche_somme_total ne marche pas
j'ai un Undefined index: prix_general a la ligne $test = $_SESSION['prix_general']; de la page recap.php
et ne peut donc pas le recuperer exemple :
Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 )
voila j'espere avoir ete clair, je n'arrive pas du tout a trouver mon erreur ... merci de votre aide
ps : si vous avez besoin d'infos complementaires n'hesitez pas !
merci
Message édité par attentio le 24-03-2005 à 21:09:43
---------------
L'ordinateur a de la mémoire mais aucun souvenir ...