Aller au contenu

insertion champ vide via formulaire (PHP/SQL)


Sujets conseillés

Posté

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 :

<form name="form" action="action.php" method="post">
<fieldset style="border: 3px double #333399">
<legend>Secteur d'activité</legend>

<!-- Secteur 1 -->
Secteur d'activité 1 :
<select name="Zsecteur1" onChange="getSecteur1(this.value);">
<option value="vide">- - - Choisissez un secteur - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($regions as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
<?php
}
?>
</select>

<span id="blocDepartements">Sous-secteur</span><br />

<!-- Secteur 2 -->
Secteur d'activité 2 :
<select name="Zsecteur2" onChange="getSecteur2(this.value);">
<option value="vide">- - - Choisissez un secteur - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($regions as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
<?php
}
?>
</select>

<span id="blocDepartements2">Sous-secteur</span><br />

Adresse :
<input type="text" name="Zadresse">

<input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</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" :

<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion */
$serveur = "localhost";
$admin = "******";
$mdp = "******";
$base = "******";

//connexion à la base
_AT_mysql_connect($serveur, $admin, $mdp)
or die("Impossible de se connecter au serveur de bases de données.".mysql_error());

//sélection de la base
_AT_mysql_select_db($base)
or die("Impossible de se connecter à la base de données.".mysql_error());

/* Enregistrement du formulaire dans la BDD */

$annuaire = mysql_query("insert into spip_annuaire (secteur1,secteur2,sous_secteur1,sous_secteur2,adresse) values('".$Zsecteur1."','".$Zsecteur2."','".$Zsous_secteur1."','".$Zsous_secteur2."','".$Zadresse."')");
echo $annuaire;

?>

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.

"echo $annuaire;" 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

Posté

A moins que tu n'utilises une option php qui est fortement déconseillée, les variables de ton formulaire sont dans $_POST['nom_du_champ'], pas dans $nom_du_champ...

Jacques.

Posté

A moins que tu n'utilises une option php qui est fortement déconseillée, les variables de ton formulaire sont dans $_POST['nom_du_champ'], pas dans $nom_du_champ...

Jacques.

Il manquait en effet tout simplement l'appel des variables..., par exemple :

$Zsecteur1 = htmlentities($_POST['Zsecteur1']);

Merci Jacques

Posté

Ne pas oublier de valider ou d'escaper (avec mysql_real_escape_string) toutes données reçues (dans un $_POST, $_GET, $_COOKIE, $_SERVER...) avant de les passer à ta bdd. Sinon tu ouvres la porte à des injections SQL.

Jacques.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...