TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Variaable Pou Sql, enregistrement
Trysac
Ecrit le : Jeudi 12 Mai 2005 à 09h44
Quote Post


Kid
*

Groupe : Membre
Messages : 32


bonjour

ja i crée un petit formulaire classique pour l inscription sur mon site...

sur une autre page, la page cible je recuper des variable $_POST['pseudo]... etc
commetn je les integre a ma requet SQL???:

INSERT INTO joueur VALUES('','$_POST['pseudo'].......)

la sa affiche une erreur

commetn es que l on fai alors???


mercid e m aider

Trysac
PMEmail PosterUsers Website
Top
Merrick
Ecrit le : Jeudi 12 Mai 2005 à 12h01
Quote Post


Pro
*

Groupe : Membre
Messages : 57


Suis pas un pro de mysql, mais ça devrait marcher :

CODE
mysql_query("insert into joueur values ('','" . $_POST['pseudo'] . ");


--------------------
user posted image
PMEmail PosterUsers WebsiteICQ
Top
TheNerf
Ecrit le : Jeudi 12 Mai 2005 à 12h30
Quote Post


Ouf
*

Groupe : Membre
Messages : 834


Bonjour,
En effet, cela peu fonctionner comme ça.
Par contre, c'est une très bonne façon d'être piraté...

CODE

$pseudo = trim(addslashes($_REQUEST["pseudo"]));

Déjà, c'est mieux.
Non ?!
PM
Top
Merrick
Ecrit le : Jeudi 12 Mai 2005 à 14h39
Quote Post


Pro
*

Groupe : Membre
Messages : 57


Effectivement, bonne remarque.
Perso, je fais souvent un truc du type :
CODE

$nom_perso = trim(addslashes($_POST["pseudo"]));
$req = "insert into joueur values ('','$nom_perso')";
$db->query($req); // ou toute autre instruction lançant une requête selon le systeme


Le fait de préparer la requête dans une variable consomme un peu (?) de ressources, mais sur des grosses requêtes, je trouve le code plus agréable à l'oeil.


--------------------
user posted image
PMEmail PosterUsers WebsiteICQ
Top
Dahen
Ecrit le : Jeudi 12 Mai 2005 à 14h50
Quote Post


Newbie
*

Groupe : Membre
Messages : 9


J'utilise la fonction mysql-real-escape-string.

CODE
$bdd->requete("INSERT INTO joueur VALUES(NULL, mysql-real-escape-string($_POST['pseudo'])");


A noter que je préfère éviter la variable $_REQUEST et utiliser $_POST, $_GET ou $_COOKIE ce qui me semble plus rigoureux.

Aussi, j'utilise NULL dans le champ de l'identifiant pour rester compatible avec d'autres bases de données que MySQL (SQLite par exemple). Mettre '' est syntaxiquement incorrect car de type CHAR alors qu'un identifiant est de type INT.


--------------------
PMEmail PosterUsers Website
Top
Merrick
Ecrit le : Jeudi 12 Mai 2005 à 14h56
Quote Post


Pro
*

Groupe : Membre
Messages : 57


Null et '' sont effectivement différents. Ne connaissant pas la structure des tables, j'ai laissé la requête telle quelle.
De même que je mets rarement :
CODE

insert into perso values ('toto','tata')

mais plutôt
CODE

insert into perso (champ1,champ2) values ('toto','tata')

Ainsi, si le champ "champ1" soit être null (ou valeurs par défaut déclarées dans la base, je laisse
CODE

insert into perso (champ2) values ('tata');



--------------------
user posted image
PMEmail PosterUsers WebsiteICQ
Top
Trysac
Ecrit le : Jeudi 12 Mai 2005 à 15h17
Quote Post


Kid
*

Groupe : Membre
Messages : 32


non sa ne marche pas loesque j execut sa donne

CODE

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\portail\rec.php on line 8



la ligne 8 est:
QUOTE
mysql_query ("INSERT INTO news('ID', 'titre', 'contenu', 'date') VALUES('','$_POST['date']' ,'$_POST['titre']', '$_POST['contenu']')");


c'est du a koi?
PMEmail PosterUsers Website
Top
Merrick
Ecrit le : Jeudi 12 Mai 2005 à 15h51
Quote Post


Pro
*

Groupe : Membre
Messages : 57


C'est indiqué dans les posts plus haut, il faut concaténer la chaine de requête.
Au lieu de
CODE

mysql_query ("INSERT INTO news('ID', 'titre', 'contenu', 'date') VALUES('','$_POST['date']' ,'$_POST['titre']', '$_POST['contenu']')");

essaie :
CODE

mysql_query ("INSERT INTO news('ID', 'titre', 'contenu', 'date') VALUES('','$_POST['date']' ,'" . $_POST['titre']. "', '" . $_POST['contenu']. "')");


--------------------
user posted image
PMEmail PosterUsers WebsiteICQ
Top
Trysac
Ecrit le : Jeudi 12 Mai 2005 à 16h15
Quote Post


Kid
*

Groupe : Membre
Messages : 32


merci

j vai voir sa tout de suit
PMEmail PosterUsers Website
Top
Trysac
Ecrit le : Jeudi 12 Mai 2005 à 16h25
Quote Post


Kid
*

Groupe : Membre
Messages : 32


et sa veu dire koi ca:

CODE
Notice: Undefined index:titre
PMEmail PosterUsers Website
Top
Cedric
Ecrit le : Jeudi 12 Mai 2005 à 17h01
Quote Post


Ouf
*

Groupe : Membre
Messages : 368


J'imagine que titre n'est pas un nom de parametre...

Mais tu sais, si tu dois apprendre le PHP, le mieux est de prendre un tutoriel ou un livre qui t'expliquera en details... ici c'est plutot un thread sur le PHP dans les jeux. (mais necessite de connaitre un minimum le PHP)


--------------------
user posted image
PMEmail PosterUsers Website
Top
Trysac
Ecrit le : Jeudi 12 Mai 2005 à 17h11
Quote Post


Kid
*

Groupe : Membre
Messages : 32


j sais bien mais c dans mon jeu que j ai ce probleme et c'est la 1ere foi que ja i des bug comme ca... (pour info mon jeu est presque fini ilme reste que les carte a paufiner et l editeur de news...)

merci quand meme
PMEmail PosterUsers Website
Top
Draedrus
Ecrit le : Jeudi 12 Mai 2005 à 21h06
Quote Post


Ouf
*

Groupe : Membre
Messages : 212


sinon on n'est pas obligé de faire une concaténation
QUOTE
mysql_query("INSERT INTO machin ('bidule') VALUES ('$_POST[bidule]')")


on vire juste les méchants ''


--------------------
user posted image

- Un jeu de rôles avec... Un peu d'Humour, un peu de médieval-fantastique, un peu de stratégie, un peu de délire profond, un peu de désign bon enfant... :)
PMEmail PosterUsers Website
Top
Nonothehobbit
Ecrit le : Jeudi 12 Mai 2005 à 23h19
Quote Post


Alien
*

Groupe : Moderateurs
Messages : 1298


QUOTE (Dahen @ 12 May 2005, 13:50 )
J'utilise la fonction mysql-real-escape-string.

Et bien, je viens de découvrir quelque chose là. Faudra que je voie exactement les différences avec un addslashes. Merci. smile.gif


--------------------
user posted image
PMEmail PosterUsers Website
Top
Dahen
Ecrit le : Vendredi 13 Mai 2005 à 01h29
Quote Post


Newbie
*

Groupe : Membre
Messages : 9


Mais de rien ! smile.gif

Pour tout te dire, je l'ai découvert quand je me suis mis à SQLite:

sqlite_escape_string
QUOTE
addslashes  NE doit PAS  être utilisée pour protéger vos requêtes dans SQLite. Cela va conduire à d'étranges résultats lors de la lecture de vos données.


Après deux trois recherches google, je suis tombé par hasard sur l'équivalent mysql et sur plusieurs pages expliquant que si cette fonction était méconnue, elle respectait de façon plus correcte les standards du langage SQL (en échappant d'autres caractères que les simples quotes).

Pour prévenir une évolution éventuelle de MySQL vers plus de rigueur, il est à mon sens plus prudent de privilégier cette fonction.


--------------------
PMEmail PosterUsers Website
Top
askywhale
Ecrit le : Vendredi 13 Mai 2005 à 14h22
Quote Post


Pro
*

Groupe : Membre
Messages : 170


Fonction php5 uniquement, non ?


--------------------
PMEmail Poster
Top
Dahen
Ecrit le : Vendredi 13 Mai 2005 à 14h37
Quote Post


Newbie
*

Groupe : Membre
Messages : 9


D'après la doc, >= 4.3.0 .


--------------------
PMEmail PosterUsers Website
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll