pagination avec un array

pagination avec un array - PHP - Programmation

Marsh Posté le 27-08-2007 à 16:53:27    

bonjour
 
je me heurte à un problème de tableau associatif
 
j'ai un fichier texte rempli de cette façon
ti_img-1.jpg|texte en FR|texte en UK|texte en DE|
ti_img-2.jpg|texte en FR|texte en UK|texte en DE|
etc....
ti_img-20.jpg|texte en FR|texte en UK|texte en DE|
 
mon but est d'afficher 6 photos sur 2 colonnes  
 
l'affichage marche. La premiere page affiche bien 6 photos sur 2 colonne mais le lien pour la 2eme page me colle les photos à la suite.
 
voila le debut de mon code

Code :
  1. $nbr_page = 6; // Nombre d'affichage par page
  2. $nmr_page = 10; // Nombre de Numéro par page
  3. $style = 'font-size: 10px; color: black';
  4. $fichier="photo/jigging/jean-petit.txt";   
  5. if (file_exists($fichier))   
  6. $fp = fopen($fichier, "r" ); // le fichier existe, on l'ouvre
  7. else { echo "Fichier introuvable !<br />Importation stoppée."; exit(); }
  8. //srand ((double) microtime() * 10000000);
  9. $tab2D = array();
  10. $i=0 ;
  11. // à partir d'ici je lit tout le fichier txt
  12. while(!feof($fp))
  13. {
  14. // On parcours le fichier     
  15. $ligne = fgets($fp,4096); // On se déplace d'une ligne     
  16. $tab2D[$i++] = explode(";",$ligne);
  17. }
  18. $nbcol=2; //--- détermine le nombre de colonnes de l'affichage  
  19. $nbritem=count($tab2D); //--- détermine le nombre d'éléments à affiche
  20. // On calcule l'affichage par page, on met le cpt à zero si la page est vide,  
  21. // sinon il prend la valeur de $page
  22. if (empty($_GET['page'])) $cpt = 0;
  23.    else $cpt = $_GET['page'];
  24. $max_page = $cpt + $nbr_page;
  25. $page = $_GET['page'];
  26. // On défini le nombre max
  27. $max = $nbritem-1;
  28. // On affiche le contenu de la page demandée
  29. echo '<table witch="550" align="center" class="txt">'; 
  30. for ($i=0; $i<$max_page; $i++)
  31. if($i%$nbcol==0) 
  32.    echo '<tr>'; 
  33.    echo '<td>';
  34.    echo '<a href="'.$tab2D[$i][2].'" target="_blank">';
  35.    echo'<img src="photo/jigging/'.$tab2D[$i][0].'" alt="'.$tab2D[$i][3].'" border="0"/></a></td>'; 
  36.    if($i%$nbcol==($nbcol-1) or $i==(count($tab2D)-1))
  37.    echo '</tr>'; 
  38.    }
  39. echo '</table>';
  40. // On affiche le lien pour la page précedente
  41. if ($page >= $nbr_page){
  42.     echo "<a href=\"".$PHP_SELF."?page=".($page-$nbr_page)."\" style=\"".$style."\">&lt;&lt;</a>&nbsp;\n";
  43. }
  44. // On calcule le numéro des pages
  45. if (!isset($page)) $page = 0;
  46.     if ($page >= ($nmr_page * $nbr_page)){
  47.         $cpt_fin = ($page / $nbr_page) + 1;
  48.         $cpt_deb = $cpt_fin - $nmr_page + 1;
  49.     }else{
  50.         $cpt_deb = 1;
  51.         $cpt_fin = (int)($max / $nbr_page);
  52.        
  53.         if (($max % $nbr_page) != 0) $cpt_fin++;
  54.         if ($cpt_fin > $nmr_page) $cpt_fin = $nmr_page;
  55.     }
  56.     for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++){
  57.         if ($cpt == ($page / $nbr_page) + 1){
  58.             echo "<span style=\"".$style."; font-weight: bold\">&nbsp;".$cpt."&nbsp;</span>\n";
  59.         }else{
  60.             echo "&nbsp;<a href=\"".$PHP_SELF."?page=".(($cpt-1)*$nbr_page)."\" style=\"".$style."\">".$cpt."</a>&nbsp;\n";
  61.         }
  62.     }
  63. // On affiche le lien pour la page suivante
  64. if ($page + $nbr_page < $max){
  65.     echo "&nbsp;<a href=\"".$PHP_SELF."?page=".($page+$nbr_page)."\" style=\"".$style."\">&gt;&gt;</a>\n";
  66. }


 
la partie lien sur la page suivante est OK le seul problème est l'affichage des images. A force d'être dessus je vois plus le code
 
ou j'ai buggé j'aimerais comprendre
 
merci d'avance gilles


Message édité par gilles974 le 27-08-2007 à 17:41:35
Reply

Marsh Posté le 27-08-2007 à 16:53:27   

Reply

Marsh Posté le 27-08-2007 à 17:06:10    

Pour tes images, tu fais deux colonnes puis pour le pied de tableau, tu dis qu'il y en a trois '<td colspan="3" '.
Ca serait pas ça ton problème?
Si c'est pas ça explique de manière plus précise par ce qu'un "le seul problème est l'affichage des images" n'est pas très précis.
 
PS : dans le cas "$i==(count($tab2D)-1)", tu dois aussi créer une case vide vu que tu n'auras qu'une image dans cette ligne là.

Reply

Marsh Posté le 27-08-2007 à 17:46:37    

merci omega2 pour ta reponse
le probleme est pas de la je viens de modifier le code et l'affichage de la 1er page est conforme (6 photos sur 2 colonne). Mais quans je click sur le 2eme lien qui est egale à (?page=6) il me rajoute le reste des photos à la suite des 6 premiere.
 
sa deviens bon, la je cale un peux
 
salutations gilles
 

Reply

Marsh Posté le 27-08-2007 à 18:03:19    

Ton code comporte de nombreuses erreurs et imperfections. Jette un oeil à mon dernier message sur le topic Bonnes pratiques et questions fréquentes, la plupart te seront utiles.
 
Pour ce qui est de ton problème, tu écris for($i=0; ce qui signifie que ta boucle commence à la permière image. Avec for($i=$cpt; ça marchera mieux, mais il y a beaucoup d'autres problèmes à régler.

Reply

Marsh Posté le 27-08-2007 à 18:08:25    

merci bouchon2
 
je vais aller jeter un oeil  
 
mais quels sont les autres problémes ??
 
j'ai changé la variable $i=$cpt et la sa marche
 
salutations gilles

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed