[resolu]Problème de variable

Problème de variable [resolu] - PHP - Programmation

Marsh Posté le 20-02-2006 à 14:38:04    

C'est encore moi :D Prêt à me faire hari kiri une deuxieme fois... J'ai amélioré le code précédent, mais voilà j'ai un problème : curieusement ma variable $categorie ne veut pas s'inscrire dans la BD... alors que lors de la vérification (if (isset...)) la variable est bien transmise par le formulaire, elle n'est plus utilisable qques lignes plus bas. Voilà le code :
 

Code :
  1. <?php
  2. $erreur=0;
  3. $contenu_manquant=0;
  4. $categorie_manquante=0;
  5. If (isset($_POST['contenu'])) { $contenu=$_POST['contenu']; }
  6. else { $contenu="";}
  7. If (isset($_POST['categorie'])) { $categorie=$_POST['categorie']; }
  8. else { $categorie=""; }
  9. If (isset($_POST['validation'])) { $validation=$_POST['validation']; }
  10. else { $validation=0; }
  11. If ($validation==1)
  12. {
  13. If ($categorie="" )
  14. {
  15. $erreur=1;
  16. $categorie_manquante=1;
  17. }
  18. If ($contenu=="" )
  19. {
  20. $erreur=1;
  21. $contenu_manquant=1;
  22. }
  23. If ($erreur==0)
  24. {
  25. mysql_connect('localhost','root','');
  26. mysql_select_db('annonces');
  27. $date='01/02/2006';
  28. $utilisateur='Makenshi';
  29. $request=mysql_query("SELECT localisation, mail, nbannonces FROM users WHERE pseudonyme='$utilisateur'" );
  30. $data=mysql_fetch_assoc($request);
  31. $localisation=$data['localisation'];
  32. $mail=$data['mail'];
  33. $nbannonces=$data['nbannonces'];
  34. $nbannonces=$nbannonces+1;
  35. $changenbannonces=mysql_query("UPDATE users SET nbannonces=".$nbannonces." WHERE utilisateur=".$utilisateur);
  36.  If ($nbannonces<10) { $nbannonces='0000'.$nbannonces; }
  37.  If ($nbannonces>=10 AND $nbannonces<100) { $nbannonces='000'.$nbannonces; }
  38.  If ($nbannonces>=100 AND $nbannonces<1000) { $nbannonces='00'.$nbannonces; }
  39.  If ($nbannonces>=1000 AND $nbannonces<10000) { $nbannonces='0'.$nbannonces; }
  40. $nomannonce=$utilisateur.'_'.$nbannonces;
  41. $request="INSERT INTO annonces(id, nomannonce, categorie, utilisateur, localisation, contenu, mail, date) VALUES('','$nomannonce','$categorie','$localisation','$utilisateur','$contenu','$mail','$date')";
  42. $query=mysql_query($request);
  43. mysql_close();
  44. }
  45. }
  46. echo '<form method=post action=plop.php>';
  47. echo 'Sélectionnez une catégorie : <br /><select name=categorie>';
  48. echo '<option value=immobilier_achat>Immobilier (achat)</option>';
  49. echo '<option value=immobilier_vente>Immobilier (vente)</option>';
  50. echo '<option value=immobilier_demande_location>Immobier (demande de location)</option>';
  51. echo '<option value=immobilier_location>Immobilier (location)</option>';
  52. echo '</select><br />Texte de l\'annonce :<br />';
  53. echo '<textarea name=contenu rows=5 cols=20 maxlengh=2000>'.$contenu.'</textarea><br />';
  54. echo '<input type=hidden name=validation value=1>';
  55. echo '<input type=submit></form>';
  56. ?>


Message édité par Yagmoth le 20-02-2006 à 15:57:20
Reply

Marsh Posté le 20-02-2006 à 14:38:04   

Reply

Marsh Posté le 20-02-2006 à 15:02:33    

t'as vérifié ce que te retourne mysql_query? [:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 15:05:27    

skeye a écrit :

t'as vérifié ce que te retourne mysql_query? [:dawao]


 
ben via PHPmyAdmin, toutes les variables sont insérées, sauf $categorie... Et bizarrement si par exemple je met un $categorie='machin'; entre la ligne 47 et 48, ca m'insère bien la variable... donc j'ai vraiment du mal à comprendre :D

Reply

Marsh Posté le 20-02-2006 à 15:07:26    

Fais un echo $request au lieu du mysql_query, pour voir...[:god]


Message édité par skeye le 20-02-2006 à 15:08:05

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 15:14:12    

INSERT INTO annonces(id, nomannonce, categorie, utilisateur, localisation, contenu, mail, date) VALUES('','Makenshi_00011','','Alsace','Makenshi','plop','a@a.com','01/02/2006')
 
