Passer tout un select en post

Fermé
Blitz - 6 mai 2011 à 17:58
 Blitz - 8 mai 2011 à 00:32
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 !
A voir également:

7 réponses

kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
Modifié par kadeh le 6/05/2011 à 23:13
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
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
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
7 mai 2011 à 22:22
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
7 mai 2011 à 23:05
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
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
7 mai 2011 à 23:31
<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
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