IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

récupérer les valeurs d'une liste d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 444
    Points : 139
    Points
    139
    Par défaut récupérer les valeurs d'une liste d'un formulaire
    Bonjour,

    J'ai un formulaire avec 2 listes et je fait passer des valeurs de l'une à l'autre. Quand je clique sur le bouton OK du formulaire, je veux récupérer les valeurs de la deuxième liste et les afficher sur ma page.
    Mais ça ne m'affiche rien.

    le code de mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <form name="formulaire">
     
    	<table><tr>
    	<td align="center"><b><font size="2">Activités proposées</font></b><br>
    	<select align=top name="liste1" size=6  style="width:120px">
    		<option value="T">T</option>
    		<option value="S">S</option>
    		<option value="O">O</option>
    		<option value="PH">PH</option>		
    	</select>
    	</td>
     
    	<td align="center">
    		<input type="button" value="Ajouter >>>" onClick="Deplacer(this.form.liste1,this.form.liste2)">
    		<br><br>
    		<input type="button" value="&lt;&lt;&lt; Enlever" onClick="Deplacer(this.form.liste2,this.form.liste1)">
    	</td>
     
    	<td align="center"><font size="2"><b>Activités retenues</b></font><br>
    	<select align=top name="liste2" size=6 style="width:120px">
    		<option value="10">----------------------</option>
    	</select>
    	</td>
    	</tr></table>
    	<script language="javascript">
    		// Astuce pour Netscape qui ne supporte pas style="width:100"
    		// Donc : création d'une ligne pour initialiser la largeur puis suppression par ce javascript
    		document.formulaire.liste2.options.length=0;
    	</script>
     
    	<input type="submit" name="valider" value="OK"/>
    </form>
    la fonction Deplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Deplacer(l1,l2) {
    		if (l1.options.selectedIndex>=0) {
    			o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
    			l2.options[l2.options.length]=o;
    			l1.options[l1.options.selectedIndex]=null;
    		}else{
    			alert("Aucune activité sélectionnée");
    		}
    	}
    le code php d'affichage des valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    	if(isset($_POST['valider'])){
    		$p=$_POST['liste2'];		
    		echo $p . '<br />';
    		foreach( $p as $value ){
    			echo $value . '<br />';
    		}
    	}
    ?>
    qu'est ce qui manque ?

    Merci,

    Nico

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque la methode post a ton formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" action="" method="post">
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 444
    Points : 139
    Points
    139
    Par défaut
    OK, mais du coup, j'ai un message d'erreur à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: liste2 in C:\wamp\www\mysite\jpgraph3.php on line 86
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Invalid argument supplied for foreach() in C:\wamp\www\mysite\jpgraph3.php on line 89
    si je comprend bien, ça veut dire que php n'interprète pas liste2 comme un tableau ?
    comment corriger ?

    Merci,

    Nico

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non il te dit qu'il n'a pas recu "liste2" dans POST.
    Tu as bien selectionné un element dans ta liste 2 et pas seulement mis dans la liste2 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Au passage, comme ta liste liste2 n'est pas un select multiple, tu obtiendra une chaine de caractères dans $_POST['liste2'] et pas un tableau. Or un foreach ne peut parcourir qu'un tableau (ou un objet)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 444
    Points : 139
    Points
    139
    Par défaut
    - Même en mettant multiple="multiple" dans liste2, j'ai toujours le même message d'erreur sur la boucle for each

    - je voudrais pouvoir valider le formulaire sans avoir à sélectionner les éléments de liste2 (est-ce qu'il n'y a pas une instructions qui peut le faire automatiquement quand on clique sur le bouton submit ?)
    En plus, même si je sélectionne les éléments de liste2, il ne m'affiche que le dernier.

    Nico

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sur une liste multiple, il faut utiliser un nom en tableau :
    Si tu ne veux pas selectionner, il va falloir utiliser du javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2002
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    J'avais le même problème de passage d'info via un select (multiple)...
    Je ne faisais pas de sélection dans la liste donc il n'envoyait rien !!
    C'est la réponse de Sabotage qui m'a réveillé
    Si tu ne veux pas selectionner, il va falloir utiliser du javascript.

    solution : (encore utile ?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    form.php
    <form name="proposition" id="proposition" method="post" action="form.inc.php" onsubmit="return selecter()">
    <p>
    	<select  name="listeCouleur[]" id="listeCouleur" size="6" multiple>
    		<option value="10">rouge</option>
    		<option value="20">vert</option>
    		<option value="30">jaune</option>
    		<option value="40">bleu</option>
    	</select>
    </p>
    
    <p><input type="submit" value="Validation" id="valider" /></p>
    
    </form>
    
    
    <script type="text/javascript">
    // sélection automatique de tous les élements
    function selecter()
    {
    var lg=document.getElementById('listeCouleur').length;
    for( i=0; i<lg ; i++)
    	document.getElementById('listeCouleur').options[i].selected=true;
    
    return (lg>0);
    }
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    form.inc.php
    <?php
    $i=0;	$listeCouleur="";
    if ( (isset($_POST['listeCouleur']))  AND (is_array($_POST['listeCouleur'])) )
    	{
    	echo "Longueur sélection = ".count( $_POST['listeCouleur'] );
    
    	foreach( $_POST['listeCouleur'] AS $chaine )
    		{
    		$listeCouleur[$i] = $chaine;
    		echo "<br>couleur value= $listeCouleur[$i]";
    		}
    	
    	}
    else echo '<b>listeCouleur non définie, il faut en sélectionner au moins une</b>';	// ne peut se produire avec le javascript
    ?>
    résultat, tout est bien récupéré :
    Longueur sélection = 4
    couleur value= 10
    couleur value= 20
    couleur value= 30
    couleur value= 40
    Delphi 7 pro + Win98se / W2Kpro / XPpro

    j'l'serais bien un jour ou l'autre <<PRO>> : "Patience et longueur de temps font plus que force ni que rage"...

Discussions similaires

  1. Récupérer les valeurs d'une list<double>
    Par rudylar dans le forum C#
    Réponses: 2
    Dernier message: 02/07/2008, 13h35
  2. comment récupérer les valeurs d'une liste déroulante
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 27/06/2008, 20h05
  3. Récupérer les valeurs d'une liste déroulante
    Par s.gallauziaux dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/05/2008, 17h46
  4. Réponses: 11
    Dernier message: 26/04/2007, 10h40
  5. Réponses: 4
    Dernier message: 13/11/2006, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo