Hi
Mein script sollte aus jedem unterordner 1 Bild in einer 4-spaltigen-tabelle darstellen. Für die grafik an für sich wird ein anderer script (index.php) aufgerufen - da ist alles in ordnung. Das problem ist dass seit ich den code umgeschrieben habe und jetzt, nachdem eine desc-sortierung erfolgt und antstatt einer while-, eine foreach-schleife kommt, wird nur noch 1 Bild angezeigt. Bevor ich die unterordner sortieren wollte brauchte ich noch keine arrays... da funktionnierte es noch. falls das etwas bringt poste ich den alten code.
Ausserdem um sich besser vorstellen zu können, was ich erreichen will, schaut euch diese folgende seite an. Jedes bild kommt aus einem anderen ordner - die reihenfolge der bilder bzw. ordner stimmt aber nicht - genau das möchte ich ändern.
hier gehts lang zum vorgängerscript
Da es erst mein dritter script ist - ist die codierung entsprechend - das meiste hätte man eleganter schreiben können, dafür fehlt es mir aber an erfahrung... (zum stichwort objektorientiert = diesen habe ich vor lauter fingerbrecher-sonderzeichen völlig vergessen)
Vielen Dank
---------
hab den eintrag geändert - da hat sich beim copy/paste ein fehler eingeschlichen...
(wenn man sich den resultierenden html anschaut, sieht man an der anzahl <tr> dass die foreach-schlaufe soviele male wie es ordner gibt durchgelaufen wird... aber nur den ersten array ausgegeben wird.)
Mein script sollte aus jedem unterordner 1 Bild in einer 4-spaltigen-tabelle darstellen. Für die grafik an für sich wird ein anderer script (index.php) aufgerufen - da ist alles in ordnung. Das problem ist dass seit ich den code umgeschrieben habe und jetzt, nachdem eine desc-sortierung erfolgt und antstatt einer while-, eine foreach-schleife kommt, wird nur noch 1 Bild angezeigt. Bevor ich die unterordner sortieren wollte brauchte ich noch keine arrays... da funktionnierte es noch. falls das etwas bringt poste ich den alten code.
Ausserdem um sich besser vorstellen zu können, was ich erreichen will, schaut euch diese folgende seite an. Jedes bild kommt aus einem anderen ordner - die reihenfolge der bilder bzw. ordner stimmt aber nicht - genau das möchte ich ändern.
hier gehts lang zum vorgängerscript
Da es erst mein dritter script ist - ist die codierung entsprechend - das meiste hätte man eleganter schreiben können, dafür fehlt es mir aber an erfahrung... (zum stichwort objektorientiert = diesen habe ich vor lauter fingerbrecher-sonderzeichen völlig vergessen)
Vielen Dank
PHP-Code:
// funktion zum unterordner nach datum sortieren (desc)
function sortdesc($a,$b){
return ($a['mtime']==$b['mtime'] ? 0
: ($a['mtime']<$b['mtime'] ? +1:-1)
);
}
// hier gehts los
function preview($path, $breite) {
// ordner auslesen -> in array
if ($dir = opendir($path)) {
while (false !== ($sdir = readdir($dir))){
if (is_dir($path."/".$sdir)) {
if ($sdir != "." && $sdir != ".."){
$folder[] = array('foldername'=>$sdir, 'mtime'=>filemtime("$path/$sdir"));
}
}
}
// desc sortiere
usort ($folder, 'sortdesc');
reset ($folder);
// ein paar variablen für später definieren
$spalte=1;
$gesamtspalten=4;
// starte eine tabelle
echo "
<table cellpadding='0' cellspacing='0' border='0' align='center'>\n";
// schlaufe: für jeden ordner durchlaufen
foreach ($folder as $sdir) {
$i=0;
//an dieser stelle können alle unter ordner mit echo
//aufgelistet werden - alles in ordnung.
// echo "$sdir[foldername]<br>";
// html zeile starten
if($spalte==1) {echo "<tr>\n";}
// bilder auslesen
$blabla = opendir($sdir[foldername]);
// so lang es was zum lesen gibt...
while ($pic = readdir($blabla)) {
// ...und dateiformat ist gif oder jpg
$test=@getimagesize($sdir[foldername]."/".$pic);
if($test[2]==1 OR $test[2]==2){
// ? das brauchts nicht mehr, aber //stört vorerst auch nicht
if (is_file($sdir[foldername]."/".$pic)) {
// ? brauchts wahrscheinlich //auch nicht mehr...
if ($pic != "." && $pic != ".."){
// nur 1 Bild auslesen
//(? while $pic = readdir($blabla = schlaufe entfernen?)
while ($i<1){
// html spalten + function für vorschaubilder (index.php)
$id=basename($pic, ".jpg");
$title = strtoupper($sdir[foldername]);
echo "<td valign='top'>\n
<table cellpadding='0' cellspacing='0' border='0' align='center' class='table'>\n<tr>\n";
echo "
<td background='gallery.php?breit=$breite&bild=$sdir[foldername]/$pic'
align='center' valign='center' class='center'>";
echo "
<a href='index.php?loc=$sdir[foldername]&id=$pic'
onMouseOver=\"MM_swapImage('$id','','../navigation/overlay_A01r.gif',1)\"
onMouseOut=\"MM_swapImgRestore()\">
<img src='../navigation/overlay_A01.gif' name='$id' width='115'
height='115' border='0' id='$id'></a>";
echo "</td>\n";
echo "
</tr>\n
<tr>\n
<td align='center'>$title<br><br></td>\n
</tr>\n</table>\n";
echo "</td>\n";
$i++;
}
}
}
}
}
}
// falls bei der 4. spalte angelangt </tr> schliessen
if($spalte<$gesamtspalten){$spalte++;}
else{$spalte=1; echo "</tr>\n";}
// keine weiteren ordner - tabelle abschliessen
echo "</table>";
}
closedir($dir);
}
if(!$br) {$breite=600;} else {$breite=$br;}
if(!$sp) {$gesamtspalten=4;} else {$gesamtspalten=$sp;}
$loc="kaserne_2004";
$bildbreite=$breite/$gesamtspalten;
preview('../photos', $bildbreite);
hab den eintrag geändert - da hat sich beim copy/paste ein fehler eingeschlichen...
(wenn man sich den resultierenden html anschaut, sieht man an der anzahl <tr> dass die foreach-schlaufe soviele male wie es ordner gibt durchgelaufen wird... aber nur den ersten array ausgegeben wird.)
Kommentar