Page 1 sur 3

Formulaire d'insertion dans une BDD [carte cliquable]

Posté : 08 juin 2009, 09:15
par toone
Bonjour,

Je post un nouveau sujet pour mon nouveau soucis ^^ !

Alors dans ma carte cliquable http://www.phpfrance.com/forums/voir_sujet-248133.php j'affiche des infos sur des clients, et j'aimerai pouvoir compléter ma BDD grâce à un formulaire.

j'ai commencé ce formulaire:
<?php
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
    // On se crée une variable $mot_de_passe avec le mot de passe entré
    $mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
    $mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
 
if ($mot_de_passe == "******") // Si le mot de passe est bon
{
// On affiche la page cachée.
?>
<!-- PAGE HTML D'INSERTION -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Formulaire Client</title>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	   
       <!-- CSS -->
	   <style type="text/css">
          label {
				display:block;
				width:200px;
				float:left;
				} 
       </style>
   </head>
   	<hr/>

   <body>

<!-- TEST  -->
<form method="post" action="ajout.php">

<!-- FORMULAIRE A REMPLIR -->
<p><font color="#330099"> <p align="center"> <font face="Trebuchet, Helvetica, sans-serif"> <font size="5"><b>  Nouveau Client  </b></font></font></font></p>
<hr size="5" width="100%" align="center"> <br /><br />

<!--<label for="nom"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Departement :  </b></font></font></font> </label><br /><br />

<label for="idselect"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Departement :  </b></font></font></font></label> 
  <select name="param" id="idselect">
    <option value=""selected="selected">Faites votre choix</option>
    <option value="1">Ain</option>
    <option value="2">Aisne</option>
    <option value="3">Allier</option>
    <option value="4">Alpes-de-Haute-Provence</option>
...
  </select><br /><br />-->
  
<label for="Entreprise"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Entreprise :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Num_Dep"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Numero Departement :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Nom_Maintenance"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Nom Maintenance :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Num_Maintenance"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Numero Maintenance :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Nom_Travaux"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Nom travaux :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Num_Travaux"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Numero Travaux :  </b></font></font></font> </label><input type="text" /><br /><br />

<label for="Adresse"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Adresse :  </b></font></font></font> </label><input type="text" /><br /><br /><br />

<input type="submit" value="Insérer dans la base">

</p>
<br/>
<br/>
</form> <FORM ACTION="http://localhost/test/index.php"> <INPUT TYPE="SUBMIT" VALUE="Annuler"> </FORM> </TABLE></body></html>

<?php
}
else // le mot de passe n'est pas bon
{
	// On affiche la zone de texte pour rentrer le mot de passe.
?>

<!-- ZONE MOT DE PASSE -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Page protégée par mot de passe</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
   
<body>
	<p>	<br/> <br/>
	Veuillez entrer le mot de passe pour insérer un nouveau client :
	<br/> <br/>	</p>

<form action="protection.php" method="post">
	<p>
	<input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
	</p>
</form>
	<hr/>
	<TABLE BORDER=4 CELLPADDING=0 CELLSPACING=0 ALIGN="LEFT"> <TR><TD> <FORM ACTION="http://localhost/test/index.php"> <INPUT TYPE="SUBMIT" VALUE="Annuler"></TD> </FORM></TR> </TABLE>
</body></html>
<?php
} // Fin du else
// Fin du code :)
?>
J'utilise des labels pour les formulaires, methode post ensuite :

ma page ajout.php :
<?php
      
      // déclaration de quelques variables

      $host = "localhost";
      $user = "root";
      $pass = "";
      $bdd = "clients";
      $table = "informations";

      // connection avec MySQL

      @mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");

      // Le @ indique à php de ne pas afficher de message d'erreur

      @mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");

     
      // stockage dans la bdd
 
$id = $_POST['id'];
$Entreprise = $_POST['Entreprise']; 
$Num_Dep = $_POST['Num_Dep'];
$Nom_Maintenance = $_POST['Nom_Maintenance'];
$Num_Maintenance = $_POST['Num_Maintenance'];
$Nom_Travaux = $_POST['Nom_Travaux'];
$Num_Travaux = $_POST['Num_Travaux'];
$Adresse =$_POST['Adresse'];
     
 
      $sql = "INSERT INTO informations(id,Entreprise, Num_Dep, Nom_Maintenance, Num_Maintenance, Nom_Travaux, Num_Travaux, Adresse) VALUES('','$Entreprise', '$Num_Dep', '$Nom_Maintenance', '$Num_Maintenance', '$Nom_Travaux', '$Num_Travaux', '$Adresse')";
      $res = mysql_query($sql) or die(mysql_error());
	  echo 'merci beaucoup, vos infos ont été enregistrées.';


      // déconnection avec MySQL

      mysql_close();

      ?>
lorsque je valide le formulaire , on m'affiche des erreurs comme

Code : Tout sélectionner

Notice: Undefined index: id in C:\wamp\www\test\ajout.php on line 22
et puis dans ma table cela rajoute une ligne vide, à part l'id auto incrémenté qui augmente à chaque texte malgrès les effacages.

Mon formulaire, mot de passe fonctionne, mais cela n'envoie pas les données dans la BDD, j'ai fait le tour de pas mal de tutos, mais peut être pas les bons....

Posté : 08 juin 2009, 10:02
par charabia
Lorsque tu vois Undefined c'est que c'est inexistant. Dans ton formulaire, on ne voit l'ID nulle part. S'il s'agit d'une auto-incrémentation, inutile de le mettre dans la requête d'insertion.

Posté : 08 juin 2009, 10:06
par toone
Oui il est en auto incrément, j'avais vu que ce n'etait pas la peine de le mettre, mais dans d'autres tutos oui... J'avais donc testé les deux...

Cependant jene comprends pas pourquoi mes index sont 'inexistants', ils sont pourtant bien là!

Posté : 08 juin 2009, 10:11
par charabia
$id = $_POST['id'];
Si tu regardes bien ton formulaire, à aucun moment tu ne passes cette donnée ID que tu tentes de récupérer.

Posté : 08 juin 2009, 10:23
par toone
Oui, j'ai supprimé tout ce qui concernait l'id...

Je declare pourtant dans mon formulaire tout le reste :
<form method="post" action="ajout.php">

<!-- FORMULAIRE A REMPLIR -->
<p><font color="#330099"> <p align="center"> <font face="Trebuchet, Helvetica, sans-serif"> <font size="5"><b>  Nouveau Client  </b></font></font></font></p>
<hr size="5" width="100%" align="center"> <br /><br />
  
<label for="Entreprise"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Entreprise :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Num_Dep"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Numero Departement :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Nom_Maintenance"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Nom Maintenance :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Num_Maintenance"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Numero Maintenance :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Nom_Travaux"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Nom travaux :  </b></font></font></font> </label><input type="text"  /><br /><br />

<label for="Num_Travaux"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Numero Travaux :  </b></font></font></font> </label><input type="text" /><br /><br />

<label for="Adresse"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Adresse :  </b></font></font></font> </label><input type="text" /><br /><br /><br />

<input type="submit" value="Insérer dans la base">
et c'est la même erreur :?

Posté : 08 juin 2009, 10:31
par charabia
Mais l'erreur vient justement du fait que tu tentes de récupérer quelque chose que tu as supprimée...

Si tu as supprimé tout ce qui concerne l'ID, tu dois faire de même lors de l'insertion :
1. supprimer
$id = $_POST['id'];
2.
$sql = "INSERT INTO informations(Entreprise, Num_Dep, Nom_Maintenance, Num_Maintenance, Nom_Travaux, Num_Travaux, Adresse) VALUES('".$Entreprise."', '".$Num_Dep."', '".$Nom_Maintenance."', '".$Num_Maintenance."', '".$Nom_Travaux."', '".$Num_Travaux."', '".$Adresse."')";

Posté : 08 juin 2009, 10:38
par toone
J'ai bien supprimé ces deux choses, le
$id = $_POST['id'];
et l'argument id dans ma requête d'insertion...

Mais même soucis, j'ai du mal définir mes variables quelquepart...

Posté : 08 juin 2009, 10:40
par charabia
:shock: tu as exactement la même erreur ID ?? Ca me parait très étonnant si c'est le cas...

Posté : 08 juin 2009, 10:47
par toone
En fait j'ai le même type d'erreur...

Code : Tout sélectionner

Notice: Undefined index: Entreprise in C:\wamp\www\test\ajout.php on line 23 Notice: Undefined index: Num_Dep in C:\wamp\www\test\ajout.php on line 24 Notice: Undefined index: Nom_Maintenance in C:\wamp\www\test\ajout.php on line 25 Notice: Undefined index: Num_Maintenance in C:\wamp\www\test\ajout.php on line 26 Notice: Undefined index: Nom_Travaux in C:\wamp\www\test\ajout.php on line 27 Notice: Undefined index: Num_Travaux in C:\wamp\www\test\ajout.php on line 28 Notice: Undefined index: Adresse in C:\wamp\www\test\ajout.php on line 29

Posté : 08 juin 2009, 10:52
par charabia
Heu...je n'avais pas fait attention à cause de l'erreur. Mais regarde ton formulaire. Pour tous tes champs je vois :
<input type="text"  />
Normal donc qu'il ne trouve aucun donnée.

Le nom doit se trouver dans le champ input et non pas dans le label si tu veux récupérer les données.

Et juste comme ça, les FONT c'est l'horreur : ça ne respecte plus la norme et le code est illisible. Un conseil donc, met toi très vite aux CSS.

Si tu passes ton site ici : http://validator.w3.org tu serais très surpris !

Posté : 08 juin 2009, 11:49
par toone
La methode avec les labels correspond elle à mes besoins?

Voici un demes labels :

Code : Tout sélectionner

