Grosse merde en PHP requiert âme sensible

Grosse merde en PHP requiert âme sensible - Programmation

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
////////////////////////////////////////////////////////////////////////////////
?>

Reply

Marsh Posté le 13-01-2002 à 12:28:30   

Reply

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]

Reply

Marsh Posté le 13-01-2002 à 14:39:46    

coller ou ?

Reply

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"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed