Page 1 sur 1

Affichage des resultats d'une liste

Posté : 07 nov. 2010, 11:58
par Fredy07
Bonjour,

J'ai deux liste liees, une pour les categories et une autres pour les sous-categories, quand je choisis une categorie et apres une sous-categorie le code et l'affichage sont bien, mais, en meme temps et sans rafraichir la page je change de categorie et je choisis une sous-categorie, l'affichage de cette derniere est place a la meme page que la premiere selection de la premiere categorie, un éclaircissement :

1er choix:
+ categorie1
- sous categorie1
-- Affichage des resultat du 1er choix

2eme choix:
+ categorie2
- sous categorie2
-- Affichage des resultat du 2eme choix
-- Affichage des resultat du 1er choix (c'est la le probleme)

ci-joint mes codes:

index.php:
<form>
			<select name="users" onchange="showUser(this.value)">
				<option value="0" disabled="disabled" selected="selected">- Select Make</option>
				<option value="1">&#1575;&#1604;&#1588;&#1610;&#1608;&#1582;</option>
				<option value="2">&#1575;&#1604;&#1576;&#1604;&#1583;&#1575;&#1606;</option>
				<option value="3">&#1575;&#1604;&#1585;&#1608;&#1575;&#1610;&#1575;&#1578;</option>
				<option value="4">&#1575;&#1604;&#1578;&#1604;&#1575;&#1608;&#1575;&#1578;</option>
			
			</select>
		
 
		<span id="txtHint"></span> 	<!-- Affichage de la 2eme liste -->
		<span id="txtHint2"></span> <!-- Affichage du resultat de la fonction showUser2 -->
		<span id="txtHint3"></span>	<!-- Affichage du resultat de la fonction showUser3 -->
		<span id="txtHint4"></span>	<!-- Affichage du resultat de la fonction showUser4 -->
		
		</form>
 
main.js::
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","Sawtiyat/Quoran/test.php?id="+str,true);
xmlhttp.send();
}
 
function showUser2(str)
{
if (str=="")
  {
  document.getElementById("txtHint2").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint2").innerHTML=xmlhttp.responseText;
    }
  }
  str=encodeURI(str);
xmlhttp.open("GET","Sawtiyat/Quoran/sheikh_selected.php?sheikh_ar="+str,true);
xmlhttp.send();
}
 
function showUser3(str)
{
if (str=="")
  {
  document.getElementById("txtHint3").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint3").innerHTML=xmlhttp.responseText;
    }
  }
  str=encodeURI(str);
xmlhttp.open("GET","Sawtiyat/Quoran/riwaya_selected.php?riwaya="+str,true);
xmlhttp.send();
}
 
function showUser4(str)
{
if (str=="")
  {
  document.getElementById("txtHint4").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint4").innerHTML=xmlhttp.responseText;
    }
  }
  str=encodeURI(str);
xmlhttp.open("GET","Sawtiyat/Quoran/nationality_selected.php?nationality="+str,true);
xmlhttp.send();
}
test.php:
<?php
//print_r($_GET);
 
$id = $_GET['id'];
echo 'id'.$id.'<br>';
 
 
 
if ($id == '1')
{
	//$theorder = 'sheikh_ar';
	include 'sheikh_ar.php';	
}
if ($id == '2')
{
	//$theorder = 'riwaya';
	include 'nationality.php';
}
if ($id == '3')
{
	//$theorder = '';
	include 'riwaya.php';	
}
if ($id == '4')
{
	//$theorder = '';
	include 'tilawa.php';	
	
}
?>
sheikh_ar.php:
<?php
print_r($_GET);
 
include '../../Included_Files/Connect.php';
 
// selection DB sawtiyat
mysql_select_db($db_sawtiyat) or die ('Erreur de selection de la BD sawtiyat: '.mysql_error());
// selectionner tous les shiekhs
 
$select_qr = 'SELECT DISTINCT sheikh_ar FROM sheikh_tbl WHERE quoran=1';
echo '<font color="red">'.$select_qr.'</font><br>';
 
$query_qr = mysql_query($select_qr) OR DIE (mysql_error());
$nb = mysql_num_rows($query_qr);
//echo 'total: <font color="green">'.$nb.'</font><br>';
 
	echo '		<select name="users2" onchange="showUser2(this.value)">
				<option value="-1" disabled="disabled" selected="selected">- Select Make</option>
				<option value="0">&#1580;&#1605;&#1610;&#1593; &#1575;&#1604;&#1605;&#1602;&#1585;&#1574;&#1610;&#1606;</option>
				';
while ($row_qr = mysql_fetch_array($query_qr))
{
	// on extract les donnees
extract($row_qr);
	
 
echo '<option value="'.$sheikh_ar.'">'.$sheikh_ar.'</option>';
 
echo $sheikh_en.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$sheikh_ar;
echo $riwaya.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
echo $nationality.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 
}
echo '</select>';
 
//echo '</form>';
 
?>
sheikh_selected.php:
<?php
print_r($_GET);
 
include '../../Included_Files/Connect.php';
include '../../Included_Files/Functions.php';
 
// selection DB sawtiyat
mysql_select_db($db_sawtiyat) or die ('Erreur de selection de la BD sawtiyat: '.mysql_error());
 
$select_qr2 = 'SELECT * FROM sheikh_tbl WHERE quoran=1 AND sheikh_ar = "'.$sheikh_ar.'"';
//echo '<font color="red">'.$select_qr2.'</font><br>';
 
$query_qr2 = mysql_query($select_qr2) OR DIE (mysql_error());
$nb2 = mysql_num_rows($query_qr2);
//echo 'total: <font color="green">'.$nb2.'</font><br>';
 
echo '<table width="700" align="center" cellpadding="5">';
echo '<tr align="center" bgcolor="#42afdc"><td colspan="4">';
echo '&#1593;&#1583;&#1583; &#1575;&#1604;&#1606;&#1578;&#1575;&#1574;&#1580;: '.$nb2;
//echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
//echo '[ <a href="Idara/generer.php?menu=Demandq" rel="gb_page[800, 400] title="&#1571;&#1606;&#1602;&#1585; &#1607;&#1606;&#1575; &#1604;&#1591;&#1604;&#1576; &#1605;&#1602;&#1585;&#1574; &#1580;&#1583;&#1610;&#1583; ">&#1591;&#1604;&#1576; &#1602;&#1575;&#1585;&#1574; &#1580;&#1583;&#1610;&#1583; </a>]';
//echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
//echo '[ &#1591;&#1604;&#1576;&#1575;&#1578; &#1578;&#1581;&#1578; &#1575;&#1604;&#1573;&#1606;&#1578;&#1592;&#1575;&#1585; ' .$nbq.' ]';
echo '</td>';
 
 
while ($row_qr2 = mysql_fetch_array($query_qr2))
{
	// on extract les donnees
	extract($row_qr2);
	
		if ($i%4 == 0) echo '<tr align="center">';
$i++;
 
$filename = '../../'.$path2sheikh.$sheikh_en.'.png';
$print_filename = $path2sheikh.$sheikh_en.'.png';
//echo $filename.'<br>';
 
echo '<td width="160"><a href="Sawtiyat-Quoran-'.$sheikh_en.'-id_shk'.$id_shk.'.html" class="Link01">';
if (file_exists($filename)) {
	   $pic = '<img src="'.$print_filename.'" width="120" height="120" class="shadow" />';
} else {
	   $pic = '<img src="'.$path2sheikh.'Unknown.png" width="120" height="120" class="shadow" />';
}
echo $pic;
 
$numbers = array (1,2,3,4);
$tilawat = array ('&#1605;&#1585;&#1578;&#1604;', '&#1605;&#1580;&#1608;&#1583;');
$riwayat = array ('&#1581;&#1601;&#1589; &#1593;&#1606; &#1593;&#1575;&#1589;&#1605;', '&#1608;&#1585;&#1588; &#1593;&#1606; &#1606;&#1575;&#1601;&#1593;', '&#1581;&#1605;&#1586;&#1577; &#1593;&#1606; &#1582;&#1604;&#1601;', '&#1575;&#1604;&#1587;&#1608;&#1587;&#1610; &#1593;&#1606; &#1571;&#1576;&#1610; &#1593;&#1605;&#1585;&#1608;');
 
$riwaya = str_replace ($numbers, $riwayat, $riwaya);
$tilawa = str_replace ($numbers, $tilawat, $tilawa);
 
echo '</a>';
echo '<br>';
echo '<b>'.$sheikh_ar.'</b><br>';
echo '<b>'.$tilawa.'</b><br>';
echo '<b>'.$riwaya.'</b><br>';
 
// selection DB sawtiyat
//mysql_select_db($db_sawtiyat) or die ('Erreur de selection de la BD sawtiyat: '.mysql_error());
$select_s = 'SELECT COUNT(*) FROM sheikh_reciting WHERE id_shk2 = "'.$id_shk.'"';
//echo $select_s;
$result_s = mysql_query($select_s) OR DIE ('Unable to select recitings'. mysql_error());
$data_s = mysql_fetch_array($result_s);
//echo $data_s[0];
 
	echo '&#1593;&#1583;&#1583; &#1575;&#1604;&#1587;&#1608;&#1585;: ';
 
if ($data_s[0] == '114')
{
	$data_s[0] = '<img src="'.$path2icons.'mushaf.gif" width="20" height="20" alt="&#1575;&#1604;&#1605;&#1589;&#1581;&#1601; &#1603;&#1575;&#1605;&#1604;&#1575;" title="&#1575;&#1604;&#1605;&#1589;&#1581;&#1601; &#1603;&#1575;&#1605;&#1604;&#1575;" />';
}
else
{
	$data_s[0] = $data_s[0];
}
echo $data_s[0];
 
//echo '<br>';
//echo '&#1585;&#1608;&#1575;&#1610;&#1577;: '.$riwaya;
//echo '<br>';
//include 'Files/Votes/votes_result.php';
echo '</td>';
 
 
     if ($i%4 ==0)echo "</tr>";    
}
echo '</table>';
?>
nationality.php:
<font color="gray">nationality</font><br />
<?php
print_r($_GET);
 
include '../../Included_Files/Connect.php';
 
// selection DB sawtiyat
mysql_select_db($db_sawtiyat) or die ('Erreur de selection de la BD sawtiyat: '.mysql_error());
// selectionner tous les shiekhs
 
$select_qr = 'SELECT DISTINCT nationality FROM sheikh_tbl WHERE quoran=1';
echo '<font color="red">'.$select_qr.'</font><br>';
 
$query_qr = mysql_query($select_qr) OR DIE (mysql_error());
$nb = mysql_num_rows($query_qr);
//echo 'total: <font color="green">'.$nb.'</font><br>';
 
	echo '		<select name="users2" onchange="showUser4(this.value)">
				<option value="-1" disabled="disabled" selected="selected">- Select Make</option>
				<option value="0">&#1580;&#1605;&#1610;&#1593; &#1575;&#1604;&#1576;&#1604;&#1583;&#1575;&#1606;</option>
				';
	
while ($row_qr = mysql_fetch_array($query_qr))
{
	// on extract les donnees
extract($row_qr);
	
echo '<option value="'.$nationality.'">'.$nationality.'</option>';
 
echo $sheikh_en.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$sheikh_ar;
echo $riwaya.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
echo $nationality.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 
}
echo '</select>';
 
?>
nationality_selected.php:
<font color="gray">nationality selected</font><br />
<?php
 
print_r($_GET);
 
include '../../Included_Files/Connect.php';
include '../../Included_Files/Functions.php';
 
$nationality = $_GET['nationality'];
echo 'testbis nationality'.$nationality.'<br>';
 
// selection DB sawtiyat
mysql_select_db($db_sawtiyat) or die ('Erreur de selection de la BD sawtiyat: '.mysql_error());
$select_qr2 = 'SELECT * FROM sheikh_tbl WHERE quoran=1 AND nationality = "'.$nationality.'"';
echo '<font color="red">'.$select_qr2.'</font><br>';
 
$query_qr2 = mysql_query($select_qr2) OR DIE (mysql_error());
$nb2 = mysql_num_rows($query_qr2);
//echo 'total: <font color="green">'.$nb2.'</font><br>';
 
echo '<table width="700" align="center" cellpadding="5">';
echo '<tr align="center" bgcolor="#42afdc"><td colspan="4">';
echo '&#1593;&#1583;&#1583; &#1575;&#1604;&#1606;&#1578;&#1575;&#1574;&#1580;: '.$nb2;
//echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
//echo '[ <a href="Idara/generer.php?menu=Demandq" rel="gb_page[800, 400] title="&#1571;&#1606;&#1602;&#1585; &#1607;&#1606;&#1575; &#1604;&#1591;&#1604;&#1576; &#1605;&#1602;&#1585;&#1574; &#1580;&#1583;&#1610;&#1583; ">&#1591;&#1604;&#1576; &#1602;&#1575;&#1585;&#1574; &#1580;&#1583;&#1610;&#1583; </a>]';
//echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
//echo '[ &#1591;&#1604;&#1576;&#1575;&#1578; &#1578;&#1581;&#1578; &#1575;&#1604;&#1573;&#1606;&#1578;&#1592;&#1575;&#1585; ' .$nbq.' ]';
echo '</td>';
 
while ($row_qr2 = mysql_fetch_array($query_qr2))
{
	// on extract les donnees
	extract($row_qr2);
	
		if ($i%4 == 0) echo '<tr align="center">';
$i++;
 
$filename = '../../'.$path2sheikh.$sheikh_en.'.png';
$print_filename = $path2sheikh.$sheikh_en.'.png';
//echo $filename.'<br>';
 
echo '<td width="160"><a href="Sawtiyat-Quoran-'.$sheikh_en.'-id_shk'.$id_shk.'.html" class="Link01">';
if (file_exists($filename)) {
	   $pic = '<img src="'.$print_filename.'" width="120" height="120" class="shadow" />';
} else {
	   $pic = '<img src="'.$path2sheikh.'Unknown.png" width="120" height="120" class="shadow" />';
}
echo $pic;
 
$numbers = array (1,2,3,4);
$tilawat = array ('&#1605;&#1585;&#1578;&#1604;', '&#1605;&#1580;&#1608;&#1583;');
$riwayat = array ('&#1581;&#1601;&#1589; &#1593;&#1606; &#1593;&#1575;&#1589;&#1605;', '&#1608;&#1585;&#1588; &#1593;&#1606; &#1606;&#1575;&#1601;&#1593;', '&#1581;&#1605;&#1586;&#1577; &#1593;&#1606; &#1582;&#1604;&#1601;', '&#1575;&#1604;&#1587;&#1608;&#1587;&#1610; &#1593;&#1606; &#1571;&#1576;&#1610; &#1593;&#1605;&#1585;&#1608;');
 
$riwaya = str_replace ($numbers, $riwayat, $riwaya);
$tilawa = str_replace ($numbers, $tilawat, $tilawa);
echo '</a>';
echo '<br>';
echo '<b>'.$sheikh_ar.'</b><br>';
echo '<b>'.$tilawa.'</b><br>';
echo '<b>'.$riwaya.'</b><br>';
 
echo '&#1593;&#1583;&#1583; &#1575;&#1604;&#1587;&#1608;&#1585;: ';
 
if ($data_s[0] == '114')
{
	$data_s[0] = '<img src="'.$path2icons.'mushaf.gif" width="20" height="20" alt="&#1575;&#1604;&#1605;&#1589;&#1581;&#1601; &#1603;&#1575;&#1605;&#1604;&#1575;" title="&#1575;&#1604;&#1605;&#1589;&#1581;&#1601; &#1603;&#1575;&#1605;&#1604;&#1575;" />';
}
else
{
	$data_s[0] = $data_s[0];
}
echo $data_s[0];
 
//echo '<br>';
//echo '&#1585;&#1608;&#1575;&#1610;&#1577;: '.$riwaya;
//echo '<br>';
//include 'Files/Votes/votes_result.php';
echo '</td>';
 
 
     if ($i%4 ==0)echo "</tr>";    
}
echo '</table>';
?>
Le probleme c'est l'affichage des resultats, par exemple:

Je selectionne la categorie "Sport", apres je selectionne la sous categorie "Foot-Ball", donc j'ai deux listes, une pour les categories et l'autre pour les sous categories, il m'affiche un resultat de ma selection:

+ Ici la liste des categories "Sport"
++ Ici la liste des sous categories "Foot-Ball"
+++ Ici le resultat de ma selection

Si je veux changer de categorie, par exemple "Education" et je choisis la sous categorie "Lycee", il me donne un resultat comme suivant:

+ Ici la liste des categories "Education"
++ Ici la liste des sous categories "Lycee"
+++ Ici le resultat de ma selection qui est la premiere selection "Sport & Foot"
++++ Ici le resultat de ma selection qui est l'actuel selection "Education-Lycee".

Ca donne le resultat de la premiere selection suivi de la 2eme selection (le resultat du 1er choix et en dessous le resultat du 2eme choix)

Merci d'avance

Re: Affichage des resultats d'une liste

Posté : 08 nov. 2010, 01:24
par AB
Oui bon y'a un bug mais avec tous ces fichiers pas facile de débugger...
Pour info un tuto et code qui a fait ses preuves avec la méthode ajax que tu utilises sur ce lien

Re: Affichage des resultats d'une liste

Posté : 08 nov. 2010, 03:52
par Fredy07
Oui bon y'a un bug mais avec tous ces fichiers pas facile de débugger...
Pour info un tuto et code qui a fait ses preuves avec la méthode ajax que tu utilises sur ce lien
Merci AB pour votre reponse, je voudrais savoir comment faire afin d'ajouter plus d'URL (fichier js) selon le choix de l'utilisateur:
        var url = 'departements.php?idr='+ idr;
Selon le choix de l'utilisateur on l'envoi vers une URL, par exemple s'il choisit la categorie1 on le redirige vers categorie1.php et s'il choisit la categorie2 on le redirige vers categorie2.php, c'est pour cela dans mon code main.js j'ai cree 4 fonctions similaire, sauf le nom est different ainsi que le fichier de destination.

Re: Affichage des resultats d'une liste

Posté : 08 nov. 2010, 12:13
par Cyrano
Salut,
en vitesse et très schématiquement, parce que je n'ai pas le temps de lire tout ton code, si ton url change selon la catégorie, on a affaire à un paramètre dynamique. Il est donc nécessaire que ça fasse partie des données à récupérer via AJAX et au lieu de créer quatre fonctions avec un bout de code en dur pour l'url, n'en crée qu'une seule avec un paramètre où tu alimenteras l'url appropriée.

Re: Affichage des resultats d'une liste

Posté : 10 nov. 2010, 04:35
par Fredy07
Salut,
en vitesse et très schématiquement, parce que je n'ai pas le temps de lire tout ton code, si ton url change selon la catégorie, on a affaire à un paramètre dynamique. Il est donc nécessaire que ça fasse partie des données à récupérer via AJAX et au lieu de créer quatre fonctions avec un bout de code en dur pour l'url, n'en crée qu'une seule avec un paramètre où tu alimenteras l'url appropriée.
Voila je cherchais la fonction que l'on peut utliser pour regrouper mes 4 fonctions.