formulaire

Eléphanteau du PHP | 10 Messages

04 nov. 2006, 13:56

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

ViPHP
ViPHP | 3607 Messages

04 nov. 2006, 14:17

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:

Eléphanteau du PHP | 10 Messages

04 nov. 2006, 15:44

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

ViPHP
ViPHP | 3607 Messages

04 nov. 2006, 15:48

comme ça:
$sql="...VALUES (".$_POST['Ref'].",".$_POST['Pseudo'].", etc...)"; 

Eléphanteau du PHP | 10 Messages

04 nov. 2006, 16:15

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

Eléphant du PHP | 216 Messages

04 nov. 2006, 19:19

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 ^^
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

ViPHP
ViPHP | 3607 Messages

04 nov. 2006, 19:20

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 '

Eléphanteau du PHP | 10 Messages

05 nov. 2006, 01:13

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

Eléphant du PHP | 216 Messages

05 nov. 2006, 09:54

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
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

Eléphanteau du PHP | 10 Messages

05 nov. 2006, 16:56

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

ViPHP
ViPHP | 3607 Messages

05 nov. 2006, 17:06

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 nov. 2006, 17:23

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
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 216 Messages

05 nov. 2006, 19:39

C'est bon alors, si ça marche, pense à mettre le Tag résolue, avec le bouton situer en haut à gauche :D
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

Eléphanteau du PHP | 10 Messages

05 nov. 2006, 22:58

merci a tous!!!!!!!!