recuperation par un $_POST

Eléphanteau du PHP | 36 Messages

05 janv. 2006, 11:28

Bonjour et tout d'abord bonne année à tous :wink: ,

un tout petit probleme, je n'arrive pas à récuperer par un $_POST les valeurs d'une liste.

dans mon formulaire j'ai ca :
<form method="post" action="test.php" name="test" onsubmit="return Controle()">

// plusieurs champs dont je récupere la valeur san probleme
// ...
// ...

// le select qui pose probleme
<select class="list_tri" name="lst_ventil[]" id="lst_ventil" size=10 ondblclick="TransfereListe('lst_ventil','lst_div');">
</select>

</form>
Pour récuperer ma liste entierement je fais ca :
$list = $_POST['lst_ventil'];
$nb = count($list);
for ($i=0;$i<$nb;$i++)
{
    echo ($list[$i]."\n")
}
cela me renvoie l'erreur suivante :
Notice: Undefined index:lst_ventil in ...........

a noter : ma liste est vide au depart, je la rempli grace a du javascript a partir d'une autre liste

Merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 janv. 2006, 11:36

salut,

la balise "select" n'est pas fermée d'où peut-être l'erreur :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 36 Messages

05 janv. 2006, 11:45

Re,

Il me semble que je ferme bien ma balise select à moins qu'il y a quelque chose qui m'echappe. :?

Mammouth du PHP | 19672 Messages

05 janv. 2006, 11:46

Tu ne peux retrouver dans $_POST['lst_ventil'] que la valeur sélectionnée, pas toutes les valeurs de la liste, à moins d'ajouter l'attribut "multiple" dans la balise <select> et de toutes les sélectionner.

Ce que tu veux faire relève plus de JavaScript que de PHP à mon sens. :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 janv. 2006, 11:49

effectivement j'avais fait la confusion avec le javascript pour remplir la liste.

regarde ce que tu as comme vaiables post a l'arrivé (place ce bout de code sur la page de traitement):
<pre>
<?
var_dump($_POST);
?>
</pre>
verifis aussi le code source si les balises "option" sont bien construites.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 36 Messages

05 janv. 2006, 11:56

Effectivement, en faisant un dump mon select n'apparait pas :cry: .

Je vais essayer de récuperer mes valeurs par javascript.
Peut être en codant l'evenement OnClick de mon submit de formulaire et de récuperer mes valeurs dans un tableau ? :roll:

merci de votre aide (tres) rapide :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 janv. 2006, 12:00

comme l'as fait remarquer Cyrano il faut ajouter l'attribut "multiple" :
<select class="list_tri" name="lst_ventil[]" id="lst_ventil" size=10 ondblclick="TransfereListe('lst_ventil','lst_div');" multiple>
</select> 
ensuite il faudrait voir comment est remplie cette liste, parceque là il n'y a pas d'options donc pas de retour.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 36 Messages

05 janv. 2006, 12:10

En fait, j'ai 2 listes. La première est remplie par une requete sql. Un double click sur un element de la première liste alimente ma 2eme liste. ceci est fait par une fonction javascript (transfereliste) que j'ai trouvé je ne sais plus où.

J'aurai pu faire cela avec une seule liste à selection multiple mais ma deuxieme liste doit être triée, les valeurs sont ajoutées dans un ordre précis. C'est pour cela que j'ai traité le problème de cette facon.

Je sais c'est un peu tordu, mais pourquoi faire simple quand on peut faire compliqué :wink:

je vais essayer de resoudre cela en javascript merci de votre aide,

je passe ce thread en resolu car au niveau php y'a plus de probleme, je réouvrirai un thread sur le forum approprié si besoin :)

Eléphanteau du PHP | 36 Messages

05 janv. 2006, 15:09

Pour info,

Voilà la fonction javascript pour récuperer tous les elements d'un select même s'ils ne sont pas selectionnés

(le select est de type multi)
function RecupValeurs(idNomListe)
{
    var objListe = document.getElementById(idNomListe)

    // Nombre d'elements de la liste
    nb = oblListe.lenght;

    // On selectionne tous les elements de la liste
    for (i=0; i<nb; i++)
    {
        objListe.options[i].selected=true;
    }
}
voilà on peut récuperer enfin les valeurs de la liste dans $_POST