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

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

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

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
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

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