Mmmm mais ca viens d'où ? :)

Message cité 1 fois
Message édité par Yagmoth le 20-02-2006 à 15:15:59
Reply

Marsh Posté le 20-02-2006 à 15:20:26    

Et si tu exécutes ça dans phpmyadmin ça marche? [:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 15:22:49    

skeye a écrit :

Et si tu exécutes ça dans phpmyadmin ça marche? [:dawao]


 
Oui :)

Reply

Marsh Posté le 20-02-2006 à 15:25:04    

pas possible.[:dawao]
Soit tout est inséré, soit rien, mais pas des morceaux, si la requête générée fonctionne.[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 15:29:30    

skeye a écrit :

pas possible.[:dawao]
Soit tout est inséré, soit rien, mais pas des morceaux, si la requête générée fonctionne.[:pingouino]


 
 
Ben justement je ne comprend pas  :pt1cable:  c'est la seule variable à ne pas fonctionner, les autres sont transmises sans problème, tout roule...bon je vais tester en introduisant la variable $categorie jusqu'a voir où elle ne fonctionne plus :p

Reply

Marsh Posté le 20-02-2006 à 15:30:52    

euh oui mais non.
Recommence, c'est tout simplement pas possible ce que tu racontes.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 15:30:52   

Reply

Marsh Posté le 20-02-2006 à 15:35:22    

skeye a écrit :

euh oui mais non.
Recommence, c'est tout simplement pas possible ce que tu racontes.:o


 
Ben euh... Si je met un $categorie='machin'; avant le If (validation==1), la variable ne passe pas. Alors que si je la met entre le If (validation==1) et la requete, ca marche :D
 
Idem : si au même endroit après le If je met un echo $categorie, ca me renvoie rien, alors qu'echo $contenu fonctionne.


Message édité par Yagmoth le 20-02-2006 à 15:41:30
Reply

Marsh Posté le 20-02-2006 à 15:49:52    

Yagmoth a écrit :

INSERT INTO annonces(id, nomannonce, categorie, utilisateur, localisation, contenu, mail, date) VALUES('','Makenshi_00011','','Alsace','Makenshi','plop','a@a.com','01/02/2006')
 
Mmmm mais ca viens d'où ? :)


Y'a rien dans categorie, là.


---------------
MZP est de retour
Reply

Marsh Posté le 20-02-2006 à 15:52:12    

Code :
  1. If ($categorie="" )
  2.     {
  3.     $erreur=1;
  4.     $categorie_manquante=1;
  5.     }


 
Tu affectes une chaine vide à $categorie, au lieu de verifier qu'elle est vide. L'affectation ayant bien fonctionnée, elle de dit vrai. :o


---------------
MZP est de retour
Reply

Marsh Posté le 20-02-2006 à 15:52:34    

Ha tiens, j'aurais p-e dû la regarder, sa requête...[:god]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 15:53:29    

cinocks a écrit :

Y'a rien dans categorie, là.


 
Ben oui justement :D Quand j'exécute la requête, normalement il devrait récupérer la variable $categorie définie plus haut, au même titre que la variable $contenu qui elle est bien prise en compte... Et quand je vérifie si la variable passe bien au travers du code, il n'y a pas de problème avec $contenu, alors qu'il y a un problème avec $categorie (qui n'est plus reconnue à partir du If (validation==1)).
 
 
Bon j'ai bien trouvé une solution, c'est de redéfinir plus bas catégorie en refaisant un $categorie=$_POST['categorie']; ce qui marche bien, mais je ne comprend toujours pas pourquoi l'une des deux variables ne passe pas  :pt1cable:

Reply

Marsh Posté le 20-02-2006 à 15:55:01    

C'est n'importe quoi. Il faut chercher l'erreur quand il y en a une plutôt que de la masquée. :o
Elle est tres simple. Encore plus simple puisque je l'ai donné :p
 
debug en pas à pas, ca a du bon pour trouver.

Message cité 1 fois
Message édité par cinocks le 20-02-2006 à 15:55:32

---------------
MZP est de retour
Reply

Marsh Posté le 20-02-2006 à 15:56:01    

cinocks a écrit :

C'est n'importe quoi. Il faut chercher l'erreur quand il y en a une plutôt que de la masquée. :o
Elle est tres simple. Encore plus simple puisque je l'ai donné :p
 
debug en pas à pas, ca a du bon pour trouver.


 
Merci ;) (je n'avais pas vu ta réponse entre les deux posts)

Reply

Marsh Posté le 20-02-2006 à 15:56:18    

;)


---------------
MZP est de retour
Reply

Sujets relatifs:

Leave a Replay

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