Invité
Invité n'ayant pas de compte PHPfrance
17 janv. 2011, 13:07
Bonjour,
Merci beaucoup, j'ai compris le principe de l'opérateur ternaire. Je pense que le code pour la création et l'affichage de la barre de navigation est OK.
Par contre si toutes mes images s'affichent même si j'ai définis dans le script qu'elles doivent apparaitre sur plusieurs pages vient du fait que dans la première partie de mon code, au niveau de l'affichage des images, je faisais le calcul avec la variable $nbrpics et non $nb_pics_par_page. J'ai donc rectifié le tire et aussi j'ai déclaré la variable "$nb_pics_par_page =3" avant la boucle pour l'affichage des images. Ce qui donne comme nouveau code ce qui suit (les modifications sont en gras) :
<?php
// on déclare un tableau qui contiendra le nom des fichiers de nos miniatures
$tableau = array();
// on ouvre notre dossier contenant les miniatures
$dossier = opendir ('images/Borris Vallejo/2001/tb/');
while ($fichier = readdir ($dossier)) {
if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
// on stocke le nom des fichiers des miniatures dans un tableau
$tableau[] = $fichier;
}
}
closedir ($dossier);
// on défini le nombre de colonne sur lesquelles vont s'afficher nos miniatures
$nbcol=5;
// on compte le nombre de miniatures
$nbpics = count($tableau);
[b]$nb_pics_par_page = 3;[/b] /* Nombre de photos qui seront affichées sur chaque page */
// si on a au moins une miniature, on les affiche toutes
if ([b]$nb_pics_par_page[/b] != 0) {
echo '<table>';
for ($i=0; $i<[b]$nb_pics_par_page;[/b] $i++){
if($i%$nbcol==0) echo '<tr>';
// pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle
echo '<td><a href="images/Borris Vallejo/2001/' , $tableau[$i] , '" rel="lightbox[Vallejo]"><img src="images/Borris Vallejo/2001/tb/' , $tableau[$i] , '" alt="Image" /></a></td>';
if($i%$nbcol==($nbcol-1)) echo '</tr>';
}
echo '</table>';
}
// si on a aucune miniature, on affiche un petit message :)
else echo 'Aucune image à afficher';
/* Paramètres de pagination */
$url = "./pageparpage.php?page=";
/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee = ($page_en_cours + 1);
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($nbpics / $nb_pics_par_page);
/**
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
if($nb_pages > 0)
{
/* On définit une variable qui contiendra les données de navigation */
$barre_nav = "";
/* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
if($nb_pages > 1)
{
/**
Nous avons plusieurs pages: nous allons afficher successivement les liens vers
les pages précédentes s'il y en a, la page en cours et les liens vers les pages
suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
sauf pour la page en cours dont nous mettrons le chiffre en gras
*/
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}
/**
On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une
page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
*/
$barre_nav .= "<strong>". $page_affichee ."</strong>";
/* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
if(($page_affichee) < $nb_pages)
{
/* Il reste encore d'autres pages à afficher */
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++)
{
$p = $j + 1;
$barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
/* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
$page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
}
else
{
/* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
$barre_nav .= "page 1/1";
}
?>
<p class="navigation"><?php echo($barre_nav); ?></p>
<?php
}
else
{
/**
Nous n'avons aucune page, on peut alors afficher un message autre
sans devoir nous préoccuper de la navigation
*/
?>
<h3>Aucune nouvelle n'a encore été publiée à ce jour</h3>
<hr />
<?php
}
?>
Donc si je définis 3 images par page et que j'ai 6 images en tout j'ai bien une barre de navigation avec deux pages et une première page que s'affiche avec les trois première images de mon répertoire.
Cependant, dès que je clique sur le lien de la deuxième page j'ai un lien invalide.
Aussi, je ne comprends pas cette ligne :
$url = "./pageparpage.php?page=";
Qu'est-ce que veut dire "pageparpage.php ?
En tout cas on avance...
Micky