Pb appel de variable php/sql (simple)

Fermé
Greg - 17 mars 2008 à 17:14
 Chat - 17 mars 2008 à 18:38
Bonjour,

Je suis en train de créer un formulauire pour un site,celui ci sur la page "acceuil" qui renvoie ensuite a la page "validation" apres l'avoir rempli.
J'ai crée une base de donnée sql pour la sauvegarde, avec les noms de variables qui correspondent aux champs. (j'ai suivi un tuto)
Mais lors de la validation j'ai cette erreur :

Notice: Undefined variable: prenom in C:\Documents and Settings\Greg\Mes documents\Projet Info\Tests\Validation.php on line 28
(cela 5fois pour les 5 variables)

En plus de cela, dans la base de donnée, il y a sauvegarde d'espace vides au lieu des infos insérées. (la db marche donc)

Dans le formulaire la methode est celle-ci :
<form action="validation.php" method="post">
<p>
Nom <input type="text" name="nom">

Et dans la validation le code est :

$db = mysql_connect('localhost', 'root');
mysql_select_db('test',$db);

$sql = "INSERT INTO testexperiment
VALUES('$nom','$prenom','$email','$ville','$blog')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'.mysql_error());

echo 'Merci, vos données sont enregistrées!.';
mysql_close();



Merci de m'aider c'est sympa !

3 réponses

Utilisateur anonyme
17 mars 2008 à 17:28
Salut alors tes variables doivent etre :

$_POST['nom'], $_POST['prenom'] ... et non $nom, $prenom

de plus il t'insere des choses vide pense a testé le contenu des variables avant de les insérés :

if (!empty($_POST['taVariable']) ))
{
INSERT....
}
0
Lorsque je remplace mes variables par ta méthode, cela affiche :
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Documents and Settings\Greg\Mes documents\Projet Info\Tests\Validation.php on line 28

C'est vraiment un probleme de definition de variables car quand je mets par exemple 100 a la place de $nom, il me met "100" dans la base de données !

pour rappel mon formulaire est comme ceci :


<form action="validation.php" method="post">
<p>
Nom <input type="text" name="nom">
</p>
<p>Prénom
<input type="text" name="prenom" >
</p>
<p>

E-mail
<input type="text" name="email">
</p>
<p>
Lille, Nantes, Toulouse ?
<input type="text" name="ville">
</p>
<p>Blog/Site
<input type="text" name="blog">
</p>
<p>

<input type="submit" value="cliquez-ici">
</p>
</form>
0
Utilisateur anonyme
17 mars 2008 à 18:15
Avant d'inséré tes variable dans ta base essai de les affichés :

echo $_POST['taVar1'];
echo $_POST['taVar2']; ...

et dis moi si ta page validation récupère bien les champs du formulaire :)
0
Bonsoir,

Voici le code de ton formulaire :

<form action="validation.php" method="post">
<p>Nom <input type="text" name="nom"></p>
<p>Prénom <input type="text" name="prenom" ></p>
<p>E-mail <input type="text" name="email"></p>
<p> Lille, Nantes, Toulouse ?<input type="text" name="ville"></p>
<p>Blog/Site <input type="text" name="blog"></p>
<p><input type="submit" value="cliquez-ici"></p>
</form>

Un formulaire défini de tel manière fait en sorte de transmettre en POST les variables nom, prenom, email, ville et blog à la page validation.php, je pense que tu l'as bien compris.

Cependant, une fois dans validation.php, tes variables $nom, $prenom, $email, etc... N'existent pas encore.

En effet, tout est stocké dans $_POST['nom'], $_POST['prenom'], $_POST['email'], etc...

Donc avant toute chose il faut récupérer les infos :

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
etc...

ensuite tu pourras les utiliser dans :

$sql = "INSERT INTO testexperiment
VALUES('$nom','$prenom','$email','$ville','$blog')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'.mysql_error());

Et ça devrait marcher :)


P.S : au lieu de faire $nom = $_POST['nom']; et compagnie, tu peux utiliser la fonction extract (cherche php extract sur google) pour aller plus vite (ça stocke dans $nom la valeur de $_POST['nom'], pareil pour prenom et le reste d'un seul coup)

P.S2 : n'hésite pas à tester tes valeurs avant toute insertion dans la base de données : if (isset($_POST['nom'])) et if ($_POST['nom']!='')

P.S3 : renseigne toi également sur les injections sql (pareil google est ton ami) et comment protéger ton site, si tu utilises mysql le meilleur moyen est mysql_real_escape_string.

P.S4 : ayé j'ai finis promis :p
0