page/page sur une galerie

Répondre
mitchum
le 27/12/2004 à 11:23
mitchum
salut,
voici le code avec l'affichage par par page proposé
<html>
<head>
<title>Cliquez sur les liens</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function resizePopUp(monImage, monTitre)
{
w = window.open('','chargement','width=10,height=10');
w.document.write( "<html><head><title>"+monTitre+"</title>n" );
w.document.write( "<script language='JavaScript'>n");
w.document.write( "IE5=NN4=NN6=false;n");
w.document.write( "if(document.all)IE5=true;n");
w.document.write( "else if(document.getElementById)NN6=true;n");
w.document.write( "else if(document.layers)NN4=true;n");
w.document.write( "function autoSize() {n");
w.document.write( "if(IE5) self.resizeTo(document.images[0].width+10,document.images[0].height+31);n");
w.document.write( "else if(NN6) self.sizeToContent();n");
w.document.write( "else window.resizeTo(document.images[0].width,document.images[0].height+20);n");
w.document.write( "self.focus();n");
w.document.write( "}n</scri");
w.document.write( "pt>n");
w.document.write( "</head><body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onLoad='javascript:autoSize();'>" );
w.document.write( "<a href='javascript:window.close();'><img src='"+monImage+"' border=0 alt='"+monTitre+"'></a>" );
w.document.write( "</body></html>" );
w.document.close();
}
-->
</script>

</head>
<body>
<?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]...


$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>
<?
$file=$images[$a];
if(is_int($i/$img_cols)) echo "<tr>";
$num=$a+1;
$nom=explode(".",$file);
unset($nom[count($nom)-1]);
$nom=ucwords(implode(".",$nom));
$dim=getimagesize("$dossier/$file");
echo "<td><a href="javascript:resizePopUp('$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(($a+1)/$img_cols)) echo "</tr>";
?>
</table>
<?
//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>rn"; }
//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....

?>
</body>
</html>

mais il me met une erreur: Parse error: parse error, unexpected $ in photos2.php on line 108

JE susi desolé de vosu embetez avefc ca mais ca fait 3 jours que je suis dessus non stop, et la j'ai le cerveau un peu ramoli lol
Merci beaucoup
Et spirit, mes images sont assez grosses, elles font 100Ko chacune environ...
a+
moogli
le 27/12/2004 à 11:23
moogli
SAlut,

Pour le redimensionnement des images a la volé je suis pas trop pour puisque sa prend quand même du temps de traitement (faut voir combien y a de photo d'affichées). Moi perso me suis fait deux répertoires, pour les miniatures et un pour " les grande " !

si non je pense que tu devrait faire un short ($images); histoires de classer toutes tes images par ordre alphabétique. La raison de ce classement est simple : readdir retourne les élement du dossier dans n'importe quel ordre donc tu n'est pas sur de ne pas avoir fois la même photo sur deux page différentes (sauf si tu garde ton tableau en session et que donc tu ne fait le tri qu'une seul fois (peut être plus rapide que de se taper le répertoire a chaque fois, a méditer !).

Voila pour mon idée sinon ton code à l'air tout a fait correcte pour ce que j'en ai pu voir !

smiley
Il en faut peu pour être heureux !!!!!
mitchum
le 27/12/2004 à 11:34
mitchum
Ca y'est j'ai reussi a faire fonctionner l'affichage page par page, j'aivais mer**** dnas le code...
maintenant reste plsu qu'a s'attaquer au miniature et trouver une solution pour que l'affichage soit plus rapide.
a+ et merci
Bzh
le 27/12/2004 à 11:38
Bzh
J ai trouvé ton probmème...

Tu scanner ton dossier à la recherche de photo a chaque boucle...

Non, tu scanne ton dossier...

Toute tes image trouvée tu les met dans ton tableau $image et voila...

voici ton code maitenant...

<head>
<title>Cliquez sur les liens</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function resizePopUp(monImage, monTitre)
{
w = window.open('','chargement','width=10,height=10');
w.document.write( "<html><head><title>"+monTitre+"</title>\n" );
w.document.write( "<script language='JavaScript'>\n");
w.document.write( "IE5=NN4=NN6=false;\n");
w.document.write( "if(document.all)IE5=true;\n");
w.document.write( "else if(document.getElementById)NN6=true;\n");
w.document.write( "else if(document.layers)NN4=true;\n");
w.document.write( "function autoSize() {\n");
w.document.write( "if(IE5) self.resizeTo(document.images[0].width+10,document.images[0].height+31);\n");
w.document.write( "else if(NN6) self.sizeToContent();\n");
w.document.write( "else window.resizeTo(document.images[0].width,document.images[0].height+20);\n");
w.document.write( "self.focus();\n");
w.document.write( "}\n</scri");
w.document.write( "pt>\n");
w.document.write( "</head><body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onLoad='javascript:autoSize();'>" );
w.document.write( "<a href='javascript:window.close();'><img src='"+monImage+"' border=0 alt='"+monTitre+"'></a>" );
w.document.write( "</body></html>" );
w.document.close();
}
-->
</script>

</head>
<body>
<?php

//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]...


$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);


$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


?>

<p align="center"><a href="index.php"><b>Retour aux galeries</b></a></p>
<table border=0 cellpadding=0 cellspacing=2>
<?
$file=$images[$a];
if(is_int($i/$img_cols)) echo "<tr>";
$num=$a+1;
$nom=explode(".",$file);
unset($nom[count($nom)-1]);
$nom=ucwords(implode(".",$nom));
$dim=getimagesize("$dossier/$file");
echo "<td><a href=\"javascript:resizePopUp('$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(($a+1)/$img_cols)) echo "</tr>";


}

?>


</table>


<?



echo "Page(s): ";

for($a = 0; $a < $nombre_pages; $a++){



if($a == $page ){ echo "<b>[".$a."]</b>\r\n"; }




else {echo "<a href=\"?page=".$a."\"> [".$a."]</a>"; }



}



?>
</body>
</head>


Logiquement, cela devrait macher...

Bye...

smiley
Bzh
le 27/12/2004 à 11:45
Bzh
Bon tout marche niel !!!

Sauf ???? smiley

if(is_int($i/$img_cols)) echo "<tr>";


Ta variable $i nexiste pas...

Il faut la remplacer par $a...

Voila....smiley

smiley
mitchum
le 27/12/2004 à 13:26
mitchum
Merci du coup de main.
Voici ce que ca donne ici: www.lemotocross.com
rubrique album photo.
a+ et merci encore
Bzh
le 27/12/2004 à 14:21
Bzh
Bah écoute je suis aller voir !!!

Dans photo=>2004=>Elite=>Romagné et la il y a un petit bug...

Page 13=> aucune photos
Page 12=> aucune photos


Un souci lors du comptage des pages en fonctions des photos...

Sinon, content d' avoir pu t' aider...

Bye... au fait, très beau site, bonne continuation...
mitchum
le 27/12/2004 à 15:58
mitchum
ah merci de m'a voir signaler le bug, je vais essayer de voir d'ou ca vien.
et merci pour les compliments
mitchum
le 28/12/2004 à 20:43
mitchum
salut,
C'est encore moi. Je ne comprend pas ce bug...
car sur d'autres pages il compte bien, mais la il compte mal, d'ou cela peut-il venir?
Merci
a+
Bzh
le 28/12/2004 à 23:47
Bzh
Hey !!!!

Je penses avoir déviné ton problème...

Enfin, pour l' instant je ne vois que ça...

Et puis ça fait la même chose sur d' autre page !!!

<?php

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


?>

Si tu regarde bien là, on compte le nombre de page en divisant le nombre total de photo à afficher par le nombre de photo à afficher par page et on arrondi ce que l' on trouve au supérieur !!!

Ok tout ça c' est bon.... SAUF QUE: smiley

On prent en compte ici 10 PHOTOS PAR PAGE.... et toi tu en affiche 12 !!!! smiley

Donc, je penses que si tu remplaces par:

<?php

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


?>


Y a des chanches pour que cela marche maintenant !!!

Bye...

smiley
Répondre
LoadingChargement en cours