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 :

Liste déroulante dynamique sans rechargement


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut Liste déroulante dynamique sans rechargement
    Bonjour, dans mon formulaire je souhaite mettre deux listes ("départements" et "communes"), et bien évidemment que le contenu de la liste "communes" dépende de ce qui est sélectionné dans "départements". Toutes les valeurs sont stockées dans une table de ma base de données.

    Cependant mes listes sont en plein milieu du formulaire (relativement long), et donc il n'est pas question de faire un rechargement de la page pour actualiser la 2° liste. Je souhaite donc, au chargement, générer un tableau qui va contenir tous les départements dans $dep et toutes les communes dans $com, et modifier les options de la liste "communes" par sélection sur "départements".

    C'est faisable comme ça ? Une piste pour y arriver, je sèche depuis 2h !

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu peux faire ça en Ajax ou sinon en JS à toi de voir mais pas en PHP uniquement.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Oui, je suis justement en train de plancher sur des exemples ajax.

  4. #4
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    salut,
    Tu peux faire un tableau associatif en javascript avec tes departements et communes associées.
    Ou bien aller chercher a chaque fois la liste des communes pour le departement choisi via ajax.

    A cela, tu ajoutes un event sur la selection d'un departement qui va soit lancer l'ajax, soit aller chercher dans le tableau assiociatif la liste de commune correspondante.

    Z.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    regarde ici : "Listes liées avec AJAX et PHP"
    http://php.developpez.com/sources/?p...tes-liees-ajax

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    regarde ici : "Listes liées avec AJAX et PHP"
    http://php.developpez.com/sources/?p...tes-liees-ajax
    Bonjour,

    je viens de réussir à faire comme je le souhaitais, grâce aux infos trouvées sur cette page : http://perso.wareteam.com/comment_de...r_la_page-.php

    Mais je vais regarder si je ne peux pas optimiser mon code grâce à ce lien !
    Merci

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Bon finalement après test je rencontre un problème : lorsque je clique sur valider après avoir sélectionné mon département puis ma commune, et remplis tous mes champs, je me retrouve sur une page vide (qui n'est pas celle appelée par l'action) et une adresse contenant tous mes champs en paramètre.

    Sachant une précision, mon site est en php dynamique avec des liens du genre index.php?page=test, mais à priori ce n'est pas de là que vient le problème puisque j'ai testé en page entière également.

    Avez-vous une idée d'où cela peut venir ?
    Je vous mets en dessous le contenu de mes pages.

    1. la page contenant le formulaire (index.php?page=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
    <tr>
    <td width="20%">• <strong>Département</strong></td>
    <td>
    	<select size="1" name="m_dpt" OnChange="sendData('id='+this.value,'id_communes.php')" onKeyUp="sendData('id='+this.value,'id_communes.php')">
    	<?php
    	while ($dt=mysql_fetch_row($result)) {
    	echo "<option value=".($dt[0]).">".($dt[1])."</option>";
    	if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
    	} ?>
    	</select>
    </td>
    </tr>
    <tr>
    <td width="20%">• <strong>Commune</strong></td>
    <td>
    	<div id="communes">
    	<?php  
    	echo "<select size='1' name='m_ville'>";   
    	$rq="Select * from id_commune where idcat=".$j." order by nom";
    	$result= mysql_query($rq);
    	$i=0;
    	while ($dt=mysql_fetch_row($result)) { 
    	echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
    	}    
    	echo "</select>";
    	?>
    	</div>
    </td>
    </tr>
    2. La page id_communes.php appelée pour interroger le serveur :
    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
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
    	$user="root";
    	$host="localhost";
    	$password="Admin";
    	$database="db_données";
    	$connexion = mysql_connect($host,$user,$password);   
    	mysql_select_db($database,$connexion);
    	$rq="Select * from id_commune where idcat=".$_POST['id']." order by nom;";
        $result= mysql_query($rq);
        $i=0;
    	if (mysql_num_rows($result)>0) {
    	  echo "<select size='1' name='m_ville'>";
    	} else {
    	  echo utf8_encode("Pas de sous catégories disponible");	
    	}
        while ($dt=mysql_fetch_row($result))   { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
        }    
    	echo "</select>";
    }
    ?>
    3. La fonction qui est appelé sur index.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
    function sendData(param, page)	{
    if(document.all) {
    	//Internet Explorer
    	var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    } else	{
        //Mozilla
    	var XhrObj = new XMLHttpRequest();
    }
     
    //définition de l'endroit d'affichage:
    var content = document.getElementById("communes");
    XhrObj.open("POST", page);
     
    //Ok pour la page cible
    XhrObj.onreadystatechange = function()	{
    	if (XhrObj.readyState == 4 && XhrObj.status == 200)
    		content.innerHTML = XhrObj.responseText ;
    }
     
    XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    XhrObj.send(param);
    }
    Merci d'avance.

Discussions similaires

  1. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 20h37
  2. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  3. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  4. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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