Problème dans l'affichage de plusieurs page

missihafid Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
missihafid Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Voici mon code qui permet d'afficher les videos de chaque type de l'info.
Ce code ça marche en général bien, sauf que si j'ai plus de 5 enregistrent dans sous categorie il m'affiche les 5, et après si je clique sur suivant ou bien sur page 2 il affiche une page si comme je n'ai pas d'autre enregistrement!
Si je ne trompe pas, le problème c'est dans le lien "1" et "2" , "suivant" etc, il faut qu'il rappelle de l'id des sous categorie "id_cat"cpour qu'il affiche d'autres!!


     <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>

     <?php
  //session_start();
    $catinfo=@$_GET['catinfo'] ;
  
  echo "<h3></br><strong>".$catinfo."</strong></h3></br>";
     // Connexion à la base de données
     $host = "localhost";
     $user = "root";
     $pass = "";
     $data = "basedonnee";
     $connect = mysql_connect($host, $user, $pass)
     or die("Connexion au serveur impossible !");
     $db = mysql_select_db($data, $connect)
     or die("Sélection de la base impossible !");

  $sql = "SELECT * FROM categorie,video
  where categorie.ID_CAT=video.ID_CAT 
 and categorie.SOUS_CAT='".$catinfo."'"; // specifier categorie  
   
     $parpage = 5; // Nombre d'enregistrements par page à afficher
    $total = mysql_query($sql);

    $nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
    
     // On calcule le nombre de pages à afficher en arrondissant
     // le résultat au nombre supérieur grâce à la fonction ceil()
     $nbpages = ceil($nblignes/$parpage);

  // On teste en affichant la valeur des variables (facultatif)
  
     // Si une valeur 'limit' est passée par url, on vérifie la validité de
    // cette valeur par mesure de sécurité avec la fonction validlimit()
     // cette fonction retourne automatiquement le résultat de la requête
     $result = validlimit($nblignes,$parpage,$sql);
  echo '</br></br>';
  //echo '<div class="e2-form">';
  echo '<table id="table1"nom_soc >';
  echo '<tr><td><center><h3>Titre</h3></center></br> </td><td><center><h3>Description</h3></center> </br></td><td><center><h3>Voir video</h3></center></br></td></tr>';
  echo '<tr><td colspan="3" ><hr></td></tr>' ;
     // On affiche le résultat de la requête
    // On crée donc ici son propre tableau pour lequel on souhaite une pagination
     while ($ligne = mysql_fetch_array($result)) {
   echo '<tr><td colspan="3" ><hr></td></tr>' ;
    echo '<tr><td width="250"><center>'.$ligne["TITRE_VIDEO"].'</center></td><td width="250"><center>'.$ligne["DESCRIPTION_VIDEO"].' '.$ligne["LIEN_VIDEO"].'</center>></td><td><center><a href="accueil.php?page=supprission&code='.$ligne["ID_VIDEO"].'"><img src="images/voir.png"></a></center></td></tr>';
  echo '<tr><td colspan="3" ><hr></td></tr>' ;
     }
    
    $url="accueil.php?page=info1&limit=";
      // Résultat total de la requête $sql
  
     // Menu de pagination que l'on place après la requête
    // echo "<div class='pagination'>";
     echo pagination($url,$parpage,$nblignes,$nbpages);
  //   echo "</div>";
    echo '</table>';
 //echo '</div>';
     mysql_free_result($result); // Libère le résultat de la mémoire

    
     function pagination($url,$parpage,$nblignes,$nbpages)
     {
     // On crée le code html pour la pagination
     $html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
     // On vérifie que l'on a plus d'une page à afficher
     if ($nbpages > 1) {
     // On boucle sur les numéros de pages à afficher
     for ($i = 0 ; $i < $nbpages ; ++$i) {
     $limit = $i * $parpage; // On calcule le début de la valeur 'limit'
     $limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
     // On affiche les liens des numéros de pages
     $html .= "<a href=".$url.$limit.">".($i + 1)."</a> |" ;
     }
     }
     // Si l'on a qu'une page on affiche rien
     else {
     $html .= "";
     }
     $html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
     // On retourne le code html
     return $html;
     }
     function validlimit($nblignes,$parpage,$sql)
     {
     // On vérifie l'existence de la variable $_GET['limit']
     // $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
     if (isset($_GET['limit'])) {
     $pointer = preg_split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
     $debut = $pointer[0];
     $fin = $pointer[1];
     // On vérifie la conformité de la variable $_GET['limit']
     if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
     // Si $_GET['limit'] est valide on lance la requête pour afficher la page
     $limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
     $sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
     $result = mysql_query($sql); // Nouveau résultat de la requête
     }
     // Sinon on affiche la première page
     else {
     $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
     $result = mysql_query($sql); // Nouveau résultat de la requête
     }
     }
     // Si la valeur 'limit' n'est pas connue, on affiche la première page
     else {
     $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
     $result = mysql_query($sql); // Nouveau résultat de la requête
     }
     // On retourne le résultat de la requête
     return $result;
     }
    function precedent($url,$parpage,$nblignes)
     {
     // On vérifie qu'il y a au moins 2 pages à afficher
     if ($nblignes > $parpage) {
     // On vérifie l'existence de la variable $_GET['limit']
     if (isset($_GET['limit'])) {
     // On scinde la variable 'limit' en utilisant la virgule comme séparateur
     $pointer = explode('[,]', $_GET['limit']);
     // On récupère le nombre avant la virgule et on soustrait la valeur $parpage
     $pointer = $pointer[0]-$parpage;
     // Si on atteint la première page, pas besoin de lien 'Précédent'
     if ($pointer < 0) {
     $precedent = "";
     }
     // Sinon on affiche le lien avec l'url de la page précédente
     else {
     $limit = "$pointer,$parpage";
     $precedent = "<a href=".$url.$limit.">Précedent</a> | ";
     }
     }
     else {
     $precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
     }
     }
     else {
     $precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
     }
     return $precedent;
     }
     function suivant($url,$parpage,$nblignes)
     {
     // On vérifie qu'il y a au moins 2 pages à afficher
     if ($nblignes > $parpage) {
     // On vérifie l'existence de la variable $_GET['limit']
     if (isset($_GET['limit'])) {
     // On scinde la variable 'limit' en utilisant la virgule comme séparateur
     $pointer = preg_split('[,]', $_GET['limit']);
     // On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
     $pointer = $pointer[0] + $parpage;
     // Si on atteint la dernière page, pas besoin de lien 'Suivant'
    if ($pointer >= $nblignes) {
    $suivant = "";
     }
     // Sinon on affiche le lien avec l'url de la page suivante
     else {
     $limit = "$pointer,$parpage";
     $suivant = "<a class='pagination' href=".$url.$limit.">Suivant</a>";
     }
     }
     // Si pas de valeur 'limit' on affiche le lien de la deuxième page
     if (@$_GET['limit']== false) {
     $suivant = "<a href=".$url.$parpage.",".$parpage.">Suivant</a>";
     }
     }
     else {
     $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
     }
     return $suivant;
     }
     ?>
   <br />
   <a href="accueil.php" ><img src="images/retour.png" width="70" height="40" /></a>

