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

PHP & Base de données Discussion :

recuperer une valeur dans une liste deroulante pour l'utiliser dans une seconde liste [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut recuperer une valeur
    Bonjour, mon probleme est que je n'arrive pas à récupérer la valeur du site que l'utilisateur à sélectionné pour afficher les différents terrains du site selectionner. Pour le moment les terrains sont toujours égaux au dernier site de ma base de donnée.

    Voici mon 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
    //On inclue se fichier car il contient la fonction bdd_connexion()
    include 'fonctions_recherche.php';
    //on se connecte à la base de donnée
    bdd_connexion();
     
    //requete effectué pour lister les différents sites dans la liste déroulante
    $requete_site ="SELECT DISTINCT site FROM table ORDER BY site";
     
    //vérification de la requête
    $result_site = mysql_query($requete_site)
    	or die ("Execution impossible de la requête");
     
    //creéation d'une liste déroulante site
    echo "<p id='lieu'>du site ";
    echo "<select name='endroit'>
            <option value='0'>--Veuillez choisir--\n";
    	while($ligne_site = mysql_fetch_assoc($result_site))
    	{
    		extract($ligne_site);
    		echo "<option value='$site'>$site\n";
    	}
     
    //requete effectué pour lister les différents sites dans la liste déroulante
    $requete_terrain ="SELECT terrain FROM table WHERE site LIKE '$site'";
     
    //vérification de la requête
    $result_terrain = mysql_query($requete_sous_reseau)
    	or die ("Execution impossible de la requête");
     
    //creéation d'une liste déroulante terrain
    echo "<p id='parcelle'>et du terrain ";
    echo "<select name='terrain'>
    	<option value='0' selected>--Veuillez choisir--\n
    	<option value='1'>Tous\n";
    	while($ligne_terrain = mysql_fetch_assoc($result_terrain))
    	{
    		extract($ligne_sous_reseau);
    		echo "<option value='$terrain'>$terrain\n";
    	}
    echo"</select></p>";
     
    ?>
    merci de votre aide
    tortue

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Le problème ici, c'est que tu ne renvois pas la variable sélectionnée à ton script. Pour cela il faut que tu utilise la methode POST ou GET.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    mais la methode POST ne fonctionne pas quand je veux la récupérer sur une autre page php, elle marche une fois lors de l'affichage mais pas sur une autre page et je comprend pas.

    la page ou se trouve le code est result.php et la page pour afficher et affiche.php mais la page ou je veut recupérer la valeur est terrain.php mais quand je fais :

    $terrain = $_POST['terrain'];
    echo "$terrain";

    rien ne s'affiche

    tortue

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Sur ta page result.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form method=POST action='terrain.php'>
    <select name='site'>
    <option value='Blabla'>Blabla</option>
    //...
    </select>
    </form>
    sur ta page terrain.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $site = $_POST['site'];
    echo $site;
    Il n'y a pas de raisons que ton POST ne fonctionne pas.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    oui il marche pour une autre page affiche.php mais pas sur une autre page

    page result.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
    <form name="form1" action=affichage.php method="POST">
         //je recupere bien la valeur
     
    <?php
    							//On inclue se fichier car il contient la fonction bdd_connexion()
    							include 'fonctions_recherche.php';
    							//on se connecte à la base de donnée
    							bdd_connexion();
     
    							//requete effectué pour lister les différents sites dans la liste déroulante
    							$requete_site ="SELECT DISTINCT site FROM table ORDER BY site";
     
    							//vérification de la requête
    							$result_site = mysql_query($requete_site)
    								or die ("Execution impossible de la requête");
     
    							//creéation d'une liste déroulante site
    							echo "<p id='lieu'>du site ";
    							echo "<select name='endroit'>
    								<option value='0'>--Veuillez choisir--\n";
    							while($ligne_site = mysql_fetch_assoc($result_site))
    							{
    								extract($ligne_site);
    								echo "<option value='$site'>$site\n";
    							//la valeur de $site est la dernière du tableau qui est Toulon
    							}
     
    						?>
    deuxieme 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
    <form name="form2" action=test.php method="POST">
        //je ne recupere rien
     
     
    <form name="form2" action=test.php method="POST">
    						<?php
    							//On inclue se fichier car il contient la fonction bdd_connexion()
    							include 'fonctions_recherche.php';
    							//on se connecte à la base de donnée
    							bdd_connexion();
     
    							//requete effectué pour lister les différents sites dans la liste déroulante
    							$requete_terrain ="SELECT terrain FROM table WHERE site LIKE '$site'";
     
    							//vérification de la requête
    							$result_terrain = mysql_query($requete_sous_reseau)
    								or die ("Execution impossible de la requête");
     
    							//creéation d'une liste déroulante terrain
    							echo "<p id='parcelle'>et du terrain ";
    							echo "<select name='terrain'>
    								<option value='0' selected>--Veuillez choisir--\n
    								<option value='1'>Tous\n";
    							while($ligne_terrain = mysql_fetch_assoc($result_terrain))
    							{
    								extract($ligne_terrain);
    								echo "<option value='$terrain'>$terrain\n";
    							}
    							echo"</select></p>";
    							echo "<a href=test.php>test</a>";
    						?>
    			</form>
    page test.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
    <html> 
    	<body>
     
    		<head>
    			<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    			<link rel="stylesheet" type="text/css" title="Style" href="style.css" />
    		</head>
     
    		<table>
    			<td>
    				<div>					
    					<?php
     
    					$terrain = $_POST['terrain'];
    					echo "$terrain";
    					?>	
    				</div>
    			</td>		
    		</table>		
    	</body>
    <html>
    page affiche.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
    <html> 
    	<body>
     
    		<head>
    			<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    			<link rel="stylesheet" type="text/css" title="Style" href="style.css" />
    		</head>
     
    		<table>
    			<td>
    				<div>					
    					<?php
     
    					$site = $_POST['site'];
    					echo "$site";
    					?>	
    				</div>
    			</td>		
    		</table>		
    	</body>
    <html>
    la valeur du site fonctionne mais pas la valeur du terrain, elle n'est pas afficher sur la page test.php

    tortue

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,


    dans ton formulaire, rajoute ceci dans ton premier select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     onchange="this.form.submit()"
    Cela le validera dès lors que tu passeras au suivant, ensuite, dans tes options essai quelque chose comme ceci :

    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
    <select name="nom_formulaire" size="0" onchange="this.form.submit()">
    	<?php
    	if (isset($_POST['premiere_selection']))
    		$champ_select1 = $_POST['premiere_selection'];
    	else
    		$champ_select1 = "";
    	?>
    <option selected><?php echo $champ_select1; ?>
    	<?php
    	while($liste1 = mysql_fetch_object($requete_sql))
    	{
    		echo '<option>'.$liste1->champ_de_la_table_sql.'';
    	};
    	?>
    </option>
    </select>

    J'espère avoir pu t'aider.


    ++
    Ludo.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Je ne comprends ou tu récupère ta variable $site dans ton deuxieme formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete_terrain ="SELECT terrain FROM table WHERE site LIKE '$site'";

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    J'ai rajouté onsubmit() au select mais il m'envoie sur une autre page php, mais la valeur de la variable $terrain est toujours la même car le $site = la dernière valeur de la première liste deroulante. Ce que je n'arrive pas c'est avoir la valeur du site sélectionné par l'utilisateur pour selectionner les différents terrains du site dans la même page.

    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
    53
    54
    55
    56
    57
    58
    59
    <form name="form1" action=affichage.php method="POST">
    				<p>Selection du critere :</p>
    						<?php
    							//On inclue se fichier car il contient la fonction bdd_connexion()
    							include 'fonctions_recherche.php';
    							//on se connecte a la base de donn‰e
    							bdd_connexion();
     
    							//requete effectue pour lister les differents sites dans la liste deroulante
    							$requete_site ="SELECT DISTINCT site FROM table ORDER BY site";
     
    							//verification de la requete
    							$result_site = mysql_query($requete_site)
    								or die ("Execution impossible de la requŠte");
     
    							//creation d'une liste deroulante site
    							echo "<p id='lieu'>du site ";
    							echo "<select name='endroit' onchange='this.form.submit()'>
    								<option value='0'>--Veuillez choisir--\n";
    							while($ligne_site = mysql_fetch_assoc($result_site))
    							{
    								extract($ligne_site);
    								echo "<option value='$site'>$site\n";
    							//la valeur de $site est la derniere du tableau
    							}
    						?>
    			</form>
     
    			<form name="form2" action=test.php method="POST">
    						<?php
     
    							$site = $_POST['site'];
    							//On inclue se fichier car il contient la fonction bdd_connexion()
    							include 'fonctions_recherche.php';
    							//on se connecte a la base de donn‰e
    							bdd_connexion();
     
    							//requete effectue pour lister les differents sites dans la liste deroulante
    							$requete_terrain ="SELECT terrain FROM table WHERE site LIKE '$site'";
     
    							//$site etant la valeur du site selectionner mais c'est la derniere valeur de la table site (voir requete)
     
    							//Verification de la requete
    							$result_terrain = mysql_query($requete_sous_reseau)
    								or die ("Execution impossible de la requŠte");
     
    							//creation d'une liste deroulante terrain
    							echo "<p id='pacerelle'>et du terrain ";
    							echo "<select name='terrain'>
    								<option value='0' selected>--Veuillez choisir--\n
    								<option value='1'>Tous\n";
    							while($ligne_sous_reseau = mysql_fetch_assoc($result_terrain))
    							{
    								extract($ligne_terrain);
    								echo "<option value='$terrain'>$terrain\n";
    							}
    							echo"</select></p>";
    						?>	
    			</form>
    tortue, merci d'avance

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    C'est ce que j'essaie de te dire. Je crois qu'il y a un truc que tu comprends pas. Lorsque l'utilisateur ajoute des choses dans un formulaire, ou choisi une option dans un menu déroulant, tu ne peux pas les exploiter directement. Il faut d'abord les renvoyer au serveur par un submit. Si tu veux les exploiter directement c'est alors du javascript, car à ce moment la c'est le navigateur qui fait le boulot et plus le serveur.

    page result.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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    //On inclue se fichier car il contient la fonction bdd_connexion()
    include 'fonctions_recherche.php';
    //on se connecte à la base de donnée
    bdd_connexion();
     
    //requete effectué pour lister les différents sites dans la liste déroulante
    $requete_site ="SELECT DISTINCT site FROM table ORDER BY site";
     
    //vérification de la requête
    $result_site = mysql_query($requete_site)
    	or die ("Execution impossible de la requête");
     
    //création d'une liste déroulante site
    echo "<p id='lieu'>du site ";
    echo "<form method=\"POST\" action=\"result.php\">";
    echo "<select name='endroit'>
            <option value='0'>--Veuillez choisir--</option>";
    	while($ligne_site = mysql_fetch_assoc($result_site))
    	{
    		extract($ligne_site);
    		echo "<option value='$site'>$site</option>";
    	}
    echo "</select>";
    echo "<input type=submit value=OK>";
    echo "</form>";
     
     
    if ( isset($_POST['endroit']))
            $site = $_POST['endroit'];
            //requete effectué pour lister les différents sites dans la liste déroulante
            $requete_terrain ="SELECT terrain FROM table WHERE site LIKE '$site'";
     
            //vérification de la requête
            $result_terrain = mysql_query($requete_sous_reseau)
    	        or die ("Execution impossible de la requête");
     
           //création d'une liste déroulante terrain
           echo "<p id='parcelle'>et du terrain ";
           echo "<form method=\"POST\" action=affichage.php>";
           echo "<select name='terrain'>
    	       <option value='0' selected>--Veuillez choisir--</option>
    	       <option value='1'>Tous</option>";
    	while($ligne_terrain = mysql_fetch_assoc($result_terrain))
    	{
    		extract($ligne_sous_reseau);
    		echo "<option value='$terrain'>$terrain</option>";
    	}
    echo "</select>";
    echo "<input type=hidden name=site value=$site>";
    echo "<input type=submit value=OK>";
    echo "</form>";
    ?>
    Page affichage.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $_POST['site'];
    echo $_POST['terrain'];

    Essaie ce code ca devrait marcher

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    merci beaucoup pour les rectifications que tu m'as apporté, donc pour changer la deuxième liste (celle des terrain) en fonction du site il faut que fasse une fonction javascript (ça va) mais pour récupérer une valeur javascript en php, je n'arrive pas. car la comment faire pour savoir le terrain sélectionné car dans la page affichage.php il y a encore des requêtes SQL qui font des recherches en fonction du site ou du terrain mais comme il y a que les terrains du dernier site (valence) et les terrains sont (12, 13...) mais je ne peut faire de requete pour les autres villes car les terrains sont toujours (12, 13...)

    Si tu as des conseils
    Et merci pour le bout de code

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Désolé mais je ne peux pas t'aider en JavaScript, je connais quasi rien.

    Sinon j'ai pas tout compris ce que tu as cherché a expliquer. Avec le code que je t'ai fait, tu arrives bien à récupérer le site et le terrain dans ta page affichage? donc tu peux les utiliser pour faire de nouvelles requêtes.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    je me suis peut être mal expliqué. En fait avec la première liste déroulante je sélectionne les différents sites de ma base de données (ça marche). Avec la deuxième liste déroulant je veut sélectionner les terrains mais en fonction du site (en faisant cela il m'affiche toujours les terrains du dernier site de ma première liste déroulante) mais je voudrais le site sélectionné.

    exemple :
    je voudrais
    si site = Paris alors terrain = 4,5,6
    si site = Marseille alors terrain = 18,19,20 ainsi de suite....
    mais j'obtient
    site = Valence alors terrain = 12,13,...

    Mais en restant sous la même page php. Après les valeurs sont utiliser dans la page affichage.php pour effectuer d'autre recherche.

    merci de tes informations
    tortue

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    merci de votre aide, je suis passé sous AJAX pour modifier les listes déroulantes. C'est pas forcément plus simple mais sa rend bien.

    Merci
    tortue

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/02/2014, 12h20
  2. Réponses: 8
    Dernier message: 17/06/2011, 22h32
  3. [XL-2003] Récupérer une valeur calculée sur un sheet pour le renvoyer dans une listbox
    Par Thierry2B dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/01/2011, 09h55
  4. Réponses: 10
    Dernier message: 05/08/2010, 12h02
  5. Réponses: 5
    Dernier message: 18/11/2009, 11h25

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