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 :

Listes dynamiques liées. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 23
    Par défaut Listes dynamiques liées.
    Bonjour à tous ,

    Je sais qu'après lecture de mon titre vous vous dites, un n-ième problème de liste liées alors qu'il y a des tutoriels etc.. Je suis d'accord avec vous, car en effet je me suis appuyé sur les tutoriels pour avancer comme j'ai pu. Cependant je rencontre un problème, je vous explique.


    J'ai donc réalisé 2 listes déroulantes liées, la 2ème propose des choix spécifiques à l'élément que l'on a sélectionné dans la 1ère liste.

    Cela fonctionne bien, je me suis inspiré ce qu'il y avait sur internet, que j'ai réadapté à mes besoins, 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_localisation">
    	<select name="localisation" id="localisation" onchange="document.forms['chg_localisation'].submit();">
    		<option>- - - Choisissez une localisation - - -</option>
    		<?php
    			$sql1 = "select loc_tr_id, loc_libelle from localisation";
    			$rech_localisation = mysql_query($sql1);
    			if($rech_localisation != false){
    				while($data = mysql_fetch_assoc($rech_localisation)){  ?>
    					<option value="<?php echo $data['loc_tr_id']; ?>"
    					<?php if(isset($_SESSION['localisation']) 
    							AND $_SESSION['localisation'] == $data['loc_tr_id'])
    							echo 'selected="selected"'; ?>>
    							<?php echo $data['loc_libelle']; ?>
    					</option>
    				<?php
    				}
    			}
    			mysql_free_result($rech_localisation);
    			?>
    	</select>
    </form>	
     
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_sous_reseau">
    	<select name="MASK" id="MASK" onchange="document.forms['chg_sous_reseau'].submit();">
    		<option>- - - Choisissez un sous-reseau - - -</option>
    		<?php
    		    if(isset($_SESSION['localisation'])){
    				$sql2 = "SELECT DISTINCT sousreseau.sr_vl_id, sousreseau.sr_libelle, sousreseau.sr_ad_basse, localisation.loc_tr_id ".
            " FROM sousreseau, localisation ".
            " WHERE sousreseau.sr_loc = ". $_SESSION['localisation'] ."
    						";
    				$rech_sous_reseau = mysql_query($sql2);
    				if($rech_sous_reseau != false){
    					while($data = mysql_fetch_assoc($rech_sous_reseau)){  ?>
    						<option value="<?php echo $data['sr_vl_id']; ?>"
    						<?php if(isset($_SESSION['localisation']) 
    								AND $_SESSION['MASK'] == $data['sr_vl_id'])
    								echo 'selected="selected"'; ?>>
    								<?php echo $data['sr_libelle']; echo $data['sr_ad_basse'];  ?>
    						</option>
    					<?php
    					}
    				}
    				mysql_free_result($rech_sous_reseau);
    			}
    			?>
    	</select>
    </form>

    J'ai un autre code qui permet d'afficher des élements selon le choix que l'on a fait dans une liste d'adresse IP. Je vous mets que le code qui permets de sélectionner les élements. Le choix est renvoyer vers une page EDITER.php qui s'occupe que de l'affichage des élements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		<select name="MASK" id="MASK">		
    			<?PHP
    			echo '<option value="1">Selectionner un sous-reseau</option>';
    			/*initialisation sql*/
    			$sql='select sr_id,sr_libelle,sr_ad_basse,sr_aff from SOUSRESEAU ORDER BY sr_aff ASC';
    			$req=  mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    			while($data = mysql_fetch_array($req)){
    			echo '<option value="'.$data["sr_id"].'">'.$data["sr_libelle"].' '.$data["sr_ad_basse"].'</option>'; }
     
    			?>
     
    		</select>
    Le problème, c'est que je ne parviens à "allier" ces deux codes, en effet, j'aimerai pouvoir avec 2 listes liées, dont la première permettra "de faire le tri" en choisissant une localisation, et la seconde de proposer les éléments correspondants. Ce qui va nous permettre d'afficher les éléments du choix de la 2ème liste déroulante.



    En gros, les deux codes marche bien séparement, mais lors de mes innombrables tentatives de les mettres en commun, rien ne marche. J'ai cherché du coté du fait que dans le code EDITER.php, on récupère la variable de choix sous la forme $_GET['MASK'], tandis que dans les deux codes, c'est du type POST. J'ai essayé de manipuler, re-transformer etc.. sans succès.



    Merci d'avoir lu, et de votre aide, par 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
    Par défaut
    Bonjour,

    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_localisation">
    <select name="localisation" id="localisation" onchange="document.forms['chg_localisation'].submit();">
    Ta balise form n'a pas d'attribut name.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_localisation">
    	<select name="localisation" id="localisation" onchange="this.form.submit();">
    Tu testes si le premier est sélectionné et tu ajoutes sa valeur dans le clause where de la requête.

    Sinon, si tu ne veux pas que la page se recharge, utilise AJAX.

    A+.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 23
    Par défaut
    Merci de ta réponse !

    En fait, le fait que tu soulignes l'absence de l'attribut 'name' m'a permis d'arriver sur un autre soucis, il fallait tout simplement rajouter action="EDITER.php" à la fin de la balise form, et changer le method="post" en method="get".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" name="form_edit" method="get" id="chg_sous_reseau" action="EDITER.php">
    Il ne se passait rien du fait qu'il ne faisait aucun appel !


    Merci encore

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 23
    Par défaut
    Bonjour,


    Je me suis un peu trop précipité en mettant cette discussion en résolue, en effet, je rencontre un petit soucis.

    Cela marche mais pas du premier coup, je m'explique. Lorsque j'arrive sur ma page la première fois, ça ne fonctionne pas, bien que j'ai fait mes choix, il ne veut rien afficher. De plus, il m'affiche le choix de la 2ème liste déroulante une "milliseconde" et réaffiche à la place " Choisissez un sous-reseau ".

    Ca marche que lorsque que j'ai utilisé une première fois la fonction "Recherche" de ma page qui permet de taper un mot, et de rechercher dans la base les élements contenant ce mot. Cette fonction "Recherche" se situe sur la même page que les listes déroulantes, juste en dessous.

    Pour résumé:

    Première fois sur la page : Rien
    Première fois sur la page, avec avant une utilisation de la fonction "Recherche", ça fonctionne.

    J'ai comme l'impression que la fonction "Recherche" met en place quelque chose.


    Merci à tous !

  5. #5
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    J'ai comme l'impression que la fonction "Recherche" met en place quelque chose.
    Oui, elle initilise des valeurs dans la session de ton application (voir $_SESSION), la session reste active tant que le navigateur n'est pas fermé (sauf si détruite par l'application).

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 23
    Par défaut
    Bonjour,

    Merci de ta réponse, cependant je ne vois où est faite l'initialisation ?


    La fonction qui permet de rechercher :

    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
    	<div>
    		<form action='EDITER.php' method="GET" id="perma">
    			<!-- <input type="hidden" name="perma" id="perma" value="EDITER"/>
    			Recherche sur toute la base : <input type="text" name="mot" id="mot"> -->
     
    			<h2>Recherche sur toute la base :</h2><input type="text" name="mot" id="mot" onkeyup="lookup(this.value);" onblur="fill();" ></h2>
    				<div class="suggestionsBox" id="suggestions" style="display: none;">
    				<div class="suggestionList" id="autoSuggestionsList">
    					&nbsp;
    				</div>
    <br />
    <br />
     
     
    		<!-- <br />
    		<br />  -->
    			<!--<input type="submit" value="Rechercher"> -->
    			<!--<br /> Un champs de recherche vide affiche toute la base !-->
    		</form>
    	</div>
    Il s'agit d'une recherche dynamique qui affine la recherche selon les caractères tappés au clavier, et affiche une liste d'éléments en conséquence. J'ai utilisé le javascript.

    Encore merci de m'avoir éclairer!

  7. #7
    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
    Par défaut
    Re,

    Les 2 select sont aussi dans 2 différents form. Pourquoi ne pas utiliser AJAX?

    A+.

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

Discussions similaires

  1. script d'une liste dynamique liée
    Par majda_afkir dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 01/09/2009, 01h01
  2. [AJAX] Listes dynamiques liées-formulaire-Ajax
    Par leFred dans le forum AJAX
    Réponses: 2
    Dernier message: 12/08/2009, 17h17
  3. [AJAX] Formulaire avec deux listes dynamiques liées
    Par gotcha5832 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/03/2007, 10h40
  4. [AJAX] listes dynamiques liées a la premiere avec XMLhttpRequest
    Par metatron dans le forum Général JavaScript
    Réponses: 33
    Dernier message: 09/10/2006, 09h30
  5. Afficher listes dynamiques liées a la premiere
    Par metatron dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 05/09/2006, 16h46

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