Formulaire PHP et MySQL

Petit nouveau ! | 6 Messages

15 déc. 2011, 23:22

Bonjour, je dois créer un formulaire pour remplir une table dans une BDD. Les valeurs du formulaires ne s'inscrivent pas dans la BDD. Parcontre, si je mets directements les valeurs dans la requête SQL elles sont bien envoyées.
La connexion vers ma BDD fonctionne.
Merci de votre aide.
<center><b>Remplissage de la table</b></center></h1>
<FORM method=post action="form.php">
<h3><u>Completer le formulaire pour remplir la table :</u></h3>
<TABLE BORDER=5>
 
<TR>
	<TD>Entrez le nom</TD>
	<TD>
	<INPUT type=text name="Name_test" >
	</TD>
</TR>
 
<TR>
	<TD>Entrez le Number</TD>
	<TD>
	<INPUT type=text name="Number_test" >
	</TD>
 
<TR>
	<TD>Entrez la description</TD>
	<TD>
	<INPUT type=text name="Description_test" >
	</TD>
</TR>
 
<TR>
	<TD>Entrez le PartNumber</TD>
	<TD>
	<INPUT type=text name="PartNumber" >
	</TD>
</TR>
 
<TR>
	<TD>Entrez le num_EC</TD>
	<TD>
	<INPUT type=text name="num_EC" >
	</TD>
</TR>	
 
	<TR>
	<TD COLSPAN=2>
	<INPUT type="submit" value="Envoyer">
	</TD>
</TR>
 
</TABLE>
</FORM>
<?
<?php
$db = mysql_connect('127.0.0.1', 'root', '1234');  
mysql_select_db('bdd',$db); 
 
// Recuperation des valeurs :
 
$Name_test = $_POST['Name_test'];
$Number_test = $_POST['Number_test'];
$Description_test = $_POST['Description_test'];
$PartNumber = $_POST['PartNumber'];
$num_EC = $_POST['num_EC'];
 
 
 
 
// Insertion des valeurs :
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', '$Number_test', 
'$Description_test','$PartNumber', '$num_EC')";
mysql_query($insertion)
 
?>

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

15 déc. 2011, 23:48

Tu as un "<?" en trop, suivi d'un <?php au début de ton script... ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

16 déc. 2011, 00:08

Non c'est juste dans mon copier/coller.
La page s'affiche bien, quand je mets directement les valeurs des parametres de la table dans la requêtes, les enrengistrements sont dans la BDD.
Parcontre, quand je remplis le formulaire et j'appuie sur envoyer, ils ne sont pas envoyés dans la BDD.
merci.

ViPHP
xTG
ViPHP | 7331 Messages

16 déc. 2011, 08:18

Protèges les valeurs avec mysql_real_escape_string().
Et pour déboguer regardes ce que retourne mysql_error().

Petit nouveau ! | 6 Messages

16 déc. 2011, 11:09

Lorsque je fais un echo de ma requête j'ai ça :
insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('1', '2', '3','', '')
Comme vous le voyez, les valeurs des deux derniers champs ont disparus ! (Pourtant j'ai bien données une valeur sur le formulaire). Et sur la BDD, il n'y a aucun enrengistrements !
Et pour la commande
mysql_real_escape_string()
j'ai tout mis apres la requête :
mysql_real_escape_string($Name_test, $db);
mysql_real_escape_string($Number_test, $db);
mysql_real_escape_string($Description_test, $db);
mysql_real_escape_string($PartNumber, $db);
mysql_real_escape_string($num_EC, $db);
Merci ...

Petit nouveau ! | 6 Messages

16 déc. 2011, 13:27

C'est bon ça fonctionne (enfin!). Parcontre, je voudrais eviter d'avoir des erreurs lors du 1er affichage de la page (car le champs n'est pas remplis).
Je voudrais aussi vérifier que les champs sont bien remplis sauf Description_test qui est optionnel.
Merci;

Eléphanteau du PHP | 49 Messages

16 déc. 2011, 17:44

Salut,
Tu peux faire un if(isset($_POST[nom_d_un_des_champs_obligatoires]))
{
//le code PHP que tu as mis dans ton 1er message
}

Tu peux tester, dans ta condition, si tes champs sont remplis avec empty() ou !empty()

Ciao
Jérôme