Passer tout un select en post

Blitz -  
 Blitz -
Bonjour,

Voici la ligne de mon select :

<select size="10" name='test[]' id="lst_motscles" style="width:200px; display:none;" multiple="multiple">
</select>

et dans le script :

$motcles=$_POST['test'];

(Donc oui, j'ai déjà cherché.)

Seulement lorsque je fais un print_r($_POST) ou un var_dump($_POST), toutes les autres variables que j'ai dans le formulaire passent sauf celle ci...
(Mon select se remplit avec des fonctions javascript, mais je doute que cela change quelque chose...)

Merci !

7 réponses

  1. kadeh Messages postés 341 Statut Membre 92
     
    Bonjour,

    if(isset($_POST['test']) && !empty($_POST['test'])){ 
      $motcles = $_POST['test']; 
      foreach($motcles as $selectValue){ 
      //affichage des valeurs sélectionnées 
        echo $selectValue."<br/>"; 
      } 
    }


    @+
    0
  2. Blitz
     
    Bonjour,

    Merci pour la réponse, mais le problème est que le test ne passe pas, vu que le $_POST['test'] n'est pas initialisé. D'ailleurs lorsque j'arrive à cette page, j'ai une erreur "undefined index : test", avec numero de ligne correspondant à la ligne où j'utilise $_POST['test'];

    J'ai plusieurs autres valeurs qui passent en POST, mais pas des tableaux.

    Merci
    0
  3. kadeh Messages postés 341 Statut Membre 92
     
    Bonjour,

    "D'ailleurs lorsque j'arrive à cette page, j'ai une erreur "undefined index : test", avec numero de ligne correspondant à la ligne où j'utilise $_POST['test']; "
    c'est normal, il faut vérifier que le formulaire est posté avant de faire $_POST['test']

    pouvez-vous poster le script du formulaire et celui de traitement(utiliser la balise code svp)
    @+
    0
  4. Blitz
     
    Formulaire

    <form action="afficher" method="post" name="recherche"> 
    <div class="demo"><div class="ui-widget"> 
    <label for="txt_motcle">Mot clés: </label><br/> 
    <input  id="txt_motcle" /> 
    <input type="button" value="Ajouter" id="btn_ajout"/></div></div> 
    <select name="test[]" id="lst_motscles" style="width:200px; display:none;"  multiple="multiple"> 
    </select> 
    </form> 
    

    Les lignes en gras sont pour utiliser un code javascript permettant une autocomplétion dans ma zone de texte. Mon select se remplit lorsque j'appuie sur le bouton "Ajouter".

    Le script où je récupère le poste.

     
    public function index() 
    { 
     print_r($_POST); 
     var_dump($_POST); 
     $nom=$_POST['nomauteur']; 
     $titre=$_POST['titre']; 
     $dept=$_POST['departement']; 
            //code que vous m'avez donné plus tôt 
     if(isset($_POST['test']) && !empty($_POST['test'])){  
      $motcles = $_POST['test'];  
      foreach($motcles as $selectValue){  
                           //affichage des valeurs sélectionnées  
             echo $selectValue."<br/>";  
      }  
            }

    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    salut,
    Mon select se remplit avec des fonctions javascript, mais je doute que cela change quelque chose...

    1. as tu qui sélectionné les options générés par le script javascript ?
    car si le select n'a pas de "value" (valeurs sélectionnées) ne t'attend pas à un $_POST['test'] non vide.

    2. $_POST['test'] est un tableau mais déjà répond à ma première question.
    0
  7. kadeh Messages postés 341 Statut Membre 92
     
    <form action="afficher" method="post" name="recherche"> 
    dans l'attribut "action" on doit indiquer l'adresse du fichier de traitement ou on peut le laisser vide si le traitement se fait sur la même page

    - n'oublier pas l'attribut "name" pour récuperer les données du formulaire:
    <input  id="txt_motcle" />

    public function index() {
      print_r($_POST); // à quoi sert ?
      var_dump($_POST); // à quoi sert ?
      $nom=$_POST['nomauteur']; // d'où vient "nomauteur"
      $titre=$_POST['titre']; // d'où vient "titre"
      $dept=$_POST['departement'];  //d'où vient "departement"
      //code que vous m'avez donné plus tôt 
      if(isset($_POST['test']) && !empty($_POST['test'])){  
      $motcles = $_POST['test'];  
      foreach($motcles as $selectValue){  
       //affichage des valeurs sélectionnées  
       echo $selectValue."<br/>";  
      }  
    }

    - comment vous appelez votre fonction pour afficher les données du formulaire?
    - les deux script (formulaire et traitement) sont-ils sur la même page?

    essayez en premier lieu cette solution:
    1- laissez l'attribut "action" du formulaire vide
    2- mettez le code suivant juste avant le formulaire et voyez ce que ça donne
    <?php
    
    if(isset($_POST['test']) && !empty($_POST['test'])){ 
    	$motcles = $_POST['test']; 
    	foreach($motcles as $selectValue){ 
         //affichage des valeurs sélectionnées 
    	   echo $selectValue."<br/>"; 
    	}
    }
    	 
    ?>

    @+
    0
  8. Blitz
     
    var_dump et print_r servent juste à afficher ce que contient $_POST.
    Mon script où j'utilise $_POST s'appelle "afficher.php", donc il me semble que l'attribut "action" est bien rempli. D'ailleurs les variables "nomauteur" par exemple proviennent du même formulaire que "test". Il y a uniquement "test" qui ne passe pas.

    En laissant l'attribut "action" vide, même problème, uniquement le "test" ne passe pas.
    0