Amélioration script galerie photos
Posté : 07 févr. 2014, 12:23
Bonjour à tous,
Il y a quelque temps j'avais amélioré un script de galerie de photos grâce à votre aide. Aujourd'hui je souhaiterai apporter encore un tout petit plus à ce script. J'ai cherché bien longtemps mais je ne pratique vraiment pas régulièrement le PHP et je me perds dans les méandres des lignes de code.
Tout d’abord en vous rendant sur le lien suivant vous verrez un exemple de ce que donne le script : http://zemickyunivers.free.fr/dessins_r ... lution.php
Pour info ce script utilise des miniatures qui ne sont pas générées à la volée mais déposées sous un répertoire "/tb". Il n'utilise pas de base de données.
Ce que je voudrais c'est rajouter dans la barre de navigation en-dessous des images, de part et d'autre des numéros des pages, des liens "page précédente" et "page suivante" et éventuellement "première page" et "dernière page". Liens qui apparaitraient sous forme de texte ou d'images ou encore < << et >> >.
Je vous joins le script tel qu'il est actuellement :
Par avance merci.
Micky
Il y a quelque temps j'avais amélioré un script de galerie de photos grâce à votre aide. Aujourd'hui je souhaiterai apporter encore un tout petit plus à ce script. J'ai cherché bien longtemps mais je ne pratique vraiment pas régulièrement le PHP et je me perds dans les méandres des lignes de code.
Tout d’abord en vous rendant sur le lien suivant vous verrez un exemple de ce que donne le script : http://zemickyunivers.free.fr/dessins_r ... lution.php
Pour info ce script utilise des miniatures qui ne sont pas générées à la volée mais déposées sous un répertoire "/tb". Il n'utilise pas de base de données.
Ce que je voudrais c'est rajouter dans la barre de navigation en-dessous des images, de part et d'autre des numéros des pages, des liens "page précédente" et "page suivante" et éventuellement "première page" et "dernière page". Liens qui apparaitraient sous forme de texte ou d'images ou encore < << et >> >.
Je vous joins le script tel qu'il est actuellement :
<?php
//***************************************************************************************************************
// Ce script permet d'afficher dans une page web des images contenues dans un répertoire et de générer plusieurs
// pages en fonction de paramètres que l'utilisateur lui donnera.
// Il n'utilise pas de base de données.
// Il ne génère pas de miniatures à la volée. Il faudra donc créer les miniatures manuellement et les mettre dans
// un répertoire dédié aux miniatures (ici répertoire "tb").
// Les paramètres modifiables sont le nombre d'images par page et le nombre de colonnes par page.
// Expl : On a 30 images dans un répertoire. Si on définit 10 images par page et 5 colonnes par page le script
// créera trois pages (accessibles via une barre de navigation créée automatiquement) avec chacune 10 images
// réparties sur 5 colonnes. On aura donc par page deux lignes de 5 images.
//***************************************************************************************************************
//***************************************************************************************************************
// Vous pouvez modifier les paramètres suivants.
//***************************************************************************************************************
// Nombre de photos qui seront affichées sur chaque page.
$nb_pics_par_page = 8;
// Nombre de colonnes sur lesquelles vont s'afficher nos miniatures.
$nbcol=4;
// Remplacer "nom_de_ma_page.php" par le nom de la page qui contient ce sript.
$url = "./dessins_royo_evolution.php?page=";
//***************************************************************************************************************
//A partir d'ici il est préférable de ne pas toucher au code.
//***************************************************************************************************************
// On déclare deux tableaux qui contiendront pour le 1er le nom des fichiers afin d'afficher nos miniatures
// et pour le second le noms des fichiers sans les extensions (expl : sans .jpg, .gif ...).
$tab_miniatures = array();
$tab_noms_images = array();
// on ouvre notre dossier contenant les miniatures
$dossier = opendir ('images/Luis Royo/Evolution/tb/');
while ($fichier = readdir ($dossier)) {
if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
// On stocke le nom des fichiers dans un tableau (tab_miniatures) pour afficher ultérieurement les miniatures
// et dans un autre tableau (tab_noms_images) pour afficher les noms des fichiers sans leurs extensions.
$tab_miniatures[]=$fichier;
$info = pathinfo($fichier);
$file_name = basename($fichier,'.'.$info['extension']);
$tab_noms_images[]=$file_name;
}
}
closedir ($dossier);
// on tri les tableaux par ordre alphabétique. array_multisort permet de trier plusieur tableaus simultanément.
// Les valeurs du second tableau appelé (tab_noms_images) seront associées aux valeurs du 1er tableau appelé (tab_miniatures).
array_multisort($tab_noms_images, $tab_miniatures);
// on compte le nombre de miniatures.
$nbpics = count($tab_miniatures);
// 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 rang de départ
$debut = $page_en_cours*$nb_pics_par_page;
// Calcul du rang de fin
$fin = min ($debut+$nb_pics_par_page, $nbpics);
//Calcul du nombre total de pages. On arrondit à l'entier supérieur (ceil().
$nb_pages = ceil($nbpics / $nb_pics_par_page);
// Si on a au moins une miniature dans le répertoire on l'affiche.
if ($nbpics != 0) {
?>
<table class="album">
<?php
for ($compteur = 0,$i = $debut; $i < $fin; $i++, $compteur++){ // On parcourt les images pour la page appelée.
// Début d'une ligne du tableau
if ($compteur%$nbcol==0) // On divise le nb d'éléments par le nb de colonnes. Si le reste est de 0 ...
echo '<tr class="album">'; // ... alors on est sur le premier élément d'une ligne et on ouvre la ligne.
// On place chaque élément dans une cellule du tableau.
// Pour chaque miniature, on affiche la miniature et son nom sans l'extension munie d'un lien vers la
// photo en taille réelle
echo '<td class="album">';
echo '<a href="images/Luis Royo/Evolution/' , $tab_miniatures[$i] , '" rel="lightbox[Royo]"><img src="images/Luis Royo/Evolution/tb/' , $tab_miniatures[$i] , '" alt="Image" /><br />'.$tab_noms_images[$i].'</a>';
echo '<br /><br />';
echo '</td>';
// Fin d'une ligne du tableau.
if ($compteur%$nbcol==($nbcol-1)) // On divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...
echo '</tr>'; // ... on est sur le dernier élément d'une ligne et on ferme la ligne.
}
// Au cas où ...
if ($compteur!=0 && $compteur%$nbcol!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
echo '<td class="album" colspan="'.($nbcol - ($compteur%$nbcol) ).'"> </td>'; // ... on complète avec une cellule vide de la bonne taille...
echo '</tr>'; // ... et on ferme la ligne.
}
?>
</table>
<?php
// Création de la barre de navigation.
// On définit une variable qui contiendra les données de navigation.
$barre_nav = "Page ";
// 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 "Page 1 | 2 | 3 etc..." en liens cliquables
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 1/1.
$barre_nav .= "1/1";
}
?>
<p class="pcenter"><?php echo($barre_nav); ?></p>
<?php
} // Fin condition si miniature dans le répertoire.
else echo 'Aucune image à afficher';// S'il n'y a aucune miniature on affiche un petit message.
?>
Je demande donc votre aide et j'en appelle à vos connaissances.Par avance merci.
Micky