créer une liste déroulante avec ses valeurs.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : créer une liste déroulante avec ses valeurs.

bingo

par Delay » 27 nov. 2008, 22:21

Merci bien pour t'es explications Ryle

Ca fonctionne ^^

++ Delay

Et encore merci ;)

par Ryle » 24 nov. 2008, 00:13

Ben tu fais comme tu veux, faut juste être cohérent :)

Si tu passes l'attribut value de ton option à vide, alors tu pourras tester ta variable $_POST['passage'] avec la fonction empty().
Si tu le laisse avec la valeur "no", alors empty() ne pourra pas fonctionner et il te faudra vérifier si $_POST['passage'] est égal à "no" pour indiquer à l'utilisateur qu'il a oublié de renseigner ce champ.

Les deux façons de faire sont bonnes, et y en a pas une qui soit vraiment meilleure que l'autre. Fais donc selon ce qui te semble le plus clair et le plus évident, cela te facilitera la vie le jour où tu reviendras sur ce code pour le maintenir ou le faire évoluer :)

Re

par Delay » 23 nov. 2008, 17:35

Bonjour,

Merci Ryle pour t'a réponse ;)

J'ai résolu le soucis de l'id qui était incorrect.

Par contre je comprend le raisonnement pour ce qui est de la ligne séléctionné "no", mais n'arrive pas a le mettre en application .....

Je dois pas mettre de valeur ?

Je dois comparer la valeur "no" ? Du genre if..."no".... else "message d'erreur". Pareil impossible d'écrire cette ligne :s

Par avance merci

Delay

par Ryle » 22 nov. 2008, 14:52

Lorsque tu soumets un select simple (par opposition à un select avec choix multiple), tu envois nécessairement une valeur, celle qui est sélectionnée. Par ailleurs, si tu spécifies un attribut value dans ton option, c'est cette valeur qui sera envoyée (si l'attribut n'est pas spécifié, c'est le libellé qui est utilisé)

Dans ton cas, deux petites choses ne vont pas : au lieu de tester le nom du champ ("passage") tu testes l'id du paragraphe qui est autour (techniques). Donc forcément, côté valeur, tu risques de pas obtenir grand chose même si une ligne est sélectionnée :)

Deuxième problème, c'est que lorsqu'aucune ligne n'est sélectionnée dans ta liste, le premier élément est quand même bien sélectionné. Tu vas donc récupérer la valeur de celui-ci côté php ("no") et comme celle-ci n'est pas vide, tu ne pourras pas signaler à l'utilisateur qu'il a oublié de le renseigné. Il te faut donc adapter ton test ou la valeur que tu envois lorsque cette ligne est sélectionnée :)

Problème

par Delay » 22 nov. 2008, 12:12

Bonjour la communautée,

Je remonte le sujet car mon soucis est a peut près semblable.

Donc mon problème est le suivant:

J'ai crée un formulaire. Jusque ici tout va bien....

