Page 1 sur 1

formulaire

Posté : 04 nov. 2006, 13:56
par gil83
je souhaite ajouter un nouveau contact dans la base de donnees au travers d'un formulaire dans lequel je recupere les infos
mais voila dans la requete il me dit toujours variables indefinies...
help

code
<?php
$user="root";
$host="localhost";
$password="";
$database="contacts";

$connection=mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
$db=mysql_select_db($database,$connection) or die ("Sélection de la base de données impossible");

$query="INSERT INTO profils
VALUES ('".$_POST[$Ref]."','".$_POST[$Pseudo]."','".$_POST[$Prenom]."','".$_POST[$Age]."','".$_POST[$Taille]."','".$_POST[$Poids]."','".$_POST[$Cheveux]."','".$_POST[$Photo]."','".$_POST[$Ville]."','".$_POST[$Mail]."','".$_POST[$Telephone]."','".$_POST[$Commentaire]."')";
$result= mysql_query($query) or die ("Exécution de la sélection impossible");

je ne sais plus quoi mettre dans values j ai essayé plein de trucs... aidez moi!!!!!!!!!!! merci

Posté : 04 nov. 2006, 14:17
par jojolapine
les variables envoyées en post ne se récupères pas comme ceci...
mais plutôt de cette manière:
echo $_POST['nomVar'];
où nomVar est l'attribut Name de ta balise input sur ton formulaire....
fait les modifications nécessaire et reviens nous voir si ça ne marche toujours pas :wink:

Posté : 04 nov. 2006, 15:44
par gil83
ok je viens de tester ...

voila l erreur

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

et ma ligne 21

VALUES (echo $_POST['$Ref'],echo $_POST['$Pseudo'],echo $_POST['$Prenom'],echo $_POST['$Age'],echo $_POST['$Taille'],echo $_POST['$Poids'],echo $_POST['$Cheveux'],echo $_POST['$Photo'],echo $_POST['$Ville'],echo $_POST['$Mail'],echo $_POST['$Telephone'],echo $_POST['$Commentaire'])";

mnque quoi??? snif snif

Posté : 04 nov. 2006, 15:48
par jojolapine
comme ça:
$sql="...VALUES (".$_POST['Ref'].",".$_POST['Pseudo'].", etc...)"; 

Posté : 04 nov. 2006, 16:15
par gil83
genial j ai plus cette erreur mais j en ai une autre... rire
qui je crois vient d un champs hidden

voila mon formulaire

<form action="maj.php" method="post" name="form1" >
<table cellspacing=10 border=0>

<tr><td>Pseudo *</td><td><input type="text" size=40 name="Pseudo"></td></tr>
<tr><td>Prenom</td><td><input type="text" size=40 name="Prenom"></td></tr>
<tr><td>Age</td><td><input type="text" size=5 name="Age"></td></tr>
<tr><td>Taille</td><td><input type="text" size=5 name="Taille"></td></tr>
<tr><td>Poids</td><td><input type="text" size=5 name="Poids"></td></tr>
<tr><td>Cheveux</td><td><input type="text" size=5 name="Cheveux"></td></tr>
<tr><td>Photo</td><td><input type="text" size=40 name="Photo"></td></tr>
<tr><td>Ville</td><td><input type="text" size=40 name="Ville"></td></tr>
<tr><td>Mail</td><td><input type="text" size=40 name="Mail"></td></tr>
<tr><td>Telephone</td><td><input type="text" size=40 name="Telephone"></td></tr>
<tr><td>Commentaire</td><td><textarea name="Commentaire" cols="30" rows="5"></textarea></td></tr>
<tr><td><br></td><td><br></td></tr>
<tr><td colspan=2 align="center"><input type="submit" name="creer" value="Ajouter l'enregistrement"></td></tr>
</table>

<input type="hidden" name="Ref" value="">
<input type="hidden" name="MM_insert" value="form1">
</form>


et voila l erreur


Exécution de la sélection impossible

et ma requete
$query="INSERT INTO profils
VALUES (".$_POST['Ref'].",".$_POST['Pseudo'].",".$_POST['Prenom'].",".$_POST['Age'].",".$_POST['Taille'].",".$_POST['Poids'].",".$_POST['Cheveux'].",".$_POST['Photo'].",".$_POST['Ville'].",".$_POST['Mail'].",".$_POST['Telephone'].",".$_POST['Commentaire'].")";
$result= mysql_query($query) or die ("Exécution de la sélection impossible");

