pb insertion champ vide dans BDD via formulaire (PHP/SQL) [Résolu]

pb insertion champ vide dans BDD via formulaire (PHP/SQL) [Résolu] - PHP - Programmation

Marsh Posté le 01-03-2010 à 13:27:35    

Bonjour à tous,
 
J'ai créé un formulaire d'inscription sur mon site et souhaite insérer les valeurs sélectionnées de ce dernier dans ma BDD.
 
voici le code de mon formulaire :

Code :
  1. <form name="form" action="action.php" method="post">
  2.   <fieldset style="border: 3px double #333399">
  3.   <legend>Secteur d'activité</legend>
  4.  
  5.   <!-- Secteur 1 -->
  6.   Secteur d'activité 1 :
  7.     <select name="Zsecteur1" onchange="getSecteur1(this.value);">
  8.       <option value="vide">- - - Choisissez un secteur - - -</option>
  9.     <?php
  10.     /* Construction de la première liste : on se sert du tableau PHP */
  11.     foreach($regions as $nr => $nom)
  12.     {
  13.         ?>
  14.     <option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
  15. <?php
  16.     }
  17.     ?>
  18.     </select>
  19.    
  20.   <span id="blocDepartements">Sous-secteur</span><br />
  21.  
  22.   <!-- Secteur 2 -->
  23.    Secteur d'activité 2 :
  24.     <select name="Zsecteur2" onchange="getSecteur2(this.value);">
  25.       <option value="vide">- - - Choisissez un secteur - - -</option>
  26.     <?php
  27.     /* Construction de la première liste : on se sert du tableau PHP */
  28.     foreach($regions as $nr => $nom)
  29.     {
  30.         ?>
  31.     <option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
  32. <?php
  33.     }
  34.     ?>
  35.     </select>
  36.    
  37.   <span id="blocDepartements2">Sous-secteur</span><br />
  38.  
  39.   Adresse :
  40.   <input type="text" name="Zadresse">
  41.  
  42.   <input type="submit" name="ok" id="ok" value="Envoyer" />
  43.   </fieldset>
  44. </form>


Ce formulaire est composé de 2 menus déroulants, appelant eux-mêmes un second menu déroulant en fonction du choix effectué dans le premier (AJAX) et d'un champ texte.
 
voilà ensuite le fichier "action.php" :

Code :
  1. <?php
  2. echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" );
  3. /* Variables de connexion */
  4. $serveur = "localhost";
  5. $admin   = "******";
  6. $mdp     = "******";
  7. $base    = "******";
  8. //connexion à la base
  9. _AT_mysql_connect($serveur, $admin, $mdp)
  10. or die("Impossible de se connecter au serveur de bases de données.".mysql_error());
  11. //sélection de la base
  12. _AT_mysql_select_db($base)
  13. or die("Impossible de se connecter à la base de données.".mysql_error());
  14. /* Enregistrement du formulaire dans la BDD */
  15. $annuaire = mysql_query("insert into spip_annuaire (secteur1,secteur2,sous_secteur1,sous_secteur2,adresse) values('".$Zsecteur1."','".$Zsecteur2."','".$
  16. Zsous_secteur1."','".$Zsous_secteur2."','".$Zadresse."
  17. ')" );
  18. echo $annuaire;
  19. ?>


Ma requête est effectuée correctement (test avec des alert) et insère une ligne dans ma table mais avec des champs vides. J'ai testé ma requête directement dans PHP My Admin, elle fonctionne correctement. J'ai mis la valeur "adresse" en dur dans ma requête dans action.php, elle apparait bien dans la BDD.
 
J'ai ajouté une ligne de test : "echo $annuaire;" qui m'affiche systématiquement "1"
 
Le problème vient donc à mon avis de la récupération des variables du formulaire et là...je bloque complétement.
Pour info, la récupération des variables "sous_secteur1" et "sous_secteur2" est générée grâce à un autre fichier php.
 
Merci pour votre aide


Message édité par Antho03 le 03-03-2010 à 10:29:49
Reply

Marsh Posté le 01-03-2010 à 13:27:35   

Reply

Marsh Posté le 01-03-2010 à 17:18:32    

tes $zsecteurs $zadresse ont bien été définis  ? et ont bien reçu les valeurs des champs respectifs du formulaire par les méthodes get ou post ? parceque si tout le code d'acton.php est là, ces variables sont vides.

 

$Zsecteur1=$_POST['Zsecteur1'];


Message édité par rengzehn le 01-03-2010 à 17:31:21
Reply

Marsh Posté le 01-03-2010 à 17:29:07    

et pour info, tu devrais proteger ton site de l'injection sql en utilisant http://fr.php.net/mysql_real_escape_string

Reply

Marsh Posté le 03-03-2010 à 10:29:20    

Il manquait en effet tout simplement l'appel des variables...
 
Merci rengzehn

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed