page/page sur une galerie

Répondre
mitchum
le 26/12/2004 à 21:38
mitchum
Salut a tous,
alors voila je me suis fait une petite galerie toute simple, qui liste le repertoire et affiche les miniatures. suelement voila quand on a 150 images, ca fait long...
J'ai etudié le howto de la globule, mais c'est pour un script fonctionnant avec mysql, comment faire dnas mon cas?
Voici mon code:
Sinon, si vous voyez 2-3 petites ameliorations a faire, n'hesitez pas.
a+
<SCRIPT LANGUAGE="JavaScript">
function PopupImage(img,nom,xdim,ydim) {
titre="Image "+nom;
w=open("",'image','width='+xdim+',height='+ydim+',toolbar=no,scrollbars=no,resizable=yes');
w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
w.document.write("<BODY leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
w.document.write("<IMG src='"+img+"' border=0 width="+xdim+" height="+ydim+">");
w.document.write("</BODY></HTML>");
}
</SCRIPT>


<?
$img_cols=3; // Nombre d'image par colonne
$img_width=150; // largeur des images
//$dossier="Saison2004/bercy"; // Dossier contenant les images


$images=Array();
$formats=Array("jpg","gif","png","JPG"); // Formats acceptés

$dir=opendir($dossier);
while($file=readdir($dir)){
if($file!="." && $file!=".."){
$ext=explode(".",$file);
$ext=$ext[count($ext)-1];
if(in_array($ext,$formats)){
$images[]=$file;
}
}
}
closedir($dir);


?>
<p align="center"><a href="index.php"><b>Retour aux galeries</b></a></p>
<table border=0 cellpadding=0 cellspacing=2>
<?
for($i=0;$i<count($images);$i++){
$file=$images[$i];
if(is_int($i/$img_cols)) echo "<tr>";
$num=$i+1;
$nom=explode(".",$file);
unset($nom[count($nom)-1]);
$nom=ucwords(implode(".",$nom));
$dim=getimagesize("$dossier/$file");
echo "<td><a href=\"javascript:PopupImage('$dossier/$file','".addslashes($nom)."',".$dim[0].",".$dim[1].")\">
<img src=\"$dossier/$file\" border=0 width='$img_width' alt=\"Image n°$num : $nom\">
</a></td>";
if(is_int(($i+1)/$img_cols)) echo "</tr>";

}


?>
</table>
<p align="center"><a href="index.php"><b>Retour aux galeries</b></a></p>
bibi
le 26/12/2004 à 22:15
bibi
je pense tu devrais par exemple faire un truc genre
if(isset($_GET['page'])) $page=$_GET['page'];
else $page=0;
$i=0;
$i_max=5;
while($file=readdir($dir) && $i<($i_max*$page))
{
...
$i++;
}

et apres tu peux faire un lien pour afficher la page d'apres ou tu metterais une variable $_GET['page'] et tant ke $i est inférieur a $i_max *$page t'affiches pas enfin tu vois a peu pres ske jveu dire ?
commit suicide
mitchum
le 26/12/2004 à 22:33
mitchum
euh, desole mais j'ai pas trop compris...
peux tu me re-expliqué?
excuse moi, masi je comprend vite mais faut m'expliquer longtemps lol
merci
bibi
le 26/12/2004 à 23:31
bibi
<SCRIPT LANGUAGE="JavaScript">
function PopupImage(img,nom,xdim,ydim) {
titre="Image "+nom;
w=open("",'image','width='+xdim+',height='+ydim+',toolbar=no,scrollbars=no,resizable=yes');
w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
w.document.write("<BODY leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
w.document.write("<IMG src='"+img+"' border=0 width="+xdim+" height="+ydim+">");
w.document.write("</BODY></HTML>");
}
</SCRIPT>


<?
$img_cols=3; // Nombre d'image par colonne
$img_width=150; // largeur des images
//$dossier="Saison2004/bercy"; // Dossier contenant les images

if(isset($_GET['page']))
{
$page=$_GET['page'];
}
else
{
$page=0;
}

$i=0;
$nb=0;
$max_affichage=10; // nombre d'images ke t'affiches par page


$images=Array();
$formats=Array("jpg","gif","png","JPG"); // Formats acceptés

$dir=opendir($dossier);
while($file=readdir($dir) && $i<$max_affichage)
{
if($file!="." && $file!=".."){
$ext=explode(".",$file);
$ext=$ext[count($ext)-1];
if($nb>=($max_affichage*$page))
if(in_array($ext,$formats)){
{
$images[]=$file;
$i++;
}
}
}
$nb++;
}
closedir($dir);


?>
<p align="center"><a href="index.php"><b>Retour aux galeries</b></a></p>
<table border=0 cellpadding=0 cellspacing=2>
<?
for($i=0;$i<count($images);$i++){
$file=$images[$i];
if(is_int($i/$img_cols)) echo "<tr>";
$num=$i+1;
$nom=explode(".",$file);
unset($nom[count($nom)-1]);
$nom=ucwords(implode(".",$nom));
$dim=getimagesize("$dossier/$file");
echo "<td><a href=\"javascript:PopupImage('$dossier/$file','".addslashes($nom)."',".$dim[0].",".$dim[1].")\">
<img src=\"$dossier/$file\" border=0 width='$img_width' alt=\"Image n°$num : $nom\">
</a></td>";
if(is_int(($i+1)/$img_cols)) echo "</tr>";

}


?>
</table>
<p align="center"><a href="?page=1">Page 2</a><a href="?page=0">Page</a></p>
<p align="center"><a href="index.php"><b>Retour aux galeries</b></a></p>



essaye ca mé jte garantie rien
commit suicide
Bzh
le 27/12/2004 à 00:02
Bzh
Il faut que tu fasse un truc du genre:

<?php
$nombre_images = count($images);
//permet de connaitre le nombre d' image

$nombre_pages = ceil($nombre_images/10);
//définit le nombre de pages nécéssaires...

if(isset($_GET['page'])){$page = $_GET['page']; }else{ $page = 0; }
//on regarde si la variable qui déféni notre numéro de page existe... Sinon, on choisi d' afficher la première page. Si la variable éxistait, on aurait afficher la page qu' aurait indiqué la variable...


for($a = ($page*10);$a < ($page*10)+10 && $a < $nombre_images; $a++ ){
//on fait notre boucle qui permet d' afficher nos photos. Dans ce cas là 10 photos





//La tu met ton code qui affiche les photos. En prenant bien que $a est le numéro de la photo... Donc le nom de la photo sera tjrs $images[$a]...







}

//Maintenant que nos photo sont affiché, on va crée la bar de menu ou on peut choisir la page désiré...




echo "Page(s): ";


for($a = 0; $a < $nombre_pages; $a++){
//On fait la bloucle autant de fois qu' il y a de pages $a indique maintenant le numéro de la page...





if($a == $page ){ echo "<b>[".$a."]</b>\r\n"; }
//On test pour savoir si le lien que nous allons créer est celui de notre page actuel. Si c' est la cas, pas besoin de mettre de lien. Parcontre mettre le numéro de la page en gras pour que l' on sache sur quel page nous nous trouvons...







else {echo "<a href=\"?page=".$a."\"> [".$a."]</a>"; }
//La on créer notre lien qui va permettre d' aller à la $a ième page...


}
//Fin de la boucle. Notre bar est terminée....

?>
//reste du code de ta page...

Voila, j' èspère avoir été clair...c' est ce menu là, exactement, que j' utilise pour ma galerie aussi...

Bye...et bon courage...

smiley
bibi
le 27/12/2004 à 00:12
bibi
en fait moi g fai a l'arrache pcke jsais pas komen on fait pour prendre des fichiers en fonction d'un indice dans un readdir
commit suicide
Bzh
le 27/12/2004 à 00:15
Bzh
Mais de toute façon, c' est pas nécéssaire !!!

Vu que toute ces photos, il met dans le tableux $images ....

Bien pratique...
Bzh
le 27/12/2004 à 00:19
Bzh
Sinon, mitchum, à première vu ton code n' à l' aire pas mal !!! smiley

Mais t' es sur que tu n' auras jamais de photos d' extention ".jpeg" ??? smiley
Spirit Of Doc
le 27/12/2004 à 09:20
Spirit Of Doc
A mon avi si ça prend 10 ans a s'afficher c'est que t'es images sont grosses :)
Donc utilise getimagesize()
Vous avez besoin d'un script ou d'aide ??? je peux vous le fournir gratuitement.
Répondre
LoadingChargement en cours