<label for="Entreprise"> * Entreprise : </label><input id="Entreprise" type="text" /><br /><br />
(j'ai commencé le CSS, merci du conseil )

Posté : 08 juin 2009, 12:03
par charabia
Un petit name="Entreprise" dans ton input et la récupération sera fera sans souci.

Ton label sert à mettre le curseur dans le champ lorsque l'on clique sur l'intitulé, ici "* Entreprise :"

Posté : 08 juin 2009, 13:59
par toone
Toujours rien :(
<label for="Entreprise">  * Entreprise : </label><input name="Entreprise" type="text"  /><br /><br />
Dans mon ajout.php, j'ai tester de mettre un echo mais il ne renvoit rien, j'ai donc un soucis dans la récupération de mes POST :
$Entreprise = $_POST['Entreprise'];
echo $Entreprise; 

Posté : 08 juin 2009, 14:40
par charabia
Tu peux nous reposter ton code complet corrigé ?

Parce que là ça devrait fonctionner sans problème.

Posté : 08 juin 2009, 14:50
par toone
Voici protection.php :
<?php
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
    // On se crée une variable $mot_de_passe avec le mot de passe entré
    $mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
    $mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
 
if ($mot_de_passe == "******") // Si le mot de passe est bon
{
// On affiche la page cachée.
?>
<!-- PAGE HTML D'INSERTION -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Formulaire Client</title>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	   
  </head>
   	<hr/>

   <body>

<!-- TEST  -->
<form method="post" action="ajout.php">
<br/>
<!-- FORMULAIRE A REMPLIR -->
<!--<p><font color="#330099"> <p align="center"> <font face="Trebuchet, Helvetica, sans-serif"> <font size="5"><b>  Nouveau Client  </b></font></font></font></p>
<hr size="5" width="100%" align="center"> <br /><br />-->
<fieldset><legend>NOUVEAU CLIENT</legend>
<!--<label for="nom"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Departement :  </b></font></font></font> </label><br /><br />

<label for="idselect"><font color="#330099">  <font face="Trebuchet, Helvetica, sans-serif"> <font size="3"><b>  * Departement :  </b></font></font></font></label> 
  <select name="param" id="idselect">
    <option value=""selected="selected">Faites votre choix</option>
    <option value="1">Ain</option>
    <option value="2">Aisne</option>
    <option value="3">Allier</option>
    <option value="4">Alpes-de-Haute-Provence</option>
	<option value="5">é"</option>

  </select><br /><br />-->
  
<label for="Entreprise">  * Entreprise : </label><input name="Entreprise" type="text"  /><br /><br />

<label for="Num_Dep">  * Numero Departement : </label><input name="Num_Dep" type="text"  /><br /><br />

<label for="Nom_Maintenance">  * Nom Maintenance : </label><input name="Nom_Maintenance" type="text"  /><br /><br />

<label for="Num_Maintenance">  * Numero Maintenance : </label><input name="Num_Maintenance"type="text"  /><br /><br />

<label for="Nom_Travaux">  * Nom travaux : </label><input name="Nom_Travaux" type="text"  /><br /><br />

<label for="Num_Travaux"> * Numero Travaux : </label><input name="Num_Travaux" type="text" /><br /><br />

<label for="Adresse"> * Adresse : </label><input name="Adresse" type="text" /><br /><br /><br />

<input type="submit" value="Insérer dans la base">

</p>
<br/>
<br/>
</form> </fieldset><FORM ACTION="http://localhost/test/index.php"> <INPUT TYPE="SUBMIT" VALUE="Annuler"> </FORM> 

 <!-- CSS -->
	   <style type="text/css">
label 
{
	display:block;
	width:200px;
	float:left;
	font-family="Trebuchet, Helvetica, sans-serif";
	font-weight:bold;
	
} 
				
fieldset
{
	margin-bottom: 10px;
	border: #330099 2px solid;
}

fieldset legend
{
	padding: 0 10px;
	border-left: #330099 2px solid;
	border-right: #330099 2px solid;
	font-size: 1.2em;
	color: #999;
}
       </style>

</body></html>

<?php
}
else // le mot de passe n'est pas bon
{
	// On affiche la zone de texte pour rentrer le mot de passe.
?>

<!-- ZONE MOT DE PASSE -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Page protégée par mot de passe</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
   
<body>
	<p>	<br/> <br/>
	Veuillez entrer le mot de passe pour insérer un nouveau client :
	<br/> <br/>	</p>

<form action="protection.php" method="post">
	<p>
	<input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
	</p>
</form>
	<hr/>
	<TABLE BORDER=4 CELLPADDING=0 CELLSPACING=0 ALIGN="LEFT"> <TR><TD> <FORM ACTION="http://localhost/test/index.php"> <INPUT TYPE="SUBMIT" VALUE="Annuler"></TD> </FORM></TR> </TABLE>
</body></html>
<?php
} // Fin du else
// Fin du code :)
?>

et ajout.php
<?php
      
      // déclaration de quelques variables

      $host = "localhost";
      $user = "root";
      $pass = "";
      $bdd = "clients";
      $table = "informations";

      // connection avec MySQL

      mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");

      // Le @ indique à php de ne pas afficher de message d'erreur

      mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");

     
      // stockage dans la bdd
 

$Entreprise = $_POST['Entreprise']; 

$Num_Dep = $_POST['Num_Dep'];
$Nom_Maintenance = $_POST['Nom_Maintenance'];
$Num_Maintenance = $_POST['Num_Maintenance'];
$Nom_Travaux = $_POST['Nom_Travaux'];
$Num_Travaux = $_POST['Num_Travaux'];
$Adresse =$_POST['Adresse'];
    

 /*
      $sql = "INSERT INTO informations(Entreprise, Num_Dep, Nom_Maintenance, Num_Maintenance, Nom_Travaux, Num_Travaux, Adresse) VALUES('$Entreprise', '$Num_Dep', '$Nom_Maintenance', '$Num_Maintenance', '$Nom_Travaux', '$Num_Travaux', '$Adresse')";
      $res = mysql_query($sql) or die(mysql_error());
	  echo 'merci beaucoup, vos infos ont été enregistrées.';

*/
      // déconnection avec MySQL

      mysql_close();

      ?>