et merci d'avance
A voir également:

2 réponses

missihafid Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Je veux ajoute que si je n'utilise pas sous categorie (@$_GET['catinfo']) et j'utilise la table sans restriction il marche bien, sinon il me génère ce problème!!
Aidez moi S'il vous plait
0
missihafid Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Je veux juste me signaler des fautes dans ce code c'est même structure de précédent mais celle ci est plus simple et affiche juste 2 liens une pour page précédente et l'autre pour page suivante:
     <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>

     <?php
	 
	 if(!empty($_GET['id_cat'])){
	 echo "<h3></br><strong>".$_GET['id_cat']."</strong></h3></br>";
     // Connexion à la base de données
     $host = "localhost";
     $user = "root";
     $pass = "";
     $data = "basedonnee"; // Nommer ici la base de données
     $connect = mysql_connect($host, $user, $pass)
     or die("Connexion au serveur impossible !");
     $db = mysql_select_db($data, $connect)
     or die("Sélection de la base impossible !");

   $parpage = 3;
$limit = 1;
// On test si la variable existe
if (isset($_GET['limit'])) {
     // On test si c'est un entier
	 
     if(is_int($_GET['limit'])) {
          $limit = $_GET['limit'];
     }
}
$offset = ($limit - 1) * $parpage ;
	 $sql = "SELECT * FROM categorie,video
	 where categorie.ID_CAT=video.ID_CAT 
	and categorie.ID_CAT='".$_GET['id_cat']."' 
	order by rand()
	LIMIT $offset, $parpage
	
	"; // Requête initiale (à compléter si nécessaire)
    $sql1="SELECT distinct categorie.ID_CAT,categorie.SOUS_CAT FROM categorie,video
	 where categorie.ID_CAT=video.ID_CAT 
	";
      // Nombre d'enregistrements par page à afficher
  $result = mysql_query($sql);
if(mysql_query( $sql, $connect )=== FALSE) {
    die(mysql_error()); // TODO: better error handling
	}
	 echo '</br></br>';
	 //echo '<div class="e2-form">';
	 echo '<table id="table1" >';
	 echo '<tr><td><center><h3>Titre</h3></center></br> </td><td><center><h3>Description</h3></center> </br></td><td><center><h3>Voir video</h3></center></br></td></tr>';
	 echo '<tr><td colspan="3" ><hr></td></tr>' ;
     // On affiche le résultat de la requête
    // On crée donc ici son propre tableau pour lequel on souhaite une pagination
     while ($ligne = mysql_fetch_array($result)) {
	  echo '<tr><td colspan="3" ><hr></td></tr>' ;
    echo '<tr><td width="250"><center>'.$ligne["TITRE_VIDEO"].'</center></td><td width="250"><center>'.$ligne["DESCRIPTION_VIDEO"].' '.$ligne["LIEN_VIDEO"].'</center>></td><td><center><a href="accueil.php?page=voirvideo&code='.$ligne["ID_VIDEO"].'"><img src="images/voir.png"></a></center></td></tr>';
	 echo '<tr><td colspan="3" ><hr></td></tr>' ;
     }

     
  //   echo "</div>";
    echo '</table>';
//if (isset($_GET['limit'])) {
?> 

 <a href="accueil.php?page=info11&limit=<?php echo $limit + 1 ?>">Page suivante</a>
	<a href="accueil.php?page=info11&limit=<?php echo $limit - 1 ?>">Page précédente</a> 
<?php  // }
    }
	 else echo "Pas de videos</br></br>"; ?>
</br>
   <a href="accueil.php" ><img src="images/retour.png" width="70" height="40" style=" float:right" /></a>



il m'affiche bien les 3 premiers lignes mais le probléme si je clique sur lien précédent ou suivant?
J'ai utilisé 2 gets pour me recuperer id de categorie et variable $limit!
0