PHP Transmettre variable dans une requete SQL

Répondre
FredFaz
le 18/07/2009 à 18:31
FredFaz
Le code ci-dessous (ce n'est que le début) ne fonctionne pas en raison de la ligne 16 : je n'arrive pas à transmettre la variable $login
convenablement.
Aidez moi a faire le code SVP !
<?php
$login=$_POST[login];
$password = $_POST[Password];

$host = "XXXXXX";
$user = "XXXXXX";
$pass = "XXXXXX";
$bdd = "XXXXXXX";
$connexion = mysql_connect($host,$user,$pass);

mysql_connect($host,$user,$pass) or die("erreur de connexion au serveur $host");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$sql = 'SELECT `Nom` FROM `Joueurs` WHERE `Prenom`='.$login;
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
mysql_close ();
...


(Note de la modération : Le bb-code c'est bien ©)
Fred
subrally
le 18/07/2009 à 18:49
subrally
13. $sql = 'SELECT `Nom` FROM `Joueurs` WHERE `Prenom`='.$login.';

ta pas bien fermé
LA GLOBULE
le 18/07/2009 à 19:19
LA GLOBULE
Je dirais plutot :

<?php
$sql = "SELECT `Nom` FROM `Joueurs` WHERE `Prenom`='".mysql_real_escape_string($login)."'";
?>


En effet, je pense que Prenom est un champ de type varchar.
LupusMic
le 18/07/2009 à 22:29
LupusMic
Une remarque au passage, qui peut faire en sorte que le script ne fonctionne pas :
<?php
$login=$_POST[login];
$password = $_POST[Password];

// Ceci est mal, il faut écrire ceci :
$login=$_POST['login'];
$password = $_POST['Password'];
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LA GLOBULE
le 18/07/2009 à 22:34
LA GLOBULE
Carrement (je n'ai meme pas lu le code d'origine :/).

Et je complete la réponse de LupusMic : Pourquoi est ce mal ?

Ben si le code contient une constante qui se nomme 'Password' ou 'login', en faisant un $login=$_POST[login]; $login va prendre la valeur de $_POST['la valeur de la constante login'] et cela peut jouer des tours.

(Expérience vécue lors de mes débuts en PHP)
FredFaz
le 21/07/2009 à 13:34
FredFaz
Je vous remercie de votre réactivité. Ca fonctionne
Voila un souci probablement lié:
via une page en php je récupère par plusieurs formulaires successif (d'où les variables de session) différentes variables.
Une fois complétée (un peu comme un assistant) à la dernière page je fais vérifier à l'utilisateur tout ce qui a été saisi.
J'affiche donc mes variables de session sans problème. Il y a un bouton valider qui doit m'envoyer sur une page (invisible pour l'utilisateur) qui doit inscrire ce qui a été saisi dans ma base mysql.
Le code extrait de cette page s'exécute bien puisque je retourne grâce à un header à ma page d'accueil mais rien ne s'est inscris dans ma base.

Je suppose que le probleme vient des variables de session qui ne doivent pas être correctement interprétées.

Pouvez vous m'aider à faire le code SVP ?

Voila un extrait du code actuel :


1.session_start();
2.
3.$hmatch = $_POST [heurematch].': 00'; //(permet de convertir au format TIME de mysql)
4.
5.$host = "mon Serveur";
6.$user = "Mon nom utilisateur";
7.$pass = "Mon password";
8.$bdd = "ma base de donnée";
9.$connexion = mysql_connect($host,$user,$pass);
10.mysql_connect($host,$user,$pass) or die("erreur de connexion au serveur $host");
11.mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
12.$req = "INSERT INTO Match (Date,Horaire,Equipe,Stade,Adresse,Code_Postal,Ville) VALUES('$_SESSION[date]','$hmatch','$_SESSION[LeMatch]','$_SESSION[stade]','$_SESSION[addstade]','$_SESSION[CPstade]','$_SESSION[villestade])";
13.mysql_query($req);
14.
15.session_destroy();
16.header("Location: mapageaccueil.php");


PS1 : la variable date est au format "année-mois-jour" (exemple: 2009-07-21)
PS2 : la variable horaire est au format Heures:Minutes:Secondes (exemple : 14:16:23)
Fred
LA GLOBULE
le 21/07/2009 à 13:57
LA GLOBULE
Comment savoir ce qui chie vu que tu n'affiches pas les erreurs SQL (si il y en a) ? :)
Bref, modifie ton mysql_query avec un truc du genre mysql_query($req) or die ($req."\n".mysql_error());

PS : sinon, ce qui chie surement, c'est que tu n'escape pas les variables que tu colles dans ta requete SQL. Utilise mysql_real_escape_string.

Et svp, utiliser le BB-Code... Je vais craquer un jour...
FredFaz
le 21/07/2009 à 15:17
FredFaz
Désolé si je fais pas bien mais j'apprends tout seul et je m'y suis mis il y a à peine 1 semaine !

Enfin bref voila l'erreur SQL :

INSERT INTO Match (Id,Date,Horaire,Equipe,Stade,Adresse,Code_Postal,Ville,Numero_Terrain,Type,DomExt) VALUES(,'2009-07-15','17:30:00','Dynamo Keke - SM CAEN','lumiere','42 rue jesaispasou','12456','finfonddelafrance','2b','de championnat','Neutre') 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 'Match (Id,Date,Horaire,Equipe,Stade,Adresse,Code_Postal,Ville,Numero_Terrain,Typ' at line 1
Fred
LA GLOBULE
le 21/07/2009 à 15:57
LA GLOBULE
Est ce normal que tu ne nous pastes pas la même requete que tout à l'heure ? :)
En plus, il me semble que l'ajout du champ Id apporte une erreur.
En effet : VALUES(, << la il manque la valeur de l'id.

Sinon, Match doit être un mot reservé de MySQL, donc entoure le nom de ta table avec des backquotes.
FredFaz
le 21/07/2009 à 17:07
FredFaz
C'est le résultat de la requête !

oubliez l'ID je l'ai retiré et j'ai le même résultat.
Fred
Répondre
LoadingChargement en cours