Pb Affichage page par page
Posté : 07 juin 2005, 09:20
Bonjour tout le monde,
Je me suis aidé du cours de phpdébutant pour afficher le resultat de ma requête par pages.
J'explique :
on est sur un formulaire de selection, on selectionne ce que l'on désire afficher, et dans le résultat de l'affichage, j'ai mis ma limite à 6. Donc si j'ai 14 resultat, ça me donne 3 pages.
Pour totu ça c'est Ok. Le problème s'est qd on affiche la dernière page. J'obtiens bien pour 14 resultats les deux derniers sur la page 3. Mais quand j'affiche la page 3, la fonction affiche pages me met non plus 1 2 3 mais 1234567 avec 7 en page active et la limite de 2 3 4 5 6 ki sont respectivement à 2 4 6 8 10 et 12 pour 7.
Et donc voilà le pb que je rencontre pourkoi cela me fait ça !
J'en appelle a votre savoir, j'ai deja fait le tour de mon entourage en programation mais personne ne voit do'u ça vient.
Voici les codes php :
pages Affi_skins_manga.php :
Je me suis aidé du cours de phpdébutant pour afficher le resultat de ma requête par pages.
J'explique :
on est sur un formulaire de selection, on selectionne ce que l'on désire afficher, et dans le résultat de l'affichage, j'ai mis ma limite à 6. Donc si j'ai 14 resultat, ça me donne 3 pages.
Pour totu ça c'est Ok. Le problème s'est qd on affiche la dernière page. J'obtiens bien pour 14 resultats les deux derniers sur la page 3. Mais quand j'affiche la page 3, la fonction affiche pages me met non plus 1 2 3 mais 1234567 avec 7 en page active et la limite de 2 3 4 5 6 ki sont respectivement à 2 4 6 8 10 et 12 pour 7.
Et donc voilà le pb que je rencontre pourkoi cela me fait ça !
J'en appelle a votre savoir, j'ai deja fait le tour de mon entourage en programation mais personne ne voit do'u ça vient.
Voici les codes php :
pages Affi_skins_manga.php :
<?
require('fonctions.php');
require('compteurclic/compteur.php');
require('connexion.php');
$num_manga = $_POST['num_manga'];
if ($num_manga == NULL)
{
$chaine=urldecode($_SERVER['QUERY_STRING']);
$couples=split("&", $chaine);
$t=array();
while (list(, $v)=each($couples))
{
list(, $valeur) = explode("=", $v);
array_push($t, $valeur);
}
$num_manga=$t[0];
$limite=$t[1];
}
if( !isset($limite)) $limite = 0;
$sql="SELECT * FROM skin_nom_anime WHERE num_anime=".$num_manga;
$id=mysql_query($sql, $link);
$ligne=mysql_fetch_array($id);
$nom_anime=$ligne['nom_anime'];
require('header.php');
require('menu.php');
require('partenaires.php');
echo '<div id="centre">';
echo '<div class="SkinManga">';
$nombre = 6;
$num_manga_save = $num_manga;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
$select = 'SELECT count(num_skin) FROM skin_manga WHERE num_anime='.$num_manga_save;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)
{
$limite = 0;
}
echo '<p>';
echo 'Skins Winamp : '.$nom_anime;
echo '<br>';
echo '<br>';
//--- Requête Nom de Skin---//
$sql='SELECT skin_manga.nom_skin AS nomskin, skin_manga.url AS urlskin, pds_down.id AS iddl, pds_down.total AS totaldl FROM skin_manga, pds_down WHERE skin_manga.num_anime='.$num_manga_save. ' AND pds_down.num_image=skin_manga.num_image ORDER BY nomskin ASC LIMIT '.$limite.','.$nombre;
//--- Résultat ---//
$res=mysql_query($sql, $link);
if($total)
{
while($skin = mysql_fetch_assoc($res))
{
$tablo[]= $skin; //--- mettre les données dans un tableau
}
$nbcol=2; //--- détermine le nombre de colonnes
echo '<table>';
$nb = count($tablo);
for($i=0;$i<$nb;$i++)
{
//--- les valeurs que l'on souhaite afficher
$valeur1 = $tablo[$i]['nomskin'];
$valeur2 = $tablo[$i]['urlskin'];
$valeur3 = $tablo[$i]['iddl'];
$valeur4 = $tablo[$i]['totaldl'];
if($i%$nbcol==0)
echo '<tr>';
echo '<td align=center><a href=compteurclic/out.php?id=',$valeur3,' class="SkinManga"><img src=',$valeur2,'><br/><font class="SkinManga">',$valeur1,' - Nb de dl : ',$valeur4,'</font><br><br></td></a>';
if($i%$nbcol==($nbcol-1))
echo '</tr>';
}
echo '</table>';
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($res);
if($total > $nombre)
{
// affichage des liens vers les pages
affichePages($num_manga,$nb,$page,$total,$limite);
// affichage des boutons
//displayNextPreviousButtons($limite,$total,$nombre,$page);
}
echo '<br><br><a href="skins_manga.php" class="SkinManga">Retour vers la sélection</a>';
echo '</p>';
echo '</div>';
echo '</div>';
require 'footer.php';
?>
Voici mes fonctions :
<?
function affichePages($num_manga,$nb,$page,$total,$numpage)
{
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;
echo '<table border = "0" align=center><tr>'."\n";
while($numeroPages <= $nbpages)
{
if( $numeroPages != (($numpage/$nb)+1))
{
echo '<td><a href = "'.$page.'?manga='.$num_manga.'&limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
}
else
{
echo '<td><a href = "'.$page.'?manga='.$num_manga.'&limite='.$limite.'"><font color="#000000">'.$numeroPages.'</font></a></td>'."\n";
}
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10)
{
$compteurPages = 1;
echo '<br>'."\n";
}
}
echo '</tr></table>'."\n";
}
function verifLimite($limite,$total,$nombre)
{
if(is_numeric($limite)) // je verifie si limite est un nombre.
{
// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0))
{
$valide = 1; // j'assigne 1 à $valide si $limite est entre 0 et $max
}
else
{
$valide = 0; // sinon j'assigne 0 à $valide
}
}
else
{
$valide = 0; // si $limite n'est pas numérique j'assigne 0 à $valide
}
return $valide; // je renvois $valide
}
?>