Ce formulaire contient des champs, radio et menu déroulant. Deux boutons (1 pour envoyer et l'autre pour reset)

Quand je clique sur envoyer je souhaiterai vérifier les champs non remplis. Tout fonctionne bien pour les champs et les radios, mais pas pour le menue déroulant.

Voici mon code :

Ici la création du menu déroulant dans formulaire.html
 <p id="techniques"><label><b><u>Passage Fibre</u></b> :</label>
    <select name="passage">
      <option value="no">---------------------------</option>
      <option value="fourreauxtv">Fourreaux TV</option>
      <option value="fourreauxft">Fourreaux FT</option>
      <option value="fourreauxinter">Fourreaux Interphone</option>
      <option value="apparent">Apparent</option>
      <option value="goulottes">Goulottes</option>
    </select>
Les informations sont envoyées dans traitement.php qui celui-ci vérifie les champs non remplis
<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', '***********'); // serveur mysql
define('DB_SERVER_USERNAME', '*****'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', '************'); // mot de passe
define('DB_DATABASE', '*****'); // nom de la base

// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);

$msg_erreur = "Erreur. Les champs suivants doivent &ecirc;tre obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien &eacute;t&eacute; prise en compte.";
$message = $msg_erreur;

// vérification des champs
if (empty($_POST['nom']))
  $message .= "Immeuble<br/>";
if (empty($_POST['techniques']))
  $message .= "Passage de fibre<br/>";
if (empty($_POST['techniques2']))
  $message .= "Chez le client<br/>";
if (empty($_POST['taille']))
  $message .= "Taille de l'appartement<br/>";
if (empty($_POST['lieu']))
  $message .= "Lieu du PRI<br/>";
if (empty($_POST['type']))
  $message .= "Type de PRI<br/>";
if (empty($_POST['comments']))
  $message .= "Votre message<br/>";

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', '**********'); // serveur mysql
define('DB_SERVER_USERNAME', '*******'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', '***********'); // mot de passe
define('DB_DATABASE', '**********'); // nom de la base

// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);

$msg_erreur = "Erreur. Les champs suivants doivent &ecirc;tre obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien &eacute;t&eacute; prise en compte.";
$message = $msg_erreur;

// vérification des champs
if (empty($_POST['nom']))
  $message .= "Immeuble<br/>";
if (empty($_POST['techniques']))
  $message .= "Passage de fibre<br/>";
if (empty($_POST['techniques2']))
  $message .= "Chez le client<br/>";
if (empty($_POST['taille']))
  $message .= "Taille de l'appartement<br/>";
if (empty($_POST['lieu']))
  $message .= "Lieu du PRI<br/>";
if (empty($_POST['type']))
  $message .= "Type de PRI<br/>";
if (empty($_POST['comments']))
  $message .= "Votre message<br/>";

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

  echo $message;

// sinon c'est ok
}
 else {

  foreach($_POST as $index => $valeur) {
    $$index = mysql_real_escape_string(trim($valeur));
  }
$sql = "insert into FTTH (nom, techniques, techniques2, taille, lieu, type, comments) values ('$nom', '$techniques', '$techniques2', 
'$taille', '$lieu', '$type', '$comments')";
  
  $res = mysql_query($sql);

  if ($res) {
    echo $msg_ok;
  } else {
    echo mysql_error();
  }

}
?>

  echo $message;

// sinon c'est ok
}
 else {

  foreach($_POST as $index => $valeur) {
    $$index = mysql_real_escape_string(trim($valeur));
  }
$sql = "insert into FTTH (nom, techniques, techniques2, taille, lieu, type, comments) values ('$nom', '$techniques', '$techniques2', 
'$taille', '$lieu', '$type', '$comments')";
  
  $res = mysql_query($sql);

  if ($res) {
    echo $msg_ok;
  } else {
    echo mysql_error();
  }

}
?>
En espérant avoir été clair.

Par avance merci

Delay

par ranlaris » 07 mars 2008, 10:33

je ne connaissais pas ce site

merci !!

par d0m » 07 mars 2008, 10:30

Salut,

il y a des explications et des exemples pour les listes déroulante ici :
site du zéro

c'est avec des pays mais tu peux l'adapter à des nombres.

créer une liste déroulante avec ses valeurs.

par ranlaris » 07 mars 2008, 10:25

bonjour,

je suis débutante et bien que j'ai cherché dans le forum et les tutos, je n'ai pas trouvé mon bonheur.

Je voudrais creer un menu déroulant (edit:une liste déroulante) dans lequel sont déja indiquées des valeurs à choisir (10, 20, 30) qu'il n'y aurait plus qu'a selectionner puis qu'à cliquer sur un bouton "envoyer" pour que la valeur soit envoyée a la base de donnée.
J'avoue que je nage lamentablement.
ca doit être tout bête mais je suis trop débutante pour m'en sortir.
Quelqu'un pourrait il venir à mon secours ?
merci !!