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

  FORUM HardWare.fr
  Programmation
  PHP

  Parse error dans code PHP/MySQL correct

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parse error dans code PHP/MySQL correct

n°1472349
kwaio
Posté le 08-11-2006 à 15:49:40  profilanswer
 

Bonjour à tous.
Je m'essaie à la programmation php/mysql.
J'ai décidé de créer un script simple ou une perosnne pourrait donner des idées de cadeaus
La page est donc constituée du formulaire et ensuite du tablerau des resultats.
Ne faites pas attention à tout ce qui va avec "valid" sauf si l'erreur vien de là.
 
En effet, j'obtiens :  
[Plus d'erreurs]
 

Code :
  1. <!DOCTYPE HTML public "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.   <head>
  4.     <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  5.     <meta name="generator" content="PSPad editor, www.pspad.com">
  6.     <title>
  7.     </title>
  8.   </head>
  9.   <body>
  10. <?php
  11. //$user=*****;
  12. //$passwd=***** ;
  13. //$host=sql.free.fr ;
  14. //$bdd=***** ;
  15. $user='root' ;
  16. $passwd='' ;
  17. $host='localhost' ;
  18. $bdd='stnic' ;
  19. // Connexion au serveur
  20. $connect = mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur" );
  21. $connect;
  22. mysql_select_db($bdd) or die('Selection de la base de données non effectuée : '.mysql_error());
  23. //definition des variables
  24. $nom = $idee1 = $idee2 = $idee3 = $row = '';
  25. //$valid = 0; (inutile))
  26. //mise à jour des valeurs
  27. $nom = $_POST['nom'];
  28. $idee1 = $_POST['idee1'];
  29. $idee2 = $_POST['idee2'];
  30. $idee3 = $_POST['idee3'];
  31. //Verif du remplisage
  32. if ($nom != "" && $idee1 != "" )
  33. {
  34. // Requete d'insertion MYSQL
  35. $requete = "INSERT INTO stnic VALUES ($nom,$idee1,$idee2,$idee3)";
  36. // Execution de cette requete dans la base stnic
  37. $execution = mysql_query($requete,$connect);
  38. $execution;
  39. echo "<font face='Arial' size='2'>Votre demande a été ajoutée. </font>";
  40. }
  41. else
  42. {
  43. echo"Merci de remplir au minimum les deux premi&egrave;res cases.<br>";}
  44. //Affichage du formulaire
  45. echo "<br>
  46. <form method=post action=index.php>\n
  47. Ton nom  : <INPUT type=text size=40 name=nom><br>\n
  48. Idée n°1 : <textarea rows=3 cols=40 name=idee1></textarea><br>\n
  49. Idée n°2 : <textarea rows=3 cols=40 name=idee2></textarea><br>\n
  50. Idée n°3 : <textarea rows=3 cols=40 name=idee3></textarea><br>\n
  51. <!-- <INPUT TYPE=checkbox NAME=valid VALUE=1>*<BR>\n -->
  52. <INPUT TYPE=submit VALUE=\"J'ai choisi !\">\n
  53. </form>\n
  54. ";
  55. //Tableau
  56. // Creation et envoi de la requete
  57. $query = "SELECT nom,idee1,idee2,idee3 FROM stnic ORDER BY nom" ;
  58. $result2 = mysql_query($query);
  59. // Recuperation des resultats
  60. echo"<table border='1' width='100%'> \n
  61. <tr>\n
  62. <td>Nom</td>\n
  63. <td>Idée n°1</td>\n
  64. <td>Idée n°2</td>\n
  65. <td>Idée n°3</td>\n
  66. </tr>\n
  67. ";
  68. // Recuperation des resultats
  69. while($row = mysql_fetch_row($result2))
  70. {
  71. $nom = $row[0];
  72. $idee1 = $row[1];
  73. $idee2 = $row[2];
  74. $idee3 = $row[3];
  75. echo "
  76. <tr>\n
  77. <td>$nom</td>\n
  78. <td>$idee1</td>\n
  79. <td>$idee2</td>\n
  80. <td>$idee3</td>\n
  81. </tr>\n";
  82. };
  83. mysql_close();
  84.     ?>
  85.   </body>
  86. </html>


 
Voilà, si vous voyez le probleme...


Message édité par kwaio le 08-11-2006 à 18:09:31
mood
Publicité
Posté le 08-11-2006 à 15:49:40  profilanswer
 

n°1472354
chani_t
From Dune
Posté le 08-11-2006 à 15:50:59  profilanswer
 

tu as un ; tout seul en ligne 50...

n°1472355
kwaio
Posté le 08-11-2006 à 15:51:47  profilanswer
 

ça gène ?
apparement non, je l'ai supprimé, aucune différence.


Message édité par kwaio le 08-11-2006 à 15:52:15
n°1472366
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 08-11-2006 à 15:57:50  profilanswer
 

Alors déja ca ne se fait pas de définir des $_POST ... et encore moins les utiliser dans une requete mysql !!!
 
Il faut que tu les enregistres dans des vrai variables ($nom = $_POST['nom']; ...) et que tu remplaces les moches $_POST['xxx'] de ta requete par les nouvelles variables !
 
Deuzio pour déclarer tes variables je te conseille de faire ca :
 
$nom = $idee1 = $idee2 = $idee3 = $row = '';
 
Enfin il vaut mieux déclarer $valid comme nombre et non pas comme une chaine de caractère en supprimant les '' :
 
$valid = 0;
 
EDIT : Pour vider les $_POST, au lieu de faire ton truc tout moche, fais un $_POST = array();


Message édité par WiiDS le 08-11-2006 à 15:59:11
n°1472374
kwaio
Posté le 08-11-2006 à 16:00:40  profilanswer
 

J'vais essayer tout ça et j'vous dit quoi !
Merci à vous, j'débute ^^

n°1472376
chani_t
From Dune
Posté le 08-11-2006 à 16:01:22  profilanswer
 

"INSERT INTO stnic VALUES (".$_POST['nom'].",".$_POST['idee1'].",".$_POST['idee2'].",".$_POST['idee3'].",".$_POST['valid']." )"

n°1472378
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 08-11-2006 à 16:03:10  profilanswer
 

chani_t a écrit :

"INSERT INTO stnic VALUES (".$_POST['nom'].",".$_POST['idee1'].",".$_POST['idee2'].",".$_POST['idee3'].",".$_POST['valid']." )"


Ca marchera mais je trouve ca moche ^^ et dans ce cas mieux vaut utiliser les simples quotes :
 
INSERT INTO stnic VALUES ('.$_POST['nom'].','.$_POST['idee1'].','.$_POST['idee2'].','.$_POST['idee3'].','.$_POST['valid'].')


Message édité par WiiDS le 08-11-2006 à 16:03:59
n°1472390
chani_t
From Dune
Posté le 08-11-2006 à 16:07:30  profilanswer
 

ba c'était histoire qu'il ne revois pas tous sont code ;)... dans tous les cas je ne mettrais pas les données du post directement en base de données... c'est  trop facile de soumettre des données non conforme.

n°1472392
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 08-11-2006 à 16:08:22  profilanswer
 

chani_t a écrit :

ba c'était histoire qu'il ne revois pas tous sont code ;)... dans tous les cas je ne mettrais pas les données du post directement en base de données... c'est  trop facile de soumettre des données non conforme.


Oui c'est sur que ca sent mauvais l'injection SQL :/

n°1472395
kwaio
Posté le 08-11-2006 à 16:09:40  profilanswer
 

Le code est suffitsemment court pour le modifier ;)
J'ai fait ce que tu as dit, le formulaire passe nickel, mais le sinfos ne vont pas jusqu'a la bdd, et j'ai maintenant une autre erreur.
 
J'ai édité le premier message avec la nouvelle erreur et le nouveau code.
 
Et j'ai laissé tomber l'idée du valid, je verrai pour le remettre apres. restons simple.
 
Le but du script et qu'un tableau avec toutes le sidées cadeau apparaissent... je crois que je dois créer une boucle à la fin genre foreach(){} mais je suis pas super bon
 
EDIT : Oops j'suis con j'ai laissé valid dans le query.
Ban bah je l'ai enlevé, le tablea s'affiche, mais les infos du formulaire ne vont aps dans la base de données, c'est le seul probleme restant.


Message édité par kwaio le 08-11-2006 à 16:20:13
mood
Publicité
Posté le 08-11-2006 à 16:09:40  profilanswer
 

