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!!!!