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 :

Lier 3 liste déroulantes


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut Lier 3 liste déroulantes
    Bonjour ,

    Sur le site internet que je développe actuellement, je travaille que une la partie administration , et plus particulièrement la GESTION DES ARTICLES (ou news).

    J'ai 3 tables dans ma base Mysql.
    - pages (id_page,titre,...)
    - chapitres (id_chapitre, id_page,titre,...)
    - paragraphes (id_paragraphe, id_chapitre, titre, texte,...)


    Après plusieurs recherches, j'ai trouvé un tuto AJAX , afin de lier 2 listes déroulantes.
    Ainsi, j'ai une liste déroulante (name="cat") qui affiche les titres des pages, puis une 2ème (name="sous_cat") qui affiche les chapitres de la page sélectionné dans la liste n°1.

    Mais le souci c'est qu'il existe plusieurs paragraphes par chapitre, il est donc nécessaire d'avoir une 3ème liste déroulante également lié à la liste chapitre (name="sous_cat").

    Je n'arrive pas à modifier mon code afin d'obtenir la liste des paragraphes (dans ma 3ème liste) rattachés à la page et principalement au chapitre sélectionné.

    Voici les 2 pages de codes:

    La page essai.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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php require_once('infos_connexion.php'); ?>
     
    <html>
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <script type="text/javascript">
    	/**
    	 * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
    	 */
    	function sendData(param, page)
    	{
    		if(document.all)
    		{
    			//Internet Explorer
    			var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    		}//fin if
    		else
    		{
    		    //Mozilla
    			var XhrObj = new XMLHttpRequest();
    		}//fin else
     
    		//définition de l'endroit d'affichage:
    		var content = document.getElementById("contenu");
     
    		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);
    	}//fin fonction SendData
     
        </script>
    	<?php include("./haut.php"); ?>
    </head>
    <body>
     
    <?php
     
       $i=0; // variable de test
       $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database,$connexion);
     
       // Séléction de tous les enregistrements de la table Catégorie
       $rq="Select * from pages order by id_page;";
       $result= mysql_query ($rq) or die ("Select impossible");
       ?>
         <H3><strong><u><H3>Modifier un article</H3></u></strong></H3>
     
    	 <table width="500" border="0" cellpadding="5" cellspacing="0">
              <tr>
                <td width="240"><div align="center">
      <form name=nav method=post> 
    <H4>Choix de la page</H4>  <select size="1" name="cat" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
     
    <?php     
       while ($dt=mysql_fetch_row($result))
       {
        // Remplir la liste déroulante des catégorie	
    	echo "<option value=".($dt[0]).">".($dt[1])."</option>";
        if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
       }
     
       ?>    
       </select><br><br>
     
     
     
       <div id="contenu">
     
     <!-- affichage des sous-catégorie appartenant à la première catégorie.-->
       <H4>Choix du chapitre</H4><select size='1' name='souscat'>
     <?php    
        $rq="Select * from chapitres where id_page=".$j." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
        }  ?>  
    	</select>
    	 <H4>Choix du paragraphe</H4><select size='1' name='para'>
     <?php    
        $rq="Select * from paragraphes where id_chapitre=".$j." order by id_paragraphe;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
        }  ?>  
    	</select>
     
    	<p><input type='submit' name='Submit' value='Confirmer'></p>
     
     
     
        </div></div></td>
     
              </tr>
                  </table>
     
    			   </table>
     
    </form>
        </body>
    	</html>

    La page liresc.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
    54
    55
    56
    57
    <?php require_once('infos_connexion.php'); ?>
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");   
       mysql_select_db($database,$connexion);
        $rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du chapitre</H4><select size='1' name='souscat'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");   
       mysql_select_db($database,$connexion);
        $rq="Select * from paragraphes where id_chapitre=".$_POST['id']." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du paragraphe</H4><select size='1' name='para'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de paragraphe disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>
    	</select><p><input type='submit' name='Submit' value='Confirmer'></p>
    Merci d'avance à ceux qui y jeteront un coup d'oeil!!!!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut commencer par construire ton <select> "sous_cat" à l'image de ce que tu as fais pour le <select> "cat".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    Jai fais comme tu as dis mais à chaque changement de sélection que ce soit dans la liste "cat" contenant les pages ou dans la liste "souscat" contenant les chapitres , la partie correspondante aux paragraphes disparait.

    J'ai du mal à voir ou est mon erreur !!!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    montre ton code maintenant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    la page essai.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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?php require_once('infos_connexion.php'); ?>
     
    <html>
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <script type="text/javascript">
    	/**
    	 * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
    	 */
    	function sendData(param, page)
    	{
    		if(document.all)
    		{
    			//Internet Explorer
    			var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    		}//fin if
    		else
    		{
    		    //Mozilla
    			var XhrObj = new XMLHttpRequest();
    		}//fin else
     
    		//définition de l'endroit d'affichage:
    		var content = document.getElementById("contenu");
     
    		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);
    	}//fin fonction SendData
     
        </script>
    	<?php include("./haut.php"); ?>
    </head>
    <body>
     
    <?php
     
       $i=0; // variable de test
       $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database,$connexion);
     
       // Séléction de tous les enregistrements de la table Catégorie
       $rq="Select * from pages order by id_page;";
       $result= mysql_query ($rq) or die ("Select impossible");
       ?>
         <H3><strong><u><H3>Modifier un article</H3></u></strong></H3>
     
    	 <table width="500" border="0" cellpadding="5" cellspacing="0">
              <tr>
                <td width="240"><div align="center">
      <form name=nav method=post> 
    <H4>Choix de la page</H4>  <select size="1" name="cat" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
     
    <?php     
       while ($dt=mysql_fetch_row($result))
       {
        // Remplir la liste déroulante des catégorie	
    	echo "<option value=".($dt[0]).">".($dt[1])."</option>";
        if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
       }
     
       ?>    
       </select><br><br>
     
     
     
       <div id="contenu">
     
     <!-- affichage des sous-catégorie appartenant à la première catégorie.-->
       <H4>Choix du chapitre</H4><select size='1' name='souscat' OnChange="sendData('ids='+this.value,'liresc.php')" onKeyUp="sendData('ids='+this.value,'liresc.php')">
     <?php    
     
     
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database,$connexion);
     
        $rq="Select * from chapitres where id_page=".$j." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
    	 if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
        }  ?>  
    	</select>
    	 <H4>Choix du paragraphe</H4><select size='1' name='para' >
     <?php   
     
        $rq="Select * from paragraphes where id_chapitre=".$j." order by id_paragraphe;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
    	  if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
        }  ?>  
    	</select>
     
    	<p><input type='submit' name='Submit' value='Confirmer'></p>
     
     
     
        </div></div></td>
     
              </tr>
                  </table>
     
    			   </table>
     
    </form>
        </body>
    	</html>

    La page liresc.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
    54
    55
    56
    57
    58
    59
    <?php require_once('infos_connexion.php'); ?>
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");   
       mysql_select_db($database,$connexion);
        $rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du chapitre</H4><select size='1' name='souscat'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>
     
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['ids']) && !empty($_POST['ids']) ){
     
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");   
       mysql_select_db($database,$connexion);
        $rq="Select * from paragraphes where id_chapitre=".$_POST['ids']." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du chapitre</H4><select size='1' name='souscat'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>
    	</select><p><input type='submit' name='Submit' value='Confirmer'></p>

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Essai de bien comprendre ce que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sendData('id='+this.value,'liresc.php'
    quand tu actives le "onchange", tu envoies vers liresc des parametres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var content = document.getElementById("contenu");
    Tout ce qui va sortir (echo) de liresc.php va etre affiché à l'interieur du <div id="contenu">

    ----
    Actuellement tu as les problemes suivants :
    - dans ton liresc, tu as deux fois la meme condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['id']) && !empty($_POST['id']) ){
    la deuxieme devrait etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['ids']) && !empty($_POST['ids']) ){
    puisque ton deuxieme select renvoit le paramètre id.

    - dans liresc, il n'y a pas de balise <select> pour les chapitres.

    De plus il faut un peu de logique :
    etape 1 = fichier essai.php - il ne doit y avoir que le select pour la page,<div id="chapitre"></div>, <div id="paragraphe"></div>
    etape 2 - on a $_POST['id'] - liresc ajoute le deuxieme select
    etape 3 - on a $_POST['ids'] - liresc ajoute le troisieme select

    Et tu vas me dire : ba oui mais tu viens me dire que je remplacais le contenu de <div id="contenu"> et tu viens de l'enlever !
    Effectivement je mets bien un <div> pour chaque zone que je veux ajouter.
    Il faut par contre bien indiquer quelle zone je remplace sur quelle action , on va donc passer un parametre vers la javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnChange="sendData('id='+this.value,'paragraphe','liresc.php')"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function sendData(param, zone, page)	{
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var content = document.getElementById(zone);
    J'espere que je n'ai pas été trop fouilli.
    N'hesite pas a me poser des questions et j'espere que ca va marcher surtout
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    Actuellement tu as les problemes suivants :
    - dans ton liresc, tu as deux fois la meme condition

    Code :
    if(isset($_POST['id']) && !empty($_POST['id']) ){la deuxieme devrait etre
    Code :
    if(isset($_POST['ids']) && !empty($_POST['ids']) ){puisque ton deuxieme select renvoit le paramètre id.
    Dans le code que jai fourni , j'ai les deux conditions $_POST['id'] et $_POST['ids'] .

    dans liresc, il n'y a pas de balise <select> pour les chapitres.
    J'ai bien une balise select pour le chapitres qui se nomme "souscat".

    Par contre, comme tu as dis j'ai oté <div id=contenu> et j'ai mis <div id=chapitre> et <div id=paragraphe> . et j'ai également modifié la fonction javascript.

    Merci de ton explication , ça m'a aidé à y voir un peu plus clair dans ce que je faisais mais je suis confronté à un autre souci:

    Maintenant quand je sélectionne une page ou un chapitre les tables ne sont plus liées. (la page C ne renvoit pas les chapitres qu'elle contient).

    mais en contre partie dès que je sélectionne une page ou un chapitre, la partie "paragraphe" cette fois-ci rest à l'écran

    Je remet le code modifié:

    La page Essai.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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <?php require_once('infos_connexion.php'); ?>
     
    <html>
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <script type="text/javascript">
    	/**
    	 * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
    	 */
    	function sendData(param, zone, page)
    	{
    		if(document.all)
    		{
    			//Internet Explorer
    			var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    		}//fin if
    		else
    		{
    		    //Mozilla
    			var XhrObj = new XMLHttpRequest();
    		}//fin else
     
    		//définition de l'endroit d'affichage:
    		var content = document.getElementById("zone");
     
    		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);
    	}//fin fonction SendData
     
        </script>
    	<?php include("./haut.php"); ?>
    </head>
    <body>
     
    <?php
     
       $i=0; // variable de test
       $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database_crb,$connexion);
     
       // Séléction de tous les enregistrements de la table Catégorie
       $rq="Select * from pages order by id_page;";
       $result= mysql_query ($rq) or die ("Select impossible");
       ?>
         <H3><strong><u><H3>Modifier un article</H3></u></strong></H3>
     
    	 <table width="500" border="0" cellpadding="5" cellspacing="0">
              <tr>
                <td width="240"><div align="center">
      <form name=nav method=post> 
    <H4>Choix de la page</H4>  <select size="1" name="cat" OnChange="sendData('id='+this.value,'chapitre','liresc.php')" OnChange="sendData('id='+this.value,'chapitre','liresc.php')">
     
    <?php     
       while ($dt=mysql_fetch_row($result))
       {
        // Remplir la liste déroulante des catégorie	
    	echo "<option value=".($dt[0]).">".($dt[1])."</option>";
        if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
       }
     
       ?>    
       </select><br><br>
     
     
     
       <div id="chapitre">
     
     <!-- affichage des sous-catégorie appartenant à la première catégorie.-->
       <H4>Choix du chapitre</H4><select size='1' name='souscat' OnChange="sendData('ids='+this.value,'paragraphe','liresc.php')" OnChange="sendData('ids='+this.value,'paragraphe','liresc.php')">
     <?php    
     
     
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database_crb,$connexion);
     
        $rq="Select * from chapitres where id_page=".$j." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
    	 if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
        }  ?>  
    	</select>
    	 </div>
     
    	 <div id="paragraphe">
    	 <H4>Choix du paragraphe</H4><select size='1' name='para' >
     <?php   
     
        $rq="Select * from paragraphes where id_chapitre=".$j." order by id_paragraphe;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
    	  if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
        }  ?>  
    	</select>
     
    	<p><input type='submit' name='Submit' value='Confirmer'></p>
     
     
     
       </div></td>
     
              </tr>
                  </table>
     
    			   </table>
     
    </form>
        </body>
    	</html>
    LA page liresc.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
    54
    55
    56
    57
    58
    <?php require_once('infos_connexion.php'); ?>
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");   
       mysql_select_db($database_crb,$connexion);
        $rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du chapitre</H4><select size='1' name='souscat'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>
     
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['ids']) && !empty($_POST['ids']) ){
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");   
       mysql_select_db($database_crb,$connexion);
        $rq="Select * from paragraphes where id_chapitre=".$_POST['ids']." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du paragraphe</H4><select size='1' name='para'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de paragraphe disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var content = document.getElementById(zone);
    sans guillemets, c'est la variable zone.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    Ok

    MAintenant ma liste page et chapitre sont liées.
    Par contre si je sélectionne un chapitre ,cela m'affiche toujours le même paragraphe àsa voir le 1er de ma base de données.
    La liste paragraphe n'est pas liée à la liste chapitre alors que pourtant le "onchange" sur le chapitre doit normalement changé comme indiqué la partie paragraphe.

    :s

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    tu n'as pas le onchange dans liresc.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    J'ai pourtant rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     OnChange='sendData('ids='+this.value,'paragraphe','liresc.php')' OnChange='sendData('ids='+this.value,'paragraphe','liresc.php')'>"
    dans le select du chapitre, partie $_POST['id'] de liresc.php.

    Mais le lien entre chapitre et paragraphe ne fonctionne pas ne fonctionne toujours pas.

    Ce qui est bizarre c'est qu'au chargement de la page où il ya les 3 select, dans la liste paragraphe, le titre du 1er paragraphe de ma base de donnée est conservée et c'est celui qui correspond au chapitre sélectionné.
    C'est à n'y plus rien comprendre...

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'ai pourtant rajouter
    Dans le dernier code que tu m'as montré, ca n'y est pas.
    En plus tu te melanges entre ' et ", fais bien attention
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    désolé me suis mal exprimé, je voulais dire "je viens de rajouter le "onchange".

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En tout cas il est mal ecrit
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    je suis obligé de mettre des ' ' dans le onchange car tout mon select est imbriqué dans un echo....
    et même si je fais
    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
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
       
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");   
       mysql_select_db($database_crb,$connexion);
        $rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo ?><H4>Choix du chapitre</H4><select size="1" name="souscat" OnChange="sendData('ids='+this.value,'paragraphe','liresc.php')" OnKeyup="sendData('ids='+this.value,'paragraphe','liresc.php')">
    	 <?php ;
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
    
    ?>
    ça m'indique une erreur de syntaxe sur la ligne du "Onchange".

    Désolé suis po doué

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<H4>Choix du chapitre</H4><select size="1" name="souscat" OnChange="sendData(\'ids=\'+this.value,\'paragraphe\',\'liresc.php\')" OnKeyup="sendData(\'ids=\'+this.value,\'paragraphe\',\'liresc.php\')">';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    Ok merci c'est revenu à la normal. Le chapitre est de nouveau lié à la page.
    Mais ce 'onchange' dans liresc.php n'a pas permis de lier le select paragraphe avec le select chapitre.

    Cela ne viendait -til pas de cette partie du code de ma page essai.php et prin cipalement la partie de l'ID=paragraphe?

    La page essai.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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <?php require_once('infos_connexion.php'); ?>
     
    <html>
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <script type="text/javascript">
    	/**
    	 * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
    	 */
    	function sendData(param, zone, page)
    	{
    		if(document.all)
    		{
    			//Internet Explorer
    			var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    		}//fin if
    		else
    		{
    		    //Mozilla
    			var XhrObj = new XMLHttpRequest();
    		}//fin else
     
    		//définition de l'endroit d'affichage:
    		var content = document.getElementById(zone);
     
    		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);
    	}//fin fonction SendData
     
        </script>
    	<?php include("./haut.php"); ?>
    </head>
    <body>
     
    <?php
     
       $i=0; // variable de test
       $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database_crb,$connexion);
     
       // Séléction de tous les enregistrements de la table Catégorie
       $rq="Select * from pages order by id_page;";
       $result= mysql_query ($rq) or die ("Select impossible");
       ?>
         <H3><strong><u><H3>Modifier un article</H3></u></strong></H3>
     
    	 <table width="500" border="0" cellpadding="5" cellspacing="0">
              <tr>
                <td width="240"><div align="center">
      <form name=nav method=post> 
    <H4>Choix de la page</H4>  <select size="1" name="cat" OnChange="sendData('id='+this.value,'chapitre','liresc.php')" onKeyUp="sendData('id='+this.value,'chapitre','liresc.php')">
     
    <?php     
       while ($dt=mysql_fetch_row($result))
       {
        // Remplir la liste déroulante des catégorie	
    	echo "<option value=".($dt[0]).">".($dt[1])."</option>";
        if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
       }
     
       ?>    
       </select><br><br>
     
     
     
       <div id="chapitre">
     
     <!-- affichage des sous-catégorie appartenant à la première catégorie.-->
       <H4>Choix du chapitre</H4><select size="1" name="souscat" OnChange="sendData('ids='+this.value,'paragraphe','liresc.php')" onKeyUp="sendData('ids='+this.value,'paragraphe','liresc.php')">
     <?php    
     
     
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");
     
       mysql_select_db($database_crb,$connexion);
     
        $rq="Select * from chapitres where id_page=".$j." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
    	 if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
        }  ?>  
    	</select>
    	 </div>
     
    	 <div ids="paragraphe">
    	 <H4>Choix du paragraphe</H4><select size='1' name='para' >
     <?php   
     
        $rq="Select * from paragraphes where id_chapitre=".$j." order by id_paragraphe;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 echo "<option value=".$dt[0].">".$dt[3]."</option><br>";
    	  if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
        }  ?>  
    	</select>
     
    	<p><input type='submit' name='Submit' value='Confirmer'></p>
     
     
     
       </div></td>
     
              </tr>
                  </table>
     
    			   </table>
     
    </form>
        </body>
    	</html>
    La page liresc.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
    54
    55
    56
    57
    58
    59
    60
    <?php require_once('infos_connexion.php'); ?>
     
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");   
       mysql_select_db($database_crb,$connexion);
        $rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	 echo '<H4>Choix du chapitre</H4><select size="1" name="souscat" OnChange="sendData(\'ids=\'+this.value,\'paragraphe\',\'liresc.php\')" OnKeyup="sendData(\'ids=\'+this.value,\'paragraphe\',\'liresc.php\')">';
     
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>
     
     
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['ids']) && !empty($_POST['ids']) ){
     
       $connexion = mysql_connect($hostname_dbcrb,$username_dbcrb,$password_dbcrb) or die ("Connexion au serveur impossible");   
       mysql_select_db($database_crb,$connexion);
        $rq="Select * from paragraphes where id_chapitre=".$_POST['ids']." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo "<H4>Choix du paragraphe</H4><select size='1' name='para'>";
    	}
    	else
    	{
    	  echo utf8_encode("Pas de paragraphe disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option><br>";
        }    
    	}
     
    ?>

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    tu as ecrit ids="paragraphe" au lieu de id="paragraphe"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    Merci beaucoup ça marche.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 205
    Par défaut
    Dernière étape très bloquante.

    J'ai remodifié pour tester seulement sur 2 listes , page et chapitre, quand je clique sur 1 page de ma liste et sur un chapitre de ma liste puis sur Confirmer alors cela me remet pour les 2 listes les valeurs de départ.

    Ce que je veux c'est qu'elles soient conservées à l'affichage.

    J'ai modifié mon code (voir code en gras sur chacune des pages) pour conserver la valeur sélectionnée après click sur Confirmer.

    Le code que j'ai rajouté permet de conserver la page sélectionnée mais cela ne fonctionne pas pour le chapitre , il me remet celui d'origine. alors que j'ai appliqué exactement le meme code....

    Quelque chose m'échappe là...

    Quelqu'un voit-il mon erreur,svp???

    ma page essai.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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php require_once('infos_connexion.php'); ?>
    <html>
    <head>
    <script type="text/javascript">
    	/**
    	 * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
    	 */
    	function sendData(param,zone, page)
    	{
    		if(document.all)
    		{
    			//Internet Explorer
    			var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
    		}//fin if
    		else
    		{
    		    //Mozilla
    			var XhrObj = new XMLHttpRequest();
    		}//fin else
    
    		//définition de l'endroit d'affichage:
    		var content = document.getElementById(zone);
    		
    		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);
    	}//fin fonction SendData
    
        </script>	 
    </head>
    <body>
    <form action="" method="post">
    <?php
      
       $i=0; // variable de test
       $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
           
       $connexion = mysql_connect($hostname,$username_db,$password_db) or die ("Connexion au serveur impossible");
        
       mysql_select_db($database,$connexion);
        
       // Séléction de tous les enregistrements de la table Catégorie
       $rq="Select * from pages order by id_page;";
       $result= mysql_query ($rq) or die ("Select impossible");
       ?>
      <H4>Choix de la page</H4> 
      <select name="cat" OnChange="sendData('id='+this.value,'chapitre','liresc.php')" onKeyUp="sendData('id='+this.value,'chapitre','liresc.php')">
     <?php
       while ($dt=mysql_fetch_row($result))
       {
     $selected = (isset($_POST['cat']) and $_POST['cat'] == $dt[0])?'selected="selected"':'';
    
        // Remplir la liste déroulante des catégorie	
    	echo '<option value="'.($dt[0]).'" '.$selected.' >'.($dt[1]).'</option>';
        if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
       }
        
       ?>    
       </select>
       
        <div id="chapitre">
    	<H4>Choix du chapitre</H4> 
       <select size='1' name='souscat'>
     <?php    
        $rq="Select * from chapitres where id_page=".$j." order by id_chapitre;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
        while ($dt=mysql_fetch_row($result))
        { 
    	 $selected = (isset($_POST['souscat']) and $_POST['souscat'] == $dt[0])?'selected="selected"':'';	echo '<option value="'.($dt[0]).'" '.$selected.' >'.($dt[3]).'</option><br>';
        }  ?>  
    	
    	</select>
      <input type="submit" value="confirmer" />
      </div>
    </form>
    
     </body>
    </html>
    ma page liresc.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
    <?php require_once('infos_connexion.php'); ?>
    
    <?php
    header('Content-type: text') ; // on déclare ce qui va être afficher
     
    // test des POST emis
    if(isset($_POST['id']) && !empty($_POST['id']) ){
       
       $connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");   
       mysql_select_db($database,$connexion);
        $rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
        $result= mysql_query ($rq) or die ("Select impossible");
         // $i = initialise le variable i
        $i=0;
    	if (mysql_num_rows($result)>0)
    	{
    	  echo '<H4>Choix du chapitre</H4><select size="1" name="souscat" >';
    	}
    	else
    	{
    	  echo utf8_encode("Pas de chapitre disponible");	
    	}
        while ($dt=mysql_fetch_row($result))
        { 	
    	$selected = (isset($_POST['souscat']) and $_POST['souscat'] == $dt[0])?'selected="selected"':'';	 echo '<option value="'.utf8_encode($dt[0]).'" '.$selected.'>'.utf8_encode($dt[3]).'</option><br>';
    	  
        }    
    	}
    echo "</select><br><p><input type='submit' name='Submit' value='Confirmer'></p>";
    ?>

Discussions similaires

  1. lier une liste déroulante et un simple texte HTML
    Par gregolak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/07/2006, 15h42
  2. Lier checkbox, liste déroulante et input texte
    Par pymouse dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/05/2006, 14h58
  3. Lier checkbox, liste déroulante et input texte
    Par pymouse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/05/2006, 11h32
  4. [PHP-JS] Lier deux listes déroulantes
    Par budiste dans le forum Langage
    Réponses: 6
    Dernier message: 15/11/2005, 15h36
  5. [WD5.5] Lier deux listes déroulantes
    Par grellierj dans le forum WinDev
    Réponses: 7
    Dernier message: 11/10/2005, 17h33

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