8792 sujets

Développement web côté serveur, CMS

Bonjour, j'ai crée une requète pour ajouter des données dans ma base, je n'obtient aucun message d'érreur, mais rien n'est ajouté dans la base de donné.
Je suis en local avec easyphp.
Voila la source du formulaire:
<body>
<form method="post" action="Rh4865UYGhJIJ468185.php">
<p>
Nom du jeux: <textarea name="nom_du_jeu" rows="1" cols="45"></textarea>
<p>
  Image:
<textarea name="lien_image" rows="1" cols="45"></textarea>
<p>
  Type de jeux:
  <input type="radio" name="type_de_jeu" value="Flash" /> 
 Flash
  <input type="radio" name="type_de_jeu" value="Shockwave" /> 
shockwave
<p>
Desciption longue: 
  <textarea name="description_longue" rows="8" cols="45">

  </textarea>
<p>
Description courte:<textarea name="description_courte" rows="4" cols="45">

</textarea>
<p>
Note graphique:
  <input type="radio" name="note_graph" value="1" /> 1  <input type="radio" name="note_graph" value="2" /> 2<input type="radio" name="note_graph" value="3" /> 3 <input type="radio" name="note_graph" value="4" /> 4
<p>
Note difficulté:
<input type="radio" name="note_diff" value="1" />1<input type="radio" name="note_diff" value="2" />2<input type="radio" name="note_diff" value="3" />3<input type="radio" name="note_diff" value="4" />4
<p>
Cat&eacute;gorie: 
<select name="categorie">
    <option value="1">Action</option>
    <option value="2">Arcade</option>
    <option value="3">Aventure</option>
    <option value="4">Cartes</option>
	<option value="5">Casino</option>
    <option value="6">Ciné TV</option>
    <option value="7">Cochon</option>
    <option value="8">Combat</option>
    <option value="9">Course</option>
    <option value="10">Divers</option>
    <option value="11">Enfant</option>
	<option value="12">Lettres</option>
    <option value="13">MultiJoueurs</option>
    <option value="14">Plate-forme</option>
    <option value="15">Puzzles</option>
    <option value="16">Réflexion</option>
    <option value="17">Shoot'em up</option>
    <option value="18">Simulation</option>
    <option value="19">Sport</option>
	<option value="20">Stratégie</option>
</select>
<p>
  <input type="submit" value="Valider" />
</form>
</body>



Puis la source de la requète:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php
$nom_du_jeu=$_POST['nom_du_jeu']; 
$lien_image=$_POST['lien_image'];
$type_de_jeu=$_POST['type_de_jeu'];
$description_longue=$_POST['description_longue'];
$description_courte=$_POST['description_courte'];
$note_graph=$_POST['note_graph'];
$note_diff=$_POST['note_diff'];
$categorie=$_POST['categorie'];

mysql_connect("localhost", "root", "");
mysql_select_db("test2");
mysql_query("INSERT INTO infos VALUES('', 'echo $nom_du_jeu', 'echo $lien_image', 'echo $type_de_jeu', 'echo $description_longue', 'echo $description_courte', 'echo $note_graph', 'echo $note_diff', 'echo $categorie')");


mysql_close();
?>
</body>
</html>


Merci de votre aide Smiley cligne
Salut,
fais un addslashes (ou mieux, un mysql_real_escape_string) sur les textes histoire de vérifier que ça ne vient pas d'apostrophes ou de guillemets.
Dans ce cas-là, Easyphp, configuré par défaut sans magic quotes (et c'est mieux comme ça), ne fait pas l'insertion mais ne renvoie pas d'erreur. Je dis que c'est plutôt mieux comme ça parce que ça oblige à prendre l'habitude d'échapper les contenus que l'on insère dans la base, saine habitude Smiley smile

Have swing
salut,

a écrit :
'echo $nom_du_jeu', 'echo $lien_image', 'echo $type_de_jeu'


alors là non pas d'echo dans la chaine. Si tu fais un die qui affiche la requete en cas d'echec



mysql_query("INSERT INTO infos VALUES('', 'echo $nom_du_jeu', 'echo $lien_image', 'echo $type_de_jeu', 'echo $description_longue', 'echo $description_courte', 'echo $note_graph', 'echo $note_diff', 'echo $categorie')") or die ("INSERT INTO infos VALUES('', 'echo $nom_du_jeu', 'echo $lien_image', 'echo $type_de_jeu', 'echo $description_longue', 'echo $description_courte', 'echo $note_graph', 'echo $note_diff', 'echo $categorie')");




on voit bien que les variables sont interprétées ( normal car la chaine global est entre " les ' intérieur ne compte plus). par contre les fonctions php sont ignorées.

Resultat d'un test que j'ai fait:



INSERT INTO infos VALUES('', 'echo djfhfkdjdfhjf', 'echo dfdd', 'echo Flash', 'echo dffddd', 'echo ddddf', 'echo 3', 'echo ', 'echo 17')



'echo 3' par exemple empechera l'insertion de cette valeur dans un champ de type numerique (int,smallint,etc... ).

je crois même que en l'occurrence une valeur type numerique ne doit pas etre entre '

P.S. normal que tu n'avais aucun message d'erreur ton mysql_query ne se fendait même pas d'un petit or die(); tout simple.

pascal
Modifié par CPascal (27 May 2007 - 10:24)
Merci pour vos réponses, j'ai donc suivis vos conseils.
J'ai ajouter un mysql_real_escape_string au varible contenant du texte.
J'ai aussi ajouter un or die(mysql_error()) a chaque étape.
De plus, j'ai enlever les echo, inutiles.
Voilà le code après mes modifications, et maintenant j'ai pleins de messages d'erreurs:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 10

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 10

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 11

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 11

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 13

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 13

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 14

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Documents and Settings\All Users\Documents\gard\site\test bdd\1001games\Rh4865UYGhJIJ468185.php on line 14
Column count doesn't match value count at row 1



<?php
$nom_du_jeu=mysql_real_escape_string($_POST['nom_du_jeu']); 
$lien_image=mysql_real_escape_string($_POST['lien_image']);
$type_de_jeu=$_POST['type_de_jeu'];
$description_longue=mysql_real_escape_string($_POST['description_longue']);
$description_courte=mysql_real_escape_string($_POST['description_courte']);
$note_graph=$_POST['note_graph'];
$note_diff=$_POST['note_diff'];
$categorie=$_POST['categorie'];

mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("test2")or die(mysql_error());
mysql_query("INSERT INTO infos VALUES('', '$nom_du_jeu', '$lien_image', '$type_de_jeu', '$description_longue', '$description_courte', '$note_graph', '$note_diff', '$categorie')")or die(mysql_error());
mysql_close();
?>


Merci d'avance!
Salut,
tu as, du moins je pense, cette erreur parce que contrairement à addslashes, mysql_real_escape_string (pfff longuet à écrire Smiley smile ) demande un deuxième argument, non facultatif qui est ta connection.
du coup, il te faut coller ta connection dans une variable, genre

$link = mysql_connect($host, $user, $pass);


et ensuite coller cette variable dans mysql...

$toto = mysql_real_escape_string($_POST['toto'], $link);


have swing