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 :

[PHP-JS] Récupérer les valeurs d'une liste déroulante dans une même page


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut [PHP-JS] Récupérer les valeurs d'une liste déroulante dans une même page
    Bonjour,
    je souhaiterais récupérer la valeur d'une liste déroulante dans une même page pour réaliser un compteur d'heures.

    Voici le code :
    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
     
    // tout ceci est dans un formulaire
    for($i=0 ; $i<7 ; $i++)
    {
    	?>	
    		<td id=td_p><select name="horaire[<?php echo $tabnom[$j-1]?>][<?php echo $i?>]">
     
    	<?php
     
    	$query2 = "SELECT plage_horaire FROM horaires";
    	$result2 = mysql_query($query2);
     
    	while($row=mysql_fetch_object($result2))
    	{
    		$horaire = $row->plage_horaire;
    		if($horaire == 'Repos')
    		{
    			echo"
    				<option selected>$horaire</option>";
    				pl_horaire($horaire);
    		}
    	}
     
    	echo"
    		</select></td>";
    }
    Enfait je voudrais récupérer le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    horaire[<?php echo $tabnom[$j-1]?>][<?php echo $i?>]
    qui se trouve dans le select pour afficher le nombre d'heures correspondant lorsque je change la plage horaire dans la liste déroulante.

    Voilà j'espère que j'ai été assez clair.

    Merci d'avance pour votre aide.

  2. #2
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    je vois deux solutions :
    javascript pour récupérer la valeur du select sur l'évènement "onclick"
    php en postant ta page sur elle meme et en récupérant la valeur du select avec "$_POST"

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    Le $_POST sur lui-même ne fonctionne pas.

    Sa me met undefine index.

    Pour le javascript, je ne m'y connais pas trop.
    Pourrais-tu me donner une piste stp !!!

  4. #4
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    le $_POST est obligé de marcher...
    il vaut mieux dire : je n'arrive pas à le faire marcher...
    fais un petit formulaire avec method=post action=tapage et ton select et post le bout de code qui récupère ton post

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    Non en fait je pense savoir pourquoi sa ne fonctionne pas le $_POST.
    Je veux récupérer la valeur du select qui se trouve dans le formulaire, dans ce même formulaire , par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form method="POST" action="mapage.php">
      <select name="horaire[$a][$b]">
         <option>$h</option>
      </select>
      echo $_POST['horaire'][$a][$b];
    </form>
    Tu vois, en fait il me faut récupérer la valeur dans le même formulaire.

    Est-il posible de faire ainsi ??

  6. #6
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    wi c'est possible, mais pour récupérer une valeur $_POST, la condition sine qua non est de poster la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="POST" action="mapage.php">
      <select name="horaire[$a][$b]">
         <option>$h</option>
      </select>
    <input type=submit name=go value=valider>
    if (isset($_POST['go']))  
    echo $_POST['horaire'][$a][$b];
    </form>
    la difficulté va etre dans le fait de récupérer les valeurs $a et $a.
    je les mettrais dans deux champs de type hidden que je ferais passer également en $_POST.
    dis moi si ça te convient (c'est obligé de marcher... )

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    En fait, ce n'est pas ce que je veux faire (dsl).

    Il ne faut pas de bouton pour valider.

    Lorsque j'affiche ma page php sur firefox, j'ai mon tableau avec mes listes déroulantes pour le choix d'une plage horaire.
    Je voudrais que quand l'utilisateur change la plage horaire, récupérer cette valeur dans une autre variable (les plages horaires sont des chaînes de caractère), pour ensuite pouvoir l'exploiter.

    Je pense que comme tu me l'as dit précédemment, le javascript est le mieux approprié.

    Voici ce que j'ai écrit (regarde à la fin du code, j'ai rajouter du javascript, enfin je sais pas si c'est comme sa qu'on fait):
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    //requete pour trouver tous les employés saisonnier
    $query1 = "SELECT nom, prenom FROM employes WHERE actif='o' AND statut='Saisonnier'";
    //exécution de la requete
    $result1 = mysql_query($query1);
     
    while ($row=mysql_fetch_object($result1))
    {	
    	$nom = $row->nom;
    	$prenom = $row->prenom;
     
    	$tabnom[$j] = $nom." ".$prenom;
    	$j++;
     
    	echo"
    		<tr>
    			<td id=td_p><center>$nom $prenom</center></td>";
     
    	for($i=0 ; $i<7 ; $i++)
    	{
    		?>	
    			<td id=td_p><select name="horaire[<?php echo $tabnom[$j-1]?>][<?php echo $i?>]">
     
    		<?php
     
    		$query2 = "SELECT plage_horaire FROM horaires";
    		$result2 = mysql_query($query2);
     
    		while($row=mysql_fetch_object($result2))
    		{
    			$horaire = $row->plage_horaire;
    			if($horaire == 'Repos')
    			{
    				echo"
    					<option selected>$horaire</option>";
    				pl_horaire($horaire);
    			}
    		}
     
    		echo"
    				</select></td>";
    	}
    	?>
     
    	<a href="#" onclick="<?php $h ?>= getElementByName('horaire')"></a>
     
    	<?php
    	$nb = recup_nb_heure($tabnom[$j-1], $h);
    	echo "	<td id=td_p><center>$nb</center></td>
    			
    		</tr>";
    }
    Donc comme tu peux le voir, je voudrais que ma variable $h ait pour valeur le tableau du select.

  8. #8
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    alors le plus simple est de faire comme je t'ai dit précédemment avec les modifs suivantes :
    - tu enlèves le bouton submit
    - tu ajoutes dans ton select un évènement onchange() qui va poster ta page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="machin" onchange="form.submit();">

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    Ok, voici ce que j'ai fait :
    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
     
    for($i=0 ; $i<7 ; $i++)
    	{
    		?>	
     
    			<td id=td_p><select name="horaire[<?php echo $tabnom[$j-1]?>][<?php echo $i?>]" onChange="recup_nb_heure($tabnom[$j-1])">
     
    		<?php
     
    		$query2 = "SELECT plage_horaire FROM horaires";
    		$result2 = mysql_query($query2);
     
    		while($row=mysql_fetch_object($result2))
    		{
    			$horaire = $row->plage_horaire;
    			if($horaire == 'Repos')
    			{
    				echo"
    					<option selected>$horaire</option>";
    				pl_horaire($horaire);
    			}
    		}
     
    		echo"
    				</select></td>";
    	}
     
    	echo "	<td id=td_p><center>$nb</center></td>
    			
    		</tr>";
    Fonction recup_nb_heures pour le onChange :
    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
     
    /* récupération du nombre d'heures d'un employé */
    function recup_nb_heure($nom)
    {
    ?>
    	<script language="Javascript">
    		<?php $h ?>= getElementsByName('horaire');
    	</script>
    <?php
     
    	$nb = 0;
     
    	for ($i=0 ; $i<7 ; $i++)
    	{
    		$query = "SELECT nb_heures FROM horaires WHERE plage_horaire='$h[$nom][$i]'";
    		$result = mysql_query($query);
    		$row = mysql_fetch_object($result);
     
    		$nb += $row->nb_heures;
    	}
     
    	return $nb;
    }
    Sa m'affiche 33 dans ma page pour $nb !!!!

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 62
    Points
    62
    Par défaut
    Ce que azazel voulait dire avec ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <select name="machin" onchange="form.submit();">
    C'était que avec cela la page se rechargera lors d'une selection dans ton select.

    Apres il faut utiliser la méthode isset comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_POST['machin']))   
    {
        // Ici tu mettra le bout de code qui traite la valeur qui est retournée dans machin
    }else{
       // Ici tu mets le bout de code qui ne traite pas le machin (ton form par exemple)
    }
    Ce qu'il est important de comprendre c'est que si on a pas selectionné de valeur on passera pas dans le if, si on en a selectionner une on passera dans le if.

    J'espère que ça t'aidera.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    Bon je pense qu'on ne se comprends pas. Je vais essayer de réexpliquer mon problème.

    Je créé un formulaire qui contient un tableau avec plusieurs listes déroulantes.
    Chaque liste déroulante est par défaut à 'Repos', et je souhaiterais que quand l'utilisateur change la plage horaire (donc change la valeur du select) récupérer le tableau horaire 2D qui se trouve dans ce select.

    Voici mon morceau de code pour le select :
    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
     
    for($i=0 ; $i<7 ; $i++)
    {
    	?>	
     
    		<td id=td_p><select name="horaire[<?php echo $tabnom[$j-1]?>][<?php echo $i?>]" onChange="recup_nb_heure($tabnom[$j-1])">
     
    	<?php
     
    	$query2 = "SELECT plage_horaire FROM horaires";
    	$result2 = mysql_query($query2);
     
    	while($row=mysql_fetch_object($result2))
    			{
    		$horaire = $row->plage_horaire;
    		if($horaire == 'Repos')
    		{
    			echo"
    				<option selected>$horaire</option>";
    			pl_horaire($horaire);
    		}
    	}
     
    	echo"
    			</select></td>";
    }
     
    echo "	<td id=td_p><center>$nb</center></td>
    			
    	</tr>";
    Voici ma fonction que j'appelle sur le onChange :
    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
     
    /* récupération du nombre d'heures d'un employé */
    function recup_nb_heure($nom)
    {
    ?>
    	<script language="Javascript">
    		<?php $h ?>= getElementsByName('horaire');
    	</script>
    <?php
     
    	$nb = 0;
     
    	for ($i=0 ; $i<7 ; $i++)
    	{
    		$query = "SELECT nb_heures FROM horaires WHERE plage_horaire='$h[$nom][$i]'";
    		$result = mysql_query($query);
    		$row = mysql_fetch_object($result);
     
    		$nb += $row->nb_heures;
    	}
     
    	return $nb;
    }
    Comme je l'ai déjà dit, je ne m'y connais pas vraiment en javascript, donc peut etre que mon script ne fait rien (je parle pour le $nb qui ne change pas)

    Voilà, j'espère avoir bien recadrer ma demande.

    Merci d'avance à tous.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 62
    Points
    62
    Par défaut
    Voilà, après avoir réfléchis à ton problème ...

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <html>
    <head>
    </head>
    <body>
        <form name='monForm' method='POST' action='maPage.php'>
        <?php
     
        for($i=0 ; $i<7 ; $i++)
        {
            echo "<td id=td_p". $i ."><select name='horaire[". $tabnom ."[". $j ."-1]][". $i ."]' onchange='form.submit();'>";
     
            $query2 = "SELECT plage_horaire FROM horaires";
            $result2 = mysql_query($query2);
     
            while($row=mysql_fetch_object($result2))
            {
                $horaire = $row->plage_horaire;
                if($horaire == 'Repos')
                {
                    echo "<option selected>$horaire</option>";
                    pl_horaire($horaire);
                }
            }
            echo "</select></td>";
        }
     
            if(isset($_POST['horaire']))
            {
                // Ici on va traiter la variable que tu veut récupérer en l'occurence ton tableau
                // La variable monTab contient alors le tableau des horaires
                $monTab = $_POST['horaire'];
                // ici tu peut appeler ta fonction qui traite les valeurs de ton tableau
                $nb = maFunction($monTab); // Par exemple
                // Et si tu veux afficher apres
                echo "Nombre d'heures = ". $nb;
     
            }else{
                // Cette partie du code sera "exécutée" lors du premier chargement de la page
                // Si il n'y a rien d'autre à faire que l'affichage du formulaire lors du premier
                // affichage de la page alors on peut laisser la partie vide
            }
        ?>
        </form>
    </body>
    </html>
    Si tu as des questions n'hésite pas mais normalement avec ça tu devrais comprendre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/09/2012, 23h48
  2. Réponses: 4
    Dernier message: 20/02/2012, 16h59
  3. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  4. Réponses: 6
    Dernier message: 25/10/2009, 11h56
  5. [MySQL] récupérer l'item selctionné d'une liste déroulante dans une variable php
    Par car0line dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 22/04/2009, 14h30

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