Bonjour à toutes et à tous,
J'ai un problème avec un affichage page à page pour lier 2 requêtes. Seule la 2ème requête ($result) prend bien en compte un affichage limité à 10 items par par page... la 1ère ($result_bis) affiche tous les résultats sans tenir compte de ce qui va suivre! La vilaine!?
Désolé pour le codage ci-dessous, les puristes vont probablement "bondir" mais je ne fais que m'inspirer de codes déjà existants.... c'est aussi pour ça que je calle!
Merci pour votre aide pour faire en sorte que j'ai bien un affichage de 10 résultats UNIQUEMENT sur chaque page tout en tenant compte du nombre de résultats des 2 requêtes.
mon code :
<?php include("online_connexion.php");
$nb_results_p_page = 10; // nombre de résultats par page
$nb_avant = 3; // nombre de page avant la page courante
$nb_apres = 3; // nombre de page après la page courante
$premiere = 1; // aficher le lien "première page" (1 ou 0)
$derniere = 1; // afficher le lien "dernière page" (1 ou 0)
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)
$dpt_i = $HTTP_GET_VARS['dpt'];
$dpt = sprintf("%02s",$dpt_i);
$dpt_suiv_i = ($dpt + 1);
$dpt_suiv = sprintf("%02s",$dpt_suiv_i);
$type = $HTTP_GET_VARS['type'];
if(!empty($_POST['tri']))
{
$tri = $HTTP_POST_VARS['tri'];
}
else{
if(!empty($_GET['tri'])){$tri=$_GET['tri'];}else{$tri="CP";}
}
// comptage du nombre de lignes de la base
$result = mysql_query("SELECT count(ID) FROM inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' ORDER BY `CP` ASC");
if(!$result)
{
// redirection erreur
header("location: erreur.php");
mysql_close($db);
exit;
}
$ret = mysql_fetch_array($result);
// nombre de lignes
$nb_results = $ret[0];
$result = mysql_query("SELECT * FROM inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' AND PREMIUM='OUI' ORDER BY `PREMIUM` DESC,'".$tri."' ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");
$result_bis = mysql_query("SELECT * FROM inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' AND PREMIUM!='OUI' ORDER BY `LISTE_FREE` ASC,'".$tri."' ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");
if($nb_results) {
// debut du tableau
echo '<font color="#FD740F" size="1" face="Verdana">'.$nb_results.' référencements<p>';
echo '<form method="POST">';
echo '<p height="15" align="right"><select size="1" name="tri">';
echo '<option>choix de tri</option>';
echo '<option>CP</option>';
echo '<option>INTITULE</option>';
echo '<option>VILLE</option>';
echo '<option>NOM</option>';
echo '</select> ';
echo '<input type="image" img border="0" src="images/Gif%20Anime/file.gif" width="19" height="19" alt="Validez votre choix de tri"> </p>';
echo '</form>';
echo '<TABLE width="495" border="0" cellpadding="0" cellspacing="0"><TR><TD ALIGN="center">'."\n";
// ==============
while($row = mysql_fetch_array($result)) {
$descriptif_liste = substr($row['DESCRIPTIF_LISTE'],0,299)."...";
echo '<table bgcolor="#FFDB18" border="0" cellpadding="1" width="495">';
echo '<tr>';
echo '<td bgcolor="#FFDB18" border="0" rowspan="3" height="70" width="105"><a href="fiche.php?id='.$row['ID'].'" target="_blank"><img height="70" alt="'.$row['INTITULE'].'" src="images/Photos_B&B/'.$row['ID'].'.jpg" width="105" border="0"></a></td>';
echo '<td bgcolor="#FFDB18" border="0" width="277" height="25" valign="middle"><b><a href="fiche.php?id='.$row['ID'].'" target="_blank"><span class="list1"></span><font color="#FD740F" size="4">'.$row['INTITULE'].'</a></b> <img border="0" src="images/Divers/repas_'.$row['REPAS'].'.gif" alt="Repas sur réservation => '.$row['REPAS'].'" width="18" height="18"></font></td>';
echo '<td bgcolor="#FFDB18" border="0" align="right" width="106"> <img border="0" src="images/Divers/'.$row['CLASSIFICATION'].'_epis.bmp" width="'.$row['CLASSIFICATION'].''.$row['CLASSIFICATION'].'" height="22"><span class="list3"><font size="1" face="Verdana"> <img border="0" src="images/Divers/'.$row['AFFILIATION'].'_jaune.gif" height="26" alt="Membre - '.$row['AFFILIATION'].'"> </font></span></td>';
echo '</tr>';
echo '<tr>';
echo '<td bgcolor="#FFDB18" border="0" colspan="2" width="387"><span class="list2"><font size="1" face="Verdana">'.$descriptif_liste.'</font></span></td>';
echo '</tr>';
echo '<tr>';
echo '<td bgcolor="#FFDB18" border="0" width="277"><span class="list3"><font size="2" face="Verdana">'.$row['CP'].' '.$row['VILLE'].'</font></span></td>';
echo '<td bgcolor="#FFDB18" border="0" align="right" width="106"><span class="list3"><u><font size="1" face="Verdana">'.$row['TEL'].'</font></u></span></td>';
echo '</table>'."\n";
echo '<br>';
}
echo '</TABLE>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);
if($nb_results) {
echo '<TABLE bordercolor="#FFFFFF" border="0" cellpadding="0" width="495"><TR><TD ALIGN="center">'."\n";
while($row = mysql_fetch_array($result_bis)) {
$descriptif_liste = substr($row['DESCRIPTIF_LISTE'],0,164)."...";
echo '<table bgcolor="#FFFFFF" border="0" cellpadding="1" width="495">';
echo '<tr>';
echo '<td><a></span><font color="#FD740F" size="4" face="Verdana">'.$row['INTITULE'].'</a></td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2" width="495"><span class="list2"><font size="1" face="Verdana">'.$descriptif_liste.'</font></span></td>';
echo '</tr>';
echo '<tr>';
echo '<td width="389"><span class="list3"><font size="2" face="Verdana">'.$row['CP'].' '.$row['VILLE'].'</font></span></td>';
echo '<td align="right" width="106"><span class="list3"><font size="1" face="Verdana">'.$row['TEL'].'</font></span> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="3" valign="center" align="center" width="495"><img border="0" src="images/test__4.gif" width="495" height="02"></td>';
echo '</tr>';
echo '</table>';
}
echo '</TABLE>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result_bis);
// nombre total de pages
$nb_pages = ceil($nb_results / $nb_results_p_page);
// nombre de pages avant
$avant = $courant > ($nb_avant + 1) ? $nb_avant : $courant - 1;
// nombre de pages après
$apres = $courant <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $courant;
// première page
if($premiere && $courant - $avant > 1)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?dpt='.$dpt.'&type='.$type.'&tri='.$tri.'"><font size="1" face="Verdana"><span style="color: #0000FF;">Première</span></font></a> ';
// page précédente
if($courant > 1)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant - 1) . '&dpt='.$dpt.'&type='.$type.'&tri='.$tri.'"><font size="1" face="Verdana"><span style="color: #0000FF;">Précédente</span></font></a> ';
// affichage des numéros de page
for($i = $courant - $avant; $i <= $courant + $apres; $i++)
{
// page courante
if($i == $courant)
echo '<font size="2" face="Verdana"><span style="color: #FF0000;">' . $i . '</span></font> ';
else
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i . '&dpt='.$dpt.'&type='.$type.'&tri='.$tri.'"><font size="2" face="Verdana"><span style="color: #0000FF;">' . $i . '</span></font></a> ';
}
// page suivante
if($courant < $nb_pages)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant + 1) . '&dpt='.$dpt.'&type='.$type.'&tri='.$tri.'"><font size="1" face="Verdana"><span style="color: #0000FF;">Suivante</span></font></a> ';
if($derniere && $courant + $apres < $nb_pages)
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $nb_pages . '&dpt='.$dpt.'&type='.$type.'&tri='.$tri.'"><font size="1" face="Verdana"><span style="color: #0000FF;">Dernière</span></font></a> ';
mysql_close($connexion);