je merde encore quelque part...

Posté : 04 nov. 2006, 19:19
par polo
bonjour,
A la place de ton message d'erreur qui a après le or die, met un mysql_error(), ça nous aidera surement plus :D
Voila ^^

Posté : 04 nov. 2006, 19:20
par jojolapine
fait un echo de ta requête pour voir ce quelle contient, je soupçonne que ça vienne du fait que tu n'entoure pas tes valeurs par des '

Posté : 05 nov. 2006, 01:13
par gil83
ok j ai fait un mysql erreur et voila ce qui en resulte

Erreur de syntaxe près de 'toto,gil,40,,,,,,,,)' à la ligne 2

la je comprend plus rien du tout

Posté : 05 nov. 2006, 09:54
par polo
Bonjour,
et bien ça viens exactement, comme jojolapine le pensée, tu n'utilise pas les ' pour entourer tes variables.

Voila le code corrigé:
$query="INSERT INTO profils
VALUES ('".$_POST['Ref']."','".$_POST['Pseudo']."','".$_POST['Prenom']."','".$_POST['Age']."','".$_POST['Taille']."','".$_POST['Poids']."','".$_POST['Cheveux']."','".$_POST['Photo']."','".$_POST['Ville']."','".$_POST['Mail']."','".$_POST['Telephone']."','".$_POST['Commentaire']."')";
$result= mysql_query($query);
Voila test pour voir si ça marche :D

Posté : 05 nov. 2006, 16:56
par gil83
super ca fonctionne au poil...

si j ai bien compris pour recuperer une valeur d'un formulaire
l ecriture exacte est donc



Code : Tout sélectionner

'".$_POST['Pseudo']."'
qui peut m expliquer pourquoi les ' et les . avant et apres?

en tout cas un grand merci a vous tous

Posté : 05 nov. 2006, 17:06
par jojolapine
attention, tu mélanges plusieurs choses, pour récupérer une valeur de formulaire, on fait comme ceci:
$recupere=$_POST['nomdelavar']
et on remplace POST par GET, celon le mode transmission choisi.
ensuite, si l'on souhaite intégrer cette variable dans une chaine de caractère (ce qui est le cas de ta requête sql), on fait comme ceci:
$chaine="debut de la chaine".$_POST['nomdelavar'];
ensuite, pourquoi mettre des ' ?
ça n'est plus une question de php, mais de langage sql, pour des champs texte (varchar, char, ...) il faut entourer les valeurs par des simples quotes ('),
si tu as un doute pour la syntaxe d'une requête, je te conseil une première chose, c'est de faire des essais dans phpmyadmin, soit en tapant la requête, soit en cliquant sur insérer par exemple, ça génère la requête tout seul.
ensuite, tu récupère cette requête qui marche, et à la place des valeurs statiques, tu insères tes variables...

Posté : 05 nov. 2006, 17:23
par Ryle
Petite remarque : les apostrophes pour délimiter une chaine de caractères sont tolérés avec MySQL quel que soit le type de champ. Ce n'est pas une généralité (quand le champ est un entier, c'est un entier qui doit être passé, pas une chaine contenant un entier), et ce n'est à mon sens pas une bonne façon de faire.

Pour éviter d'avoir des "blancs" dans la requête il vaut mieux tester l'existance des valeurs et leur donner une valeur par défaut si elle n'est pas spécifiée :
$nombre = isSet($_POST['nombre']) ? $_POST['nombre'] : 0;
$nombreNull = isSet($_POST['nombreNull']) ? $_POST['nombreNull'] : "null";
$texte = isSet($_POST['texte']) ? $_POST['texte'] : "";

$sql = "INSERT INTO table (nombre, nombreNull, texte) 
VALUES (".$nombre.",".$nombreNull.",'".$texte."')"; // apostrophes uniquement pour la chaine

// si les variables ne sont pas renseignées la requête donnera :
INSERT INTO table (nombre, nombreNull, texte) VALUES (0, null, '');
// au lieu de
INSERT INTO table (nombre, nombreNull, texte) VALUES (,, ''); // qui est faux
// ou
INSERT INTO table (nombre, nombreNull, texte) VALUES ('','',''); // qui est toléré par MySQL, mais manque de rigueur

Posté : 05 nov. 2006, 19:39
par polo
C'est bon alors, si ça marche, pense à mettre le Tag résolue, avec le bouton situer en haut à gauche :D

Posté : 05 nov. 2006, 22:58
par gil83
merci a tous!!!!!!!!