JeuWeb - Crée ton jeu par navigateur
[Résolu] Problème à l'envoi de données SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Problème à l'envoi de données SQL (/showthread.php?tid=863)

Pages : 1 2


[Résolu] Problème à l'envoi de données SQL - atrus - 18-03-2008

Bonjour à tous après avoir passé ma journée sur cette page pour mon site je décide de venir vous voir car je ne comprend pas tout ce qui plante
Alors mon code :
Code PHP :
<?php 
else{
mysql_query("INSERT INTO membres (id, pseudo, mdp, mail) VALUES ('', '$_POST[pseudo]', '$_POST[mdp1]', '$_POST[mail]')");

include
"haut.php";
echo
"Enregistrements effectués";
include
"bas.php";
}

Voila je suis chez free et quand je lance cette page il n'y a aucune erreur mais les enregistrements ne sont pas fait. j'aimerai donc savoir ce qui ne va pas.

Merci de votre aide.


RE: problème avec envoi de données sql - Shakkah - 18-03-2008

Les variables pseudo, mdp que tu récupère contiennent elle pas des ' ?

essaye de faire un echo de ta requete avant d'appeler mysql_query pour voir si tu récupère bien les bonnes valeurs dans les POSTS.


RE: problème avec envoi de données sql - pascal - 18-03-2008

essaie de suivre les indications du tutorial dans ma signature, ça pourra t'aider à débugguer.

A+ & bonne chance,

Pascal


RE: problème avec envoi de données sql - atrus - 18-03-2008

Shakkah => oui je viens de tester les variables ça renvoi bien les bonnes données.
pascal => j'ai tester ma requette avec
Code PHP :
<?php 
if( $resultat === FALSE )
{
echo
"erreur dans la requete : " . $query . "<br/>";
echo
mysql_errno() . ": " . mysql_error();
exit;
et j'ai le message suivant : erreur dans la requete :
1065: Query was empty



Voici toute ma fonction :
Code PHP :
<?php 
else
{
echo
"$pseudo $mdp1 $mail";
$query = mysql_query("INSERT INTO membres (id, pseudo, mdp, email) VALUES ('', '$pseudo', '$mdp1', '$mail)'");
// exécution de la requête
$resultat = mysql_query($query);
// test de la valeur de retour
if( $resultat === FALSE )
{
echo
"erreur dans la requete : " . $query . "<br/>";
echo
mysql_errno() . ": " . mysql_error();
exit;
}



RE: problème avec envoi de données sql - Ziliev - 18-03-2008

Euh, tu met le résultat d'une requete dans une variable, et t'éxécutes en requete cette variable ? Oo Pas étonnant que la deuxième soit empty. Vire donc le "mysql_query" devant ta chaine "INSERT INTO" et donne m'en des nouvelles. J'ajouterais que le plus simple pour débugger c'est encore d'écrire tes requêtes ous la forme:

mysql_query("Requete") or die(mysql_error());


RE: problème avec envoi de données sql - atrus - 18-03-2008

Ziliev => j'ai suivi tes conseils et voila mon code :
Code PHP :
<?php 
echo "$pseudo $mdp1 $mail";
$reqsql = mysql_query("INSERT INTO membres (id, pseudo, mdp, email) VALUES ('', '$pseudo', '$mdp1', '$mail)'")or die(mysql_error());
include
"haut.php";
echo
"Enregistrements effectués";
include
"bas.php";

Mais maintenant j'ai une erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

je dois avoir fait un erreur toute simple mais je vois pas ou.

et si je met :
Code PHP :
<?php 
echo "$pseudo $mdp1 $mail";
$reqsql = "INSERT INTO membres (id, pseudo, mdp, email) VALUES ('', '$pseudo', '$mdp1', '$mail)'";
include
"haut.php";
echo
"Enregistrements effectués";
include
"bas.php";
ça ne marche toujours pas.


RE: problème avec envoi de données sql - Shakkah - 18-03-2008

atrus a écrit :et si je met :
Code PHP :
<?php 
echo "$pseudo $mdp1 $mail";
$reqsql = "INSERT INTO membres (id, pseudo, mdp, email) VALUES ('', '$pseudo', '$mdp1', '$mail)'";
include
"haut.php";
echo
"Enregistrements effectués";
include
"bas.php";
ça ne marche toujours pas.

ta une quote pas au bon endroit

C'est normal que dans ton premier post tu met tes variables en $_POST et que dans tes derniers tu le fais plus ?

Personellement je crée d'abord ma requete dans une variable, puis j'appelle le mysql_query avec la variable.

Pour ton exemple je ferais comme ça :
Code PHP :
<?php 
$reqsql
= "INSERT INTO membres (id, pseudo, mdp, email) VALUES ('', '$pseudo', '$mdp1', '$mail')";
mysql_query($reqsql);



RE: problème avec envoi de données sql - Ziliev - 18-03-2008

atrus a écrit :
Code PHP :
<?php 
$reqsql
= mysql_query("INSERT INTO membres (id, pseudo, mdp, email) VALUES ('', '$pseudo', '$mdp1', '$mail)'")or die(mysql_error());

Mais maintenant j'ai une erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Hé ba ca c'est encourageant, ca veut simplement dire qu'il y a un soucis dans ta requête. C'est pas encore ca mais y a progrès Tongue Dans ta requete là (juste la chaine, en rouge), t'as un problème: regarde la fermeture de parenthèse après $mail, elle est pas à sa place. J'ajouterais que les simples quotes c'est à éviter quand tu ajoutes des variables comme ca, c'est plus sur de prendre des doubles et/ou d'échapper les variables. Un truc du style quoi, en empéchant le client d'utiliser des double quote (y a une config de serveur qui fait ca tout seul, dont j'ai perdu le nom):

Code PHP :
<?php 
mysql_query
("INSERT INTO membres VALUES ('', \"".$pseudo."\", \"".$mdp1."\", \"".$mail."\")")or die(mysql_error());

Ensuite mettre le résultat de cette requête dans une variable me semble pas indispensable, de toute facon elle retournera TRUE ou FALSE, et le "or die..." 'suffit au déboggage. J'espère que tu comprends ce que tu fais, et que tu ne modifies pas juste au p'tit bonheur la chance ce que d'autres te conseillent ...


RE: problème avec envoi de données sql - Shakkah - 19-03-2008

Ziliev a écrit :Ensuite mettre le résultat de cette requête dans une variable me semble pas indispensable, de toute facon elle retournera TRUE ou FALSE, et le "or die..." 'suffit au déboggage. J'espère que tu comprends ce que tu fais, et que tu ne modifies pas juste au p'tit bonheur la chance ce que d'autres te conseillent ...

Le or die je le trouve pas tous le temps explicite. Pour débugger j'aime bien faire un echo de ma variable contenant ma requete, c'est pour ça que je fait toujours une variable en plus.

Après chacun ses gouts / habitudes / tics .. ^_^


RE: problème avec envoi de données sql - Roworll - 19-03-2008

En faisant comme ceci par exemple tu auras en cas de plantage l'erreur SQL ET le contenu de la requête :
Code PHP :
<?php 
$Query
="INSERT INTO membres VALUES ('', \"".$pseudo."\", \"".$mdp1."\", \"".$mail."\")";
mysql_query($Query)or die('Erreur dans la requête : ' . $Query . '<br />' . mysql_error());