Grosse merde en PHP requiert âme sensible - Programmation
Marsh Posté le 13-01-2002 à 13:34:27
il les lit dans le répertoire avec readdir() qui les prend dans n'importe quel ordre.
le plus simple est de trier le tableau des noms d'images avec sort() (http://www.php.net/manual/en/function.sort.php)
donc avant ta dernière ligne:
constr_tab($int_nb_photos, $int_nb_pages, $int_no_page, $hnamep, $hst_w_ph, $hst_h_ph, $nb_lim, $first, $all_nb_photos, $directory);
ajoute
sort($hnamep);
reset($hnamep);
le problème est que les tableaux de la taille de tes images
$hst_w_ph[$nb_photos] = $size_ph[0];
$hst_h_ph[$nb_photos] = $size_ph[1];
ne correspondra plus à ton image puisque la clé aura été modifié...
solution, ne les passe plus en paramètre à ta fonction, mais trouve les directement dans ta fonction tu coupe-colle les lignes :
$filetoopen = "$directory/" . $file;
$size_ph = getimagesize($filetoopen); // taille de l image
$hst_w_ph[$nb_photos] = $size_ph[0];
$hst_h_ph[$nb_photos] = $size_ph[1];
(remplacer "$file" par le déplacement dans le tableau) pour les mettre dans la fonction :
// Construction du tableau html
function constr_tab
voila tu as la marche à suivre, à toi de jouer pour le reste
[edtdd]--Message édité par ethernal--[/edtdd]
Marsh Posté le 14-01-2002 à 00:51:16
on va simplifier, ajoute ça
//TRI DU TABLEAU
sort($hnamep);
//Reparcourt le tableau ordonné pour la taille des images
for ($i=0; $i<=$nb_photos; $i++){
$size_ph = getimagesize("$directory/" .$hnamep[$i]); // taille de l image
$hst_w_ph[$i] = $size_ph[0];
$hst_h_ph[$i] = $size_ph[1];
}
avant le
"// fin rempli tableau des noms"
Marsh Posté le 13-01-2002 à 12:28:30
Comment afficher les photos de ce script par ordre alphabétique.
Merci.
---------------------------------------------------------------
<?php
////////////////////////////////////////////////////////////////////////////////
//
// Browser d'images par J PINCHAUD
// Novembre 2000
// j_pinchaud@yahoo.fr
// http://jpage.free.fr/
//
// Ce browser permet d'afficher toutes les images du dossier photos dans une page web.
// Attention, ne mettre que des images dans le dossier photos.
// L'affichage se fait dans un tableau et toutes les images sont affichées en miniatures avec un lien vers la taille réelle.
// Si vous avez beaucoup de photos, l'affichage peut se faire sur plusieurs pages.
// Une fois en ligne vous n'avez plus qu'à placer vos photos dans le dossier photos.
// Vous pouvez paramétrer facilement de nombreux paramètres pour changer l'aspect de votre page
// Les varaibles paramétrables sont repérées par des ## ##
//
// Pour ce qui est de l'utilisation de ce script je suis un adepte du CareWare
// To know more about it go on <A HREF="http://www.arachnoid.com/careware">CareWare</A>.
//
// Si vous ne voulez pas laisser mon email, laissez au moins ce lien
// Merci Amusez vous bien
// J.
//
//////////////////////////////////////////////////
//////////////////////////////
require ("_admin/conf.php3" );
//////////////////////////////////////////////////
//////////////////////////////
// ouverture du dossier contenant les fichiers --> nbphotos
function nb_ph($fdirectory){
$handle=opendir($fdirectory);
$nb_photos = 0;
while ($file = readdir($handle)) {
if ($file != "." && $file != ".." && $file != "_commentaire.txt" ) {
// $file contient le nom d'un fichier
$nb_photos = $nb_photos + 1;
}
}
closedir($handle);
return ($nb_photos);
}
// fin ouverture du dossier contenant les fichiers --> nbphotos
//////////////////////////////////////////////////
//////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////
// NAME
function no_ext($t_file){
$pt = strrpos($t_file, "." );
$s_file = substr($t_file, 0, $pt);
return $s_file;
}
// FIN NAME
//////////////////////////////////////////////////
//////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////
// Construction du tableau html
function constr_tab($fnb_photos, $fint_nb_pages, $fint_no_page, $fhnamep, $fhst_w_ph, $fhst_h_ph, $fnb_lim, $ffirst, $fall_nb_photos, $fdirectory){
require ("_admin/conf.php3" );
if ($fint_no_page < $fint_nb_pages){
$fnb_photos = $fnb_lim ;
}
else{
$fnb_photos = $fnb_photos - ($fnb_lim * ($fint_no_page - 1));
}
$cpt_init = ($fint_no_page - 1) * $fnb_lim + 1;
if ($fnb_photos == 0){
echo "
<!doctype html public \"-//w3c//dtd html 3.2//en\"><html><head>
<title>Filelist</title>
</head>
<body bgcolor=\"$bodybgcolor\" text=\"$txtcolor\" link=\"$linkcolor\" vlink=\"$vlinkcolor\" alink=\"$alinkcolor\">
<p>Dossier vide</p><a href=\"index.php3\">Retour</a>
";
echo"</body></html>";
die;
}
else {
echo "
<!doctype html public \"-//w3c//dtd html 3.2//en\"><html><head>
<title>Mes photos $st_texte</title>
<script language=\"JavaScript\">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
</head>
<body bgcolor=\"$bodybgcolor\" text=\"$txtcolor\" link=\"$linkcolor\" vlink=\"$vlinkcolor\" alink=\"$alinkcolor\">
";
echo "
<table border=\"0\" width=\"$table_width\" cellspacing=\"10\" cellpadding=\"10\" align=\"center\" bgcolor=\"$bodybgcolor\">
<tr><td colspan=\"5\" align=\"center\" bgcolor=\"$bgcolor_titre\"><font size=\"$titre_size\" color=\"$titre_color\" face=\"$titre_face\">
<b><u>$st_texte</u></b></font></td>
";
$reste = $fnb_photos % 5;
$juste = $fnb_photos - $reste;
$quotient = $juste / 5;
echo "<tr><td colspan=\"2\"><font size=\"1\" face=\"$titre_face\">
Page : $fint_no_page/$fint_nb_pages </font></td>";
$photo_start = 1 + ($fint_no_page - 1) * $fnb_lim;
$photo_end = $photo_start + $fnb_photos - 1;
// echo "$nb_lim";
echo "
<td colspan=\"3\" align=\"right\"><font size=\"1\" face=\"$titre_face\">
Photos : $photo_start à $photo_end </font></td>
</tr>";
if ($quotient == 0){ // moins de cinq
echo"<tr><td bgcolor=\"$bodybgcolor\" width=\"20%\" height=\"0\"> </td><td bgcolor=\"$bodybgcolor\" width=\"20%\" height=\"0\"> </td><td bgcolor=\"$bodybgcolor\" width=\"20%\" height=\"0\"> </td><td bgcolor=\"$bodybgcolor\" width=\"20%\" height=\"0\"> </td><td bgcolor=\"$bodybgcolor\" width=\"20%\" height=\"0\"> </td></tr>";
echo "<tr>";
for ($i = $cpt_init; $i <= ($reste + $cpt_init - 1); $i++){
$wnd_w = $fhst_w_ph[$i] + 60;
$wnd_h = $fhst_h_ph[$i] + 60;
$ts_name = no_ext($fhnamep[$i]);
echo"<td bgcolor=\"$tabbgcolor\" width=\"20%\" align=\"center\"><a href=\"#\" onClick=\"MM_openBrWindow('window.php3?img
_name=$fdirectory/$fhnamep[$i]&img_w=$fhst_w_ph[$i
]&img_h=$fhst_h_ph[$i]','photo',
'scrollbars=yes,resizable=yes,width=$wnd_w,h
eight=$wnd_h'\"><img src=\"$fdirectory/" . $fhnamep[$i] . "\" align=\"center\" border=\"0\" width=\"$min_width\" height=\"$min_height\" alt=\"$fhnamep[$i]\"></a><br><font size=\"1\" face=\"Verdana, Arial, Helvetica\">$ts_name</font></td>";
}
echo "</tr>";
}
else { // plus de cinq ou egale
for ($i = 1; $i <= $quotient; $i++){
echo "<tr>";
for ($j = 1; $j <= 5; $j++){
$k =($cpt_init - 1) + ($i - 1) * 5 + $j;
$wnd_w = $fhst_w_ph[$k] + 60;
$wnd_h = $fhst_h_ph[$k] + 60;
$ts_name = no_ext($fhnamep[$k]);
echo"<td bgcolor=\"$tabbgcolor\" width=\"20%\" align=\"center\"><a href=\"#\" onClick=\"MM_openBrWindow('window.php3?img
_name=$fdirectory/$fhnamep[$k]&img_w=$fhst_w_ph[$k
]&img_h=$fhst_h_ph[$k]','photo',
'scrollbars=yes,resizable=yes,width=$wnd_w,h
eight=$wnd_h'\"><img src=\"$fdirectory/" . $fhnamep[$k] . "\" align=\"center\" border=\"0\" width=\"$min_width\" height=\"$min_height\" alt=\"$fhnamep[$k]\"></a><br><font size=\"1\" face=\"Verdana, Arial, Helvetica\">$ts_name</font></td>";
}
echo "</tr>";
}
echo "<tr>";
for ($l = 1; $l <= $reste; $l++){
$m = $k + $l;
$wnd_w = $fhst_w_ph[$m] + 60;
$wnd_h = $fhst_h_ph[$m] + 60;
$ts_name = no_ext($fhnamep[$m]);
echo"<td bgcolor=\"$tabbgcolor\" width=\"20%\" bgcolor=\"$tabbgcolor\" align=\"center\"><a href=\"#\" onClick=\"MM_openBrWindow('window.php3?img
_name=$fdirectory/$fhnamep[$m]&img_w=$fhst_w_ph[$m
]&img_h=$fhst_h_ph[$m]','photo',
'scrollbars=yes,resizable=yes,width=$wnd_w,h
eight=$wnd_h'\"><img src=\"$fdirectory/" . $fhnamep[$m] . "\" align=\"center\" border=\"0\" width=\"$min_width\" height=\"$min_height\" alt=\"$fhnamep[$m]\"></a><br><font size=\"1\" face=\"Verdana, Arial, Helvetica\">$fhnamep[$m]</font></td>";
}
echo "</tr>";
}
echo "<tr><td width=\"20 %\" colspan=\"2\" align=\"left\"><font size=\"1\" face=\"$titre_face\"><a href=\"index.php3\">Menu</a> ";
/////////////////////////////
// liens page
$other_cpt_l = 0;
$other_cpt_r = 0;
for ($cpt = 1 ; $cpt <= $fint_nb_pages ; $cpt++){
if ($cpt <= $fint_no_page + 3 && $cpt >= $fint_no_page - 3){
if ($fint_no_page != $cpt)
echo " | <a href=\"browser.php3?first=$ffirst&int_nb_photos=
$fnb_photos&int_nb_pages=$fint_nb_pages&int_no_pag
e=$cpt&directory=$fdirectory\">$cpt</a>";
else
echo " | <b>$cpt</b>";
}
else{
if ($cpt < $fint_no_page && $other_cpt_l < 3){
$other_cpt_l++;
echo " .";
} else if ($cpt > $fint_no_page && $other_cpt_r < 3){
$other_cpt_r++;
echo " .";
};
};
};
// lien page
/////////////////////////////
echo "</font></td><td colspan=\"3\" width=\"100%\" align=\"center\"><font size=\"2\">";
/////////////////////////////
// prev next
if ($fint_nb_pages == 1){
echo"</font></td></tr></table></body></html>";
die;
}
if (($fint_no_page - $fint_nb_pages) <= 0 && $fint_no_page != 1){ // prev
$fnb_photos = $fall_nb_photos - ($fnb_lim * ($fint_no_page - 1));
$fint_no_page = $fint_no_page - 1;
echo "<a href=\"browser.php3?first=$ffirst&int_nb_photos=
$fnb_photos&int_nb_pages=$fint_nb_pages&int_no_pag
e=$fint_no_page&directory=$fdirectory\"><img src=\"img_src/prev.gif\" border=\"0\" alt=\"Page précédente\"></a> ";
$fint_no_page = $fint_no_page + 1;
}
if (($fint_nb_pages - $fint_no_page) > 0){ // next
$fint_no_page = $fint_no_page + 1;
$fnb_photos = $fall_nb_photos - ($fnb_lim * ($fint_no_page - 1));
echo " <a href=\"browser.php3?first=$ffirst&int_nb_photos=
$fnb_photos&int_nb_pages=$fint_nb_pages&int_no_pag
e=$fint_no_page&directory=$fdirectory\"><img src=\"img_src/next.gif\" border=\"0\" alt=\"Prochaine page\"></a>";
}
// prev next
/////////////////////////////
echo "</font></td></tr><tr><td width=\"100 %\" colspan=\"5\" align=\"center\" height=\"4\" bgcolor=\"$bgcolor_titre\"></td></tr></table></body></html>";
die;
}
}
// fin Construction du tableau html
//////////////////////////////////////////////////
//////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////
// affichage
///////////////////////////////////////////////////////
// rempli tableau des noms
$handle=opendir($directory);
$nb_photos = 0;
while ($file = readdir($handle)) {
if ($file != "." && $file != ".." && $file != "_commentaire.txt" ) {
// $file contient le nom d'un fichier
$nb_photos = $nb_photos + 1;
$hnamep[$nb_photos] = $file;
$filetoopen = "$directory/" . $file;
$size_ph = getimagesize($filetoopen); // taille de l image
$hst_w_ph[$nb_photos] = $size_ph[0];
$hst_h_ph[$nb_photos] = $size_ph[1];
}
}
closedir($handle);
// fin rempli tableau des noms
//////////////////////////////////////////////////////
$int_nb_photos = nb_ph($directory); // nombre de photos
$all_nb_photos = $int_nb_photos;
$tmp_reste = $int_nb_photos % $nb_lim;
if ($tmp_reste == 0){
$int_nb_pages = $int_nb_photos / $nb_lim;
}
else{
$tmp_juste = $int_nb_photos - $tmp_reste;
$int_nb_pages = $tmp_juste / $nb_lim + 1; // nombre de pages
}
if ($first != "NO" ){
$first = "NO";
$int_no_page = 1;
}
constr_tab($int_nb_photos, $int_nb_pages, $int_no_page, $hnamep, $hst_w_ph, $hst_h_ph, $nb_lim, $first, $all_nb_photos, $directory);
// fin affichage
////////////////////////////////////////////////////////////////////////////////
?>