Rechercher : dans
Par :

Recuperer en php un select multiple formulai

Dernière réponse le 28 jan 2009 à 12:45:51 Pierre, le 20 avr 2004 à 00:39:05 
 Signaler ce message aux modérateurs

Bonjour a tous,

je voudrais pouvoir recuperer en PHP les valeurs contenues dans un select multiple d'un formulaire.

je pensais utiliser la fonction serialize mais je n arrive pas a comprendre comment l utiliser

voici mon formulaire :

<?
echo "<form action='toto4.php' method='post' name='form' >";
echo "<select size='4' name='listecouleur> ";
echo "<OPTION value='1'>Bleu<OPTION> ";
echo "<OPTION value='2'>rouge<OPTION> ";
echo "<OPTION value='3'>jaune<OPTION> ";
echo "<OPTION value='4'>vert<OPTION> ";
echo "</select> ";

$liste = serialize(listecouleur);

echo "<a href='toto4.php?tablo=$liste'>page suivante</a>";
echo "</form>";
?>


a l execution il y a un message d erreur indiquant que listecouleur n existe pas

quelqu un a t il une solution ?

merci a vous

Pierre

Meilleures réponses pour « Recuperer en php un select multiple formulai » dans :
Il est possible de récupérer le code source PHP d'un site VoirMythe Un utilisateur peut récupérer le code source PHP d'un site web comme il peut récupérer le code HTML. Réalité FAUX Explications Les fichiers PHP (ASP, JSP, etc.) sont des fichiers interprétés côté serveur, ce qui signifie que le serveur web...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Les cookies et les en-têtes HTTP VoirLes en-têtes HTTP Lors de chaque échange par le protocole HTTP entre votre navigateur et le serveur, des données dîtes d'en-têtes contenant des informations sur les données à envoyer (dans le cas d'une requête) ou envoyées (dans le cas d'une...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

kalamit, le 20 avr 2004 à 08:50:01

Salut,

C'est normal que cela ne fonctionne pas si ton formulaire et ton traitement se trouve dans la meme page.

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

2

Pierre, le 20 avr 2004 à 09:28:59

Je sais bien que normalement on recupere les variables d un formulaire sur une autre page mais dans le cas d un SELECT MULTIPLE tu ne peux pas recuperer sur une autre page car le choix de l utilisateur est mis dans un tableau et donc ne sont pas transmis a la page d apres sauf a utiliser serialize mais que je ne vois pas comment utiliser

j ai trouve une solution avec une fonction java mais j aimerai trouver comment le faire en php

merci a vous pour votre aide

Répondre à Pierre

6

kalamit, le 20 avr 2004 à 09:51:50
  • +1

En php, je le repete, ce n'est pas possible puisqu'il doit y avoir interaction avec le formulaire. Le php est executé avant le chargement de la page dans le navigateur. Il ne peut donc pas etre interpreté après que l'utilisateur ait fait un choix dans ton formulaire.

La bonne solution est celle donnée par Flokocha en javascript (il y en a surement d'autre).

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

3

fat_cartman, le 20 avr 2004 à 09:35:50

Es tu sûr qu'il y a un probleme à transmettre les tableaux??? J'en utilise courament pour traiter des listes de checkbox ou autres, et je n'ai jamais eu aucun probleme à les passer en POST.

Fat_Cartman,
Parce que je le vaux bien... 

Répondre à fat_cartman

4

Pierre, le 20 avr 2004 à 09:39:53

Tu passes des tableaux sans utiliser la fonction serialize et ca passe ? peut etre en php3 mais plus en php4 ou 5 je crois

en tout cas ce formulaire avec un select je n arrive pas a le passer quand je fais un $_POST dans la seconde page j ai tous les elements de mon formulaire (que j ai supprimé ici pour l exemple)sauf le SELECT

comment feriez vous ?

Répondre à Pierre

7

fat_cartman, le 20 avr 2004 à 09:52:37

Ca marche bien en php4, et certainement avec php5...

Fat_Cartman,
Parce que je le vaux bien... 

Répondre à fat_cartman

5

flokocha, le 20 avr 2004 à 09:41:32
  • +3

Trouvé sur www.phpcs.com :

<?
// Traitement après post et affichage des valeurs du champ select
if ($HTTP_POST_VARS["Col1"] != "")
{
    $Col1_Array = $HTTP_POST_VARS["Col1"]; 
    for ($num = 0; $num < count($Col1_Array); $num++)
    {
    echo $Col1_Array[$num]."<br>";
    }
}
?>
<html>
<head>
<title>Recuperer valeur select dans variable php</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script>
function PostSelect(liste)
{
    // On compte le nombre d'item de la liste select
    NbCol1 = document.forms[liste].elements.Col1.length;
    
    // On lance une boucle pour selectionner tous les items
    for (a = 0; a < NbCol1; a++)
    {
    document.forms[liste].elements.Col1.options[a].selected = TRUE;
    }
    
    // On modifie l'ID  du champ select pour que PHP traite cette 
    // dernière comme un array
    document.forms[liste].elements.Col1.name = "Col1[]";

    // On soumet le formulaire
    document.forms[liste].submit();
}
</script>
</head>

<body>
<form name="Liste1" method="post" action="capture_select.php">
    <select name="Col1" size="4" multiple style="width: 150px">
    <option value="Valeur 1">Valeur 1</option>
    <option value="Valeur 2">Valeur 2</option>
    <option value="Valeur 3">Valeur 3</option>
    <option value="Valeur 4">Valeur 4</option>
    <option value="Valeur 5">Valeur 5</option>
    </select><br><br>
    <input name="Envoyer" type="button" value="Envoyer" onClick="javascript:PostSelect('Liste1')">
</form>
</body>
</html>

Répondre à flokocha

13

lolo, le 12 jui 2004 à 14:38:01

Désolé,
mais en enlevant la boucle dans le PHP
çà marche pas, çà m'imprime: Array c tout.

Répondre à lolo

8

Pierre, le 20 avr 2004 à 09:57:58

Merci a toi

j ai corrigé 2 erreurs et ca marche

il faut mettre true en minuscule et non en majuscule et enlever la boucle dans le php sinon il transmet tous les elements et non uniquement ceux selectionnés

Merci encore

Répondre à Pierre

9

flokocha, le 20 avr 2004 à 10:02:30

Remercie l'auteur de ce script! :o)

Mais méfie-toi des $HTTP_POST_VARS, c'est plus trop conseillé.

Répondre à flokocha

10

DocWario, le 24 mai 2004 à 12:33:17
  • +3

En fait le truc c est d appeler le select comme un tableau et php le recupere bien en tableau :

<select name="users[]" multiple>

Répondre à DocWario

11

abedlkader, le 25 jun 2004 à 10:20:14

Comment fait-on svp pour empecher un utilisateur d'appuyer sur un bouton tant quil n'a pas rempli un champ text et textarea?
Merci de votre aide

Répondre à abedlkader

12

Senta, le 5 jui 2004 à 07:00:26
  • +2

Bonjour.
Je ne sais pas si vous avez votre réponse, mais ça peut servir à quelqu'un si il passe par ce post (trés bien référencé d'ailleur par google :) )
Là, vous avez la réponse à vos soucis, il faut mettre en nom du select quelque chose comme ça : nomdemonselect[]
qui fait en sorte que php puisse interprété que c'est un tableau qui lui est envoyé.
http://liihs.univ-tlse1.fr/bastide/Teaching/php/forms.php
cependant : j'ai constaté une chtite chose : si vous construisez une fonction du type :

function constr_select_multiple($table, $nom, $selected, $id, $label)
{
    $query = "SELECT * FROM $table";
    $res = mysql_query($query) or die(mysql_error() . "<br>$query<br>");
    $select = "<select name='" . $nom . "[]' size='5' multiple>";
    $select .= "<option value=''>Cliquez Ici</option>";
    while ($data = mysql_fetch_array($res)) {
        if (recherchetab($data[$id], $selected) == true) {
            $complement = " selected";
        } 
        $select .= "<option value='" . $data[$id] . "' $complement>" . $data[$label] . "</option>";
        $complement = "";
    } 

    $select .= "</select>";
    return($select);
} 

Remarquez la ligne contenant ceci :
  $select = "<select name='" . $nom . "[]' size='5' multiple>";

si l'on passe en variable le nom du select, il faut concaténer, sinon, un message d'erreur apparait lors de la consultation de la page comme quoi il manque un ] alors qu'il y est.

Vlà, c'est tout, j'espère que ça servira à quelqu'un :)
Bye et surtout, (je vais faire une conclusion à caractère politique )
Vive les Endive Braisées looooooooool
@+ ;)

Répondre à Senta

16

Moa!, le 18 avr 2007 à 14:11:20

Après de longues recharches, tu m'as apporté la réponse. Merci! Pour récupérer simplement les sélections lorsqu'elles sont multiples, il suffit de rajouter [] au nom de la sélection! C'est tellement simple!!

Répondre à Moa!

14

DgSe95, le 4 jui 2006 à 03:38:49

Bonjour a tous,

je voudrais juste rajouter pour la personne qui a stipuller qu'il etait impossible de creer un formulaire + son traitement en php dans la meme page....

ben cela est tout a fait possible :

<form name="nomForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">

ou de maniere plus securisée pour éviter certaines failles... ;)

<form name="nomForm" action="<?php echo htmlentities(strip_tags($_SERVER['PHP_SELF'])); ?>" method="post" enctype="multipart/form-data">


on peut utiliser aussi de la meme maniere qu'avec $_SERVER['PHP_SELF'] ceci : $_SERVER['SCRIPT_NAME']

en esperant avoir aider quelque uns ;)

@++

DgSe95

Répondre à DgSe95

15

fastflood, le 10 fév 2007 à 23:25:46
  • +13

Pour ceux qui veulent une solution simple :
============================
Dans le formulaire :
--------------------
<select name="ressources[]" size="15" multiple>
...
</select>

Pour récupérer :
-----------------
foreach($_POST["ressources"] as $value)
{
// traitements : $value contient les valeurs successives
}


NB : dans les posts précédents, il y a une confusion entre les variables tableaux d'un script qui sont passées à une autre page par un serialize et les données d'un formulaire qui ne deviennent des variables que sur la page qui les reçoit.
Donc le fait que le formulaire et le script soient ou non sur la même page n'a absolument aucune importance.

Répondre à fastflood

18

David, le 7 jun 2007 à 18:05:12

T'as solution simple marche très bien. Cependant, ce que je recherche, pour ma part, c'est presque ça, à quelque chose pret.

Mon formulaire est envoyé par e-mail, et met à disposition aux utilisateurs un 'select multiple'. J'aimerais que dans mon le mail apparaisse tout ce qu'il a selectionné dans mon select multiple. ex:
-------------------------------------------------------
mail(
'exemple@exemple.fr',
'Commande',
$_POST['nom'] . " " . $_POST['prenom'] . " a passé une commande de:\n" . $_POST['references'] . "\n\nA l'adresse de livraison:\n" . $_POST['adresse_livraison'], $entetemail
);
-------------------------------------------------------

Que dois je changer ?

Répondre à David

19

Edouard, le 7 jun 2007 à 18:16:47

Tu fait une variable $selection et tu concatene toutes les valeurs selectionnées, ensuite tu envoies to email avec le contenu dont $selection

Répondre à Edouard

20

David, le 7 jun 2007 à 19:50:57

Pourrais tu m'en faire un exemple ?

Répondre à David

21

David, le 7 jun 2007 à 22:40:09

C'est bon merci ;)

Répondre à David

22

 Peter111, le 28 jan 2009 à 12:45:51

Salut, alors, "<select name='listecouleur>" il manque simplement le ' après 'listecouleur voila j'espère que cela t'aideras ;)

Répondre à Peter111
Collection CommentÇaMarche.net