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 !
A voir également:

7 réponses

kadeh Messages postés 334 Date d'inscription   Statut Membre Dernière intervention   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
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
kadeh Messages postés 334 Date d'inscription   Statut Membre Dernière intervention   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
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

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

Posez votre question
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
kadeh Messages postés 334 Date d'inscription   Statut Membre Dernière intervention   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
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