Automatisk sortering af billed-filer driller.
Jeg har en PHP-fil, som genererer thumbs, der åbner de billeder som de genererer thumbs fra i en ny side (se her: http://hansfrederik.dk/index.php?page=billeder&sub=ruspics)Problemet er, som man kan se hvis man besøger ovenstående side, at man ikke kommer frem til billedet, der svarer til den thumb som man egentlig trykker på, men derimod til et tilsyneladende tilfældigt billede fra samme mappe. Jeg håber nogen kan hjælpe mig med at finde ud af hvorfor?
Siden det er tungt arbejde at side og kigge gennem kode, giver jeg 200 point for en løsning.
Koden i (page=)billeder.php ser således ud:
<?
if($_GET[billeder]){
if(isset($_GET[n])){
echo printpic($_GET[folder],$_GET[n]);
}
}
else{
include "$_GET[sub].php";
$sti = "$_GET[sub]/".$_GET[sti];
echo printdir($sti);
}
//Her opsættes links og thumbs.
function printdir($folder){
$path = realpath("./");
$sti = $path."/".$folder;
if($bib = opendir($sti)){
$n = 0;
while (false !== ($fil = readdir($bib))){
if($fil !== "." && $fil !== ".." && !ereg("^\..+", $fil)){
$fil_liste[] = "$fil";
}
}
closedir($bib);
if(is_array($fil_liste)){
usort($fil_liste, "strnatcmp");
}
$nn = 0;
for ($n = 0; $n<count($fil_liste); $n++){
$page = $_GET[page];
if($nn==0){
$nn++;
}
//Her opsættes linkene til mapperne med billider.
if(is_dir($sti."/".$fil_liste[$n]) and $nn < 5){
$liste[] = "<tr class=listebaggrund><th class=asien><p><a class=fedlinksort href='$_SERVER[PHP_SELF]?page=$page&sub=$_GET[sub]&sti=$fil_liste[$n]'>$fil_liste[$n]</a></p></th></tr>";
}
elseif(is_dir($sti."/".$fil_liste[$n])){
$liste[] = "<tr class=listebaggrund><th class=asien><p><a class=fedlinksort href='$_SERVER[PHP_SELF]?page=$page&sub=$_GET[sub]&sti=$fil_liste[$n]'>$fil_liste[$n]</a></p></th>";
}
//Her opsættes thumb-siden.
elseif($nn == 1){
$liste[] = "<tr><td class=asienthumb><p class=asienp>
<a href='$_SERVER[PHP_SELF]?folder=$folder&page=$page&n=$n&billeder=1'>
<img src='thumb.php?pic=$folder/$fil_liste[$n]' alt='Se billede' class=noborder></a></p></td>\n";
}
else{
$liste[] = "<td class=asienthumb><p class=asienp>
<a href='$_SERVER[PHP_SELF]?folder=$folder&page=$page&n=$n&billeder=1'>
<img src='thumb.php?pic=$folder/$fil_liste[$n]' alt='Se billede' class=noborder></a></p></td>\n";
}
if($nn == 5){
$liste[] = "</tr>\n";
$nn = 0;
}
$nn++;
}
$filliste = "<h4>Indhold af $folder:</h4>";
$filliste = $filliste ."<table>\n".join("", $liste)."</table>\n";
return $filliste;
}
else {
die("Noget gik galt :( Skriv til webmaster! (Kode1)".$bib);
}
}
//Her opsættes visningen af det store billede.
function printpic($folder,$n){
$path = realpath("./");
$sti = $path."/".$folder;
if($bib = opendir($sti)){
while (false !== ($fil = readdir($bib))){
if($fil !== "." && $fil !== ".." && !ereg("^\..+", $fil)){
if(is_dir($sti."/".$fil)){
$fil_liste[] = "<a href='$_SERVER[PHP_SELF]?sti=$fil&billeder=1'>$fil</a>";
}
else{
$fil_liste[] = "$fil";
}
}
}
closedir($bib);
if(is_array($fil_liste)){
natcasesort($fil_liste);
}
for ($num = ($n-2); $num <= ($n+2); $num++){
if($num >= 0 && $num < count($fil_liste)){
$liste[] = "<td class=center><p class=asienp>
<a href='$_SERVER[PHP_SELF]?folder=$folder&page=billeder&n=$num&billeder=1'>
<img src='thumb.php?pic=$folder/$fil_liste[$num]' alt='Se billede' class=noborder></a></p><p class=asienp>
<a href='$_SERVER[PHP_SELF]?folder=$folder&n=$num&billeder=1'>$fil_liste[$num]</a></p></td>\n";
}
else{
$liste[] ="<td></td>";
}
}
$numm = $n-1;
$nump = $n+1;
echo "<table class=asientable><tr>";
if($numm >= 0){
echo "<td>
<a href='$_SERVER[PHP_SELF]?folder=$folder&page=billeder&n=$numm&billeder=1'>
<img src='faelles/pics/pilv.png' alt='Forrige billede' class=noborder></a>
</td>";
}
echo "<td><p class=ingenmargin><img src='pic.php?pic=$folder/$fil_liste[$n]' alt='' class=noborder></p></td><td>";
if($nump<count($fil_liste)){
echo "<a href='$_SERVER[PHP_SELF]?folder=$folder&page=billeder&n=$nump&billeder=1'>
<img src='faelles/pics/pilh.png' alt='Næste billede' class=noborder></a></td>";
}
echo "</tr></table>\n";
$filliste = $filliste ."<table class=asientable><tr>".join("", $liste)."</tr></table>\n";
$mappe = explode("/",$folder);
$rod = basename($_SERVER[PHP_SELF]);
$filliste = $filliste ."<p><a href='$rod'>billeder</a> ~ <a href='$_SERVER[PHP_SELF]?sti=$mappe[1]'>$mappe[1]</a></p>";
return $filliste;
}
else {
die("Noget gik galt :( Skriv til webmaster! (Kode2)".$bib);
}
}
?>
Skriv, hvis der er ekstra oplysninger du har brug for.
På forhånd mange tak!