automatisch generierte Tabelle mit thumbs (while schleife)

hallo, ich hab ein problem.
ich möchte eine art bildergallery, nämlich eine tabelle, und wenn man auf die thumbs klick öffnet sich ein popup mit einem groesserem bild. dass klappt auch schon ganz gut. nur dies möchte ich nun gerne automatisieren, da dies bei ca 200 neuen bildern pro monat ziemlich aufwendig ist.

ich hatte vor dies mit einer whileschleife zu machen
Hier der code:

[php]

Titel der Gallery

Text zur Bildergallery

(Auf die Bilder Klicken um diese zu vergrößern)

<?php $section=$_GET['section']; $image=1;

while (file_exists(„./img/gal/$section/$image.JPG“) = true) {

if($image / 6 = *grade_zahl* )
      {echo"<td align=center><a href="javascript:popup('<html><img src=./img/gal/$section/$image.JPG></html>')" alt="$image"><img src=/img/gal/$section/$image_thumb.JPG  border=0></a></td></tr>";} 

 else {echo"<td align=center><a href="javascript:popup('<html><img src=./img/gal/$section/$image.JPG></html>')" alt="$image"><img src=/img/gal/$section/$image_thumb.JPG  border=0></a></td>";

    $image++;
  }

?>


zurück zur Übersicht [/php] die tabelle sollte 6 spalten haben, und zeilen, je nach anzahl der bilder. erst soll überprüft werden, ob es die datei gibt. dann soll das script überprüfen, ob schon die 6 spalten voll sind, wenn ja eine neue anfangen. und wenns keine datei mehr gibt die tabelle abschließen.

vielen dank im vorraus.

LG alex

[php]$i = 0;
echo „

“;
echo „“;
while () {
if (floor($i/6) == ceil($i/6)) echo „“;
$i++;
}
echo „“;

das is mal für die tabelle… den rest schaffst du?
echo „

“;[/php]

ja, danke das hat mir schonmal geholfen, aber meine bilder haben alle 3 stellen also z.B. 001.JPG und der will daraus nicht 002.JPG machen sondern 2.JPG. wie mach ich das? (möchte drei stellen haben weil es manchmal über 100 bilder sind und diese sonst falsch sortiert wären aslo 1, 10, 11, 101, …)

hier hab ich auch mal nen link:
http://wsef.ws.funpic.de/?class=gallery&section=test
(bilder sind in dem verzeichnis: http://wsef.ws.funpic.de/img/gal/test/ )

[php]

Titel der Gallery

Text zur Bildergallery

(Auf die Bilder Klicken um diese zu vergrößern)

<?php $section=$_GET['section']; $image = "001"; $i = 0; echo "
"; echo "";

while (file_exists(„./img/gal/$section/$image.JPG“))
{echo „<td align="center"><a href="javascript:popup(‚460‘,‚460‘,‚‘)" alt="$image"><img src="/img/gal/$section/“.$image.„_thumb.JPG" border="0">

“;
if (floor($i/6) == ceil($i/6)) echo „“;
$image++;
$i++;
}

echo „

“;
echo „
“;
?>


zurück zur Übersicht

[/php]
lg alex

les die bilder in ein array ein und mach dan natsort();, dann stimmt das und 14 is vor 20…(beispiel)

ja aber wie mach in das array davon? oder eher gesagt wovon nehm ich das denn genau??

[PHP]<?php
$section=$_GET[‚section‘];
$image = „001“;
$i = 0;
echo „(vor der Tabelle) var image =“.$image." - var i =„.$i.“.";
echo „

“;
echo „“;

$bilder = arry(
while (file_exists(„./img/gal/$section/$image.JPG“))
{echo „<td align="center"><a href="javascript:popup(‚460‘,‚460‘,‚‘)" alt="$image"><img src="/img/gal/$section/“.$image.„_thumb.JPG" border="0">

“;
if (floor($i/6) == ceil($i/6)) echo „“;
$image= $image+001;
$i++;
)

natsort ($bilder)

}

echo „

“;
echo „
“;
echo " (nach der Tabelle) var image =„.$image.“ - var i =„.$i.“.";
?>[/PHP]

so wohl nicht.

nein, du machst ein neues array

[php]
$bildnames = array();
[/php]

dann füllst du es per whileschleife mit den dateinamen
[php]
while ( $file = readdir($opendir) ) {
if ( $file != ‚.‘ && $file != ‚…‘ ) $bildnames = $file;
}
[/php]

die if abfrage schliesst die ordnerstrukturspezifischen verweisse zur root und zum parrentdir aus.

und dann mit

[php]
foreach ($bildnames as $value) {
echo „$value“;
}
[/php]

sorry, aber ich verstehs immer noch nicht, bzw. es fuunktioniert nicht. ich weis nicht wo der code hinsoll den du geschrieben hast?

und was bedeutet das genau…also das meiste kann ich mir ja danken aber… naja
ich habs einfach mal so gemacht, ist sowieso flasch… und woher kommen denn die variablen $file, $bildnames, usw??

[php]

Titel der Gallery

Text zur Bildergallery

(Auf die Bilder Klicken um diese zu vergrößern)

<?php $section=$_GET['section']; $image = "001"; $i = 0; echo "
"; echo "";

while (file_exists(„./img/gal/$section/$image.JPG“))
{echo „<td align="center"><a href="javascript:popup(‚460‘,‚460‘,‚‘)" alt="$image"><img src="/img/gal/$section/“.$image.„_thumb.JPG" border="0">

“;
if (floor($i/6) == ceil($i/6)) echo „“;

     $image++;
     $i++;

$bildnames = array(file_exists(„./img/gal/$section/$image.JPG“));

while ( $file = readdir($opendir) ) {
if ( $file != ‚.‘ && $file != ‚…‘ ) $bildnames = $file;
}

foreach ($bildnames as $value) {
echo „$value“;
}

}

echo „

“;
echo „
“;
?>


zurück zur Übersicht [/php]

den -in deinem fall richtigen- code hab ich ja auch nicht gepostet, ich hab dir die theorie gepostet, das script anzupassen is deine aufgabe. wenn du ein fertiges script suchst oder jemanden, der dir eins macht, dann zur jobbörse würde ich meinen.

btw: $opendir musst du vorher deklarieren, und zwar so:

[php]$opendir = opendir(pfad/zum/ordner);[/php]

im ersten codeteil hab ich einfach eine variable mit einem array gefüllt

im zweiten codeteil hab ich das array mit den dateinamen gefüllt

im dritten codeteil hab ich das array durchgearbeitet

zwischen 3 und 4 kommt dann [php]natsort($bildnames);[/php]
damit auch die reihenfolge stimmt.

ja, danke. jetzt bin ich schon weiter. er zeigt zwar jetzt alle bilder an, aber wirklich ALLE die sich in dem ordner befinden. er soll ja nur die Thumbs anzeigen: 001_thumb.JPG, 002_thumb.JPG, …
(…und zwar in einer tabelle) aber wie sag ich dem das der nur diese dateien aus dem verzeichnis aufrufen soll…

LINK: http://wsef.ws.funpic.de/index.php?class=gallery&section=test

und was genau bedeutet
[php]while ($file = readdir($opendir)) {
if ( $file != ‚.‘ && $file != ‚…‘ ) $bildnames = $file;
} [/php]
das?

danke. lg alex

  1. while schleife initialisieren
  2. $file = readdir = variable „file“ enthält aktuell gelesene datei (namen)
  3. if abfrage: schliesst die querverweisse . und … aus(. = root, … = parrent), die gibts in jeder ordnerstruktur, nur sieht man sie nicht
    4)bildnames heisst bildnames[nächster_index](is ja ein array)
  4. = file; heisst, dass der nächste arraydatensatz eben den dateinamen enthält.

du kannst nun entweder die thumbs in ein unterverzeichnis speichern und die zeile [php]if ( $file != ‚.‘ && $file != ‚…‘ ) $bildnames = $file;[/php] um das erweitern:
[php]if ( $file != ‚.‘ && $file != ‚…‘ && $file != ‚unterverzeichnis‘ ) $bildnames = $file;[/php]
oder du erweiterst die zeile
[php]if ( $file != ‚.‘ && $file != ‚…‘ ) $bildnames = $file;[/php]

um das:

[php]if ( $file != ‚.‘ && $file != ‚…‘ && !eregi(‚thumb‘, $file) ) $bildnames = $file;[/php]

das würde heissen:

wenn ( dateiname istnichtgleich . UND dateiname istnichtgleich .. UND 'thumb' kommt NICHT vor ind dateiname ) DANN lege einen Arrayeintrag an mit dem nächsthöheren INDEX und dem dateinamen als WERT

mh… ich weiss aber immer noch nicht wo ich das alles hintun soll…
das soll ja in ner tabelle stehn und jetzt reit der einfach die bilder untereinander^^ was ich ja grade nich haben will^^

bzw. jetzt zeigt der garkeine bilder mehr an: http://wsef.ws.funpic.de/index.php?class=gallery&section=test

hier die datei^^ kannste vllt mal dadrinw as ändern und dann zurückschicken^^ danke : http://wsef.ws.funpic.de/test.rar

hallo, weiss denn sonst niemand wie ich das amchen könnte?? das muss doch irgendwie gehen, oder? wäre wirklich wichtig. danke im vorraus.

normalerweise sollten solche Sachen geclosed werden, wenn man nicht einen tag warten kann

Einfach in deiner komischen Schleife ein
[php]
if(($image%5)==0)
{
echo „\n“;
}
[/php]

ne das funzt auch nicht richtig^^ könnte man nicht irgendwie sagen wenn die variable $image nur 1 oder 2 stellen hat, soll sie mit null(en) von vorne aufgefüllt werden (z.b. aus 1 wird 001 und aus 99 wird 099)

weiss jemand ob, und wie das geht?

danke.

Ich würds spontan so machen:

[php]if($image < 10) {
$image = „00“.$image; }
elseif($image > 9 AND $image < 100) {
$image = „0“.$image; }[/php]

puh, danke!!! waren noch ne menge fehler drin…hab sie aber alle beseitigt und es funktioniert :):slight_smile: