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 Contenu Select Dynamique


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Récupérer Contenu Select Dynamique
    Bonjour tous le monde Je rencontre un petit problème de programmation. Voilà mon programme, il ressemble à ceci :

    Nom : Probleme 1.png
Affichages : 413
Taille : 19,3 Ko

    Le fonctionnement est hyper simple :

    -Par défaut nous avons plusieurs genres de films proposés sur la gauche, il est possible de les faire passer dans le menu de droite (grace au bouton central >>).
    Ceci permettant à l'utilisateur de selectionner les genres de films qu'il préfère.

    C'est là qu'arrive mon problème, lorsque je clique sur "Valider" nous sommes redirigés vers une autres page pour traiter les données.
    Mais comment récupérer les éléments qui ont été envoyés dans le second <select></select> "Types séletionnés" ?

    Voici mon code :

    page1.php

    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
     
     
    <form name="formulaire" method="post" action="page2.php">
    	<table>
    		<tr>
    			<td width="30%" align="center">
    				<div style="line-height:30px;">Tous les types :</div>
    				<SELECT name="ListGenre" size="5" multiple style="width:300px;">
    					<?php // Liste les genres existants
    					$sql = "SELECT * FROM genreFilms ORDER BY genre_nom";
    					$resultat = mysql_query($sql);
    					while ($ligne = mysql_fetch_object($resultat)) 
    					{
    						print ("<option value='$ligne->genre_id'>$ligne->genre_nom</option>\n");
    					}
    					?>
    				</SELECT>
    			</td>
    			<td width="10%" align="center" valign="middle">
    				<p><a href="javascript:void(0);" onClick="MoveListe('TypGenre', 'ListGenre')"> << </a></p>
    				<p><a href="javascript:void(0);" onClick="MoveListe('ListGenre', 'TypGenre')"> >> </a></p>                            
    			</td>
    			<td width="30%" align="center">
    				<div style="line-height:30px;">Types sélectionnés :</div>
    				<select name="TypGenre" size="5" multiple style="width:300px;">
    				</select>
    			</td>
    			<td width="20%" valign="middle">
    				<table align="center" width="100%" cellpadding="2" cellspacing="10">
    					<tr>
    						<td class="creation">
    							<input type="submit" name="submit" value="Valider">
    						</td>
    					</tr>
    				</table>
    			</td>
    		</tr>
    	</table>  
    </form>
    Les données sont sencées être récupérées ici :

    page2.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php 
     
    include ("connexion.php"); 
     
    if(isset($_POST['submit']))
    {
    	// Récupération du contenu du select TypGenre ... Un truc du genre : $_POST['TypGenre']
    }
     
    ?>
    Si quelqu'un veut bien me venir en aide, ça serait bien sympathique

    PS :
    - Oui je sais , de nos jours on utilise mysqli.
    - Oui il manque des genres de films, ils arriveront par la suite

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="TypGenre[]" size="5" multiple style="width:300px;">
    $_POST['TypGenre'] sera un tableau.

    A+.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour ton aide, je viens de modifier le code. Il a maintenant la forme suivante :
    {Il reste un problème}

    page1.php

    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
     
     
    <form name="formulaire" method="post" action="page2.php">
    	<table>
    		<tr>
    			<td width="30%" align="center">
    				<div style="line-height:30px;">Tous les types :</div>
    				<SELECT name="ListGenre[]" size="5" multiple style="width:300px;">
    					<?php // Liste les genres existants
    					$sql = "SELECT * FROM genreFilms ORDER BY genre_nom";
    					$resultat = mysql_query($sql);
    					while ($ligne = mysql_fetch_object($resultat)) 
    					{
    						print ("<option value='$ligne->genre_id'>$ligne->genre_nom</option>\n");
    					}
    					?>
    				</SELECT>
    			</td>
    			<td width="10%" align="center" valign="middle">
    				<p><a href="javascript:void(0);" onClick="MoveListe('TypGenre[]', 'ListGenre[]')"> << </a></p>
    				<p><a href="javascript:void(0);" onClick="MoveListe('ListGenre[]', 'TypGenre[]')"> >> </a></p>                            
    			</td>
    			<td width="30%" align="center">
    				<div style="line-height:30px;">Types sélectionnés :</div>
    				<select name="TypGenre[]" size="5" multiple style="width:300px;">
    				</select>
    			</td>
    			<td width="20%" valign="middle">
    				<table align="center" width="100%" cellpadding="2" cellspacing="10">
    					<tr>
    						<td class="creation">
    							<input type="submit" name="submit" value="Valider">
    						</td>
    					</tr>
    				</table>
    			</td>
    		</tr>
    	</table>  
    </form>
    Page avec le traitement des données

    page2.php

    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
     
    <?php 
     
    include ("connexion.php"); 
     
    if(isset($_POST['submit']))
    {
    	if(isset($_POST['TypGenre'][0]))
    	{
    		echo "Type selectionné : ".$_POST['TypGenre'][0].'<br>';
    	}
    	if(isset($_POST['TypGenre'][1]))
    	{
    		echo "Type selectionné : ".$_POST['TypGenre'][1].'<br>';
    	}
    	if(isset($_POST['TypGenre'][2]))
    	{
    		echo "Type selectionné : ".$_POST['TypGenre'][2].'<br>';
    	}
    }
     
    ?>
    Mais celà fonctionne que dans certains cas.

    Je vous met les deux cas de figure ci dessous : Quand ça marche, quand ça ne marche pas

    1) Ca ne marche pas :

    Nom : pb1erreur.png
Affichages : 372
Taille : 23,9 Ko

    2) Ca marche :

    Nom : pb2erreur.png
Affichages : 386
Taille : 18,2 Ko

    Oui, pour que celà marche il faut que les éléments soient en surbrillance , avant de valider ... Pourquoi?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par Azerøth Voir le message
    Oui, pour que celà marche il faut que les éléments soient en surbrillance , avant de valider ... Pourquoi?
    Parce que le formulaire n'envoie que les options sélectionnées du select multiple. Crée une fonction javascript pour sélectionner toutes les options et que tu l'appelles dans le onsubmit du formulaire.

    Et pour parcourir les éléments sélectionnés du côté PHP, utilise une boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($_POST['TypGenre'] as $TypGenre){
        echo "Type selectionné : ". $TypGenre.'<br>';
    }

    A+.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Parce que le formulaire n'envoie que les options sélectionnées du select multiple. Crée une fonction javascript pour sélectionner toutes les options et que tu l'appelles dans le onsubmit du formulaire.
    Je suis pas le meilleur du monde en javascript, pourrais tu me dire comment faire celà ?

    Merci d'avance

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function selectAll(idSelect) { 
    var selectMultiple = document.getElementById(idSelect);
     for (var i = 0; i < selectMultiple.options.length; i++){ 
        selectMultiple.options[i].selected = true; 
     } 
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form name="formulaire" method="post" action="page2.php" onsubmit="selectAll('TypGenre');">
    ...
    <select name="TypGenre[]" id="TypGenre" size="5" multiple style="width:300px;">
    Sinon, je te conseille d'apprendre javascript si tu veux continuer à faire du web.

    A+.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    C'est parfait, je te remercie


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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 13h44
  2. [UI] Récupérer la valeur s'un champ select dynamiquement
    Par polakDesIles dans le forum jQuery
    Réponses: 2
    Dernier message: 03/11/2014, 09h18
  3. question simple sur les select dynamiques
    Par grinder59 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/01/2006, 16h53
  4. Réponses: 14
    Dernier message: 25/11/2005, 15h22
  5. Select dynamique
    Par mandaillou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2005, 16h14

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