n°1472411
chani_t
From Dune
Posté le 08-11-2006 à 16:24:22  profilanswer
 

Code :
  1. $query = "SELECT nom,idee1,idee2,idee3,valid FROM stnic ORDER BY nom" ;
  2. $result2 = mysql_query($query);
  3. // Recuperation des resultats
  4. while($ligne = mysql_fetch_array($result2, MYSQL_ASSOC))
  5. {
  6. $nom = $ligne['nom'];
  7. $idee1 = $ligne['idee1'];
  8. $idee2 = $ligne['idee2'];
  9. $idee3 = $ligne['idee2'];
  10. echo "
  11. <table border='1' width='100%'> \n
  12. <tr>\n
  13. <td>Nom</td>\n
  14. <td>Idée n°1</td>\n
  15. <td>Idée n°2</td>\n
  16. <td>Idée n°3</td>\n
  17. </tr>\n
  18. <tr>\n
  19. <td>".$nom."</td>\n
  20. <td>".$idee1."</td>\n
  21. <td>".$idee2."</td>\n
  22. <td>".$idee3."</td>\n
  23. </tr>\n";
  24. }


 
voila ce que je ferais.

n°1472419
kwaio
Posté le 08-11-2006 à 16:27:57  profilanswer
 

De toute facon, il n'y a plus de problemes au niveau du tablea, aps besoin de ton machin "MYSQL_ASSOC"
 
Le probleme est que le formulaire à l'air de marcher normalement, mais les données n'entrent pas dans la bdd

Message cité 1 fois
Message édité par kwaio le 08-11-2006 à 16:32:21
n°1472424
chani_t
From Dune
Posté le 08-11-2006 à 16:29:58  profilanswer
 

Code :
  1. #
  2. $requete = "INSERT INTO stnic VALUES ($nom,$idee1,$idee2,$idee3)" ;
  3. // Execution de cette requete dans la base essai
  4. $execution = mysql_query($requete, $connect);


 
pour la 1er requête

n°1472430
chani_t
From Dune
Posté le 08-11-2006 à 16:31:47  profilanswer
 

kwaio a écrit :

... aps besoin de ton machin "MYSQL_ASSOC"
..


 
 
c'est juste plus joli... en effet tu récupére un tableau associatif au lieu de récupérer un tableau simple.

n°1472435
kwaio
Posté le 08-11-2006 à 16:34:14  profilanswer
 

Je n'ai plus de problemes au niveau du tableau, mais le formulaire ne veut pas inscrire dans la base de donnée et je n'ai plus d'erreurs annoncées...
je met à jour mon code dans le 1er message.
 
j'ai du oublier un truc avec "stnic" à la ligne 47, non ?
 
(ps : une urgence, je reviens vers 18h ;))


Message édité par kwaio le 08-11-2006 à 16:47:31
n°1472457
chani_t
From Dune
Posté le 08-11-2006 à 16:50:21  profilanswer
 

Code :
  1. mysql_select_db($bdd, $connect) or die ('Selection de la base de données non effectuée : '.mysql_error());


 
Et je modifierais aussi la ligne : 25...
 
en effet, tu n'as pas modifié la ligne 47..

n°1472520
kwaio
Posté le 08-11-2006 à 17:55:57  profilanswer
 

J'ai changé la ligne 25 : aucune erreur signalée.
Mais je ne comprends pas, je suis censé l'organiser comment la ligne 47 ? Où est le probleme ?
 
EDIT : AH ! ne dois-je pas rajouter "$execution;" apres la ligne 47 ?


Message édité par kwaio le 08-11-2006 à 17:59:07
n°1472523
chani_t
From Dune
Posté le 08-11-2006 à 17:59:42  profilanswer
 

je te l'ais déjà donné.. plus haut.... $execution = mysql_query($requete, $connect);

n°1472534
kwaio
Posté le 08-11-2006 à 18:08:55  profilanswer
 

J'suis désolé de vous donner du mal, mais ya pas moyen, les données ne sont pas envoyées vers la base de donnée.
J'ai pourtant tout vérifié...
je remet le code à jour dnas le premier message.
 
J'ai fait un test.

Code :
  1. <?php
  2. $user='root' ;
  3. $passwd='' ;
  4. $host='localhost' ;
  5. $bdd='stnic' ;
  6. // Connexion au serveur
  7. $connect = mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur" );
  8. $connect;
  9. mysql_select_db($bdd,$connect) or die('Selection de la base de données non effectuée : '.mysql_error());
  10. $i=0;
  11. $nom = "moi$i";
  12. $idee1 = "moi$i";
  13. $idee2 = "moi$i";
  14. $idee3 = "moi$i";
  15. mysql_query("INSERT INTO stnic VALUES ($nom,$idee1,$idee2,$idee3)" );
  16. $i++;
  17. echo"ok";
  18. ?>


Ceci retourne bien le "ok" mais les infos ne sont pas dans la BDD.
Celà aide t il à cerner le probleme ?


Message édité par kwaio le 08-11-2006 à 18:18:50
n°1472540
chani_t
From Dune
Posté le 08-11-2006 à 18:15:52  profilanswer
 

... ligne 25 et 47 toujours pas bonne.

n°1472541
kwaio
Posté le 08-11-2006 à 18:18:26  profilanswer
 

Merci pour la ligne 25, j'avais pas vu le $connect, c'est modifié.
PAr contre, la ligne 47 est exactement comme tu me l'a donnée
 
et ça ne marche pas ^^

n°1472543
chani_t
From Dune
Posté le 08-11-2006 à 18:22:44  profilanswer
 

A mon avis c'est un soucis de Values.. regarde de plus prés la doc...

n°1472544
kwaio
Posté le 08-11-2006 à 18:24:48  profilanswer
 

J'dois vraiment être chiant, mais je n'ai pas compris ton message...

n°1472547
kwaio
Posté le 08-11-2006 à 18:28:36  profilanswer
 

Ok ça marche j'ai trouvé le probleme.
QUestions de ; avant le "
 
merci beaucoup

n°1472551
kwaio
Posté le 08-11-2006 à 18:33:12  profilanswer
 

Juste une petite question théorique.
Je ne me rapelle plus, comment fait on pour qu'une requete PHP"erronée" n'emete pas de phrase d'erreur ?
 
quel bouricot, j'ai trouvé tout seul... le @

Message cité 1 fois
Message édité par kwaio le 08-11-2006 à 18:33:49
n°1472575
FlorentG
Unité de Masse
Posté le 08-11-2006 à 19:10:43  profilanswer
 

chani_t a écrit :

"INSERT INTO stnic VALUES (".$_POST['nom'].",".$_POST['idee1'].",".$_POST['idee2'].",".$_POST['idee3'].",".$_POST['valid']." )"


Hmmmmm la sécurité [:delarue2]

n°1472719
chani_t
From Dune
Posté le 09-11-2006 à 08:39:23  profilanswer
 

kwaio a écrit :

Juste une petite question théorique.
Je ne me rapelle plus, comment fait on pour qu'une requete PHP"erronée" n'emete pas de phrase d'erreur ?
 
quel bouricot, j'ai trouvé tout seul... le @


 
 
vi ou mieux, aus lieu de les taires, tu les redirige vers un fichier de log, ou vers ton email, tout en empéchant qu'elles apparaissent (ini_set('display_errors', false); etc..)
 
Et encore une fois.. vérifie ce que tu reçois de ton formulaire avant de l'insérer dans ta base de données.

n°1472728
Sh@rdar
Ex-PhPéteur
Posté le 09-11-2006 à 08:55:15  profilanswer
 

FlorentG a écrit :

Hmmmmm la sécurité [:delarue2]


 
 
ce qui n'a quand même strictement rien à voir avec le fait d'utiliser la variable en direct ou de l'assigner avant, il faut le préciser :)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
mood
Publicité
Posté le   profilanswer
 


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

  Parse error dans code PHP/MySQL correct

 

Sujets relatifs
[PHP]Envoi de mail au format html.Bible Des Failles PHP
[RESOLU] PHP EXIF et retouche d'image[PHP/SQLITE] Lecture des données dans un fichier .db
[C# .Net] Mettre en commun du code[MySQL] Procédure stockée et triggers dispo en 4.0?
Faire connaisance avec PHPPrbolème de connection MySQL
Faille de sécurité en PHP ? etc/passwd ?[PHP] Formatage des dates
Plus de sujets relatifs à : Parse error dans code PHP/MySQL correct


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