• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

automatisch generierte Tabelle mit thumbs (while schleife)

Status
Für weitere Antworten geschlossen.

axöööl

Neues Mitglied
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:
<head>
<script language="JavaScript">
      function popup(site) {
        x = screen.availWidth/2-w/2;
        y = screen.availHeight/2-h/2;
        var popupWindow = window.open(
            '','','width='auto',height='auto',left='+x+',top='+y+',screenX='+x+',screenY='+y);
        popupWindow.document.write(site);
      }
    </script>
</head>

<body link=#000000 vlink=#000000>
<center><span style="letter-spacing:4px">Titel der Gallery</span><br><br></center>

<table width="600px" border="0"><tr><td width="600px">Text zur Bildergallery</td></tr>
</table><br><b>(Auf die Bilder Klicken um diese zu vergrößern)</b><br><bR>

<table border=0 width=630><tr><td><center>


<table border=0 width=85% cellpadding=5>
<?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++;
      }
?>
</table></td></tr></table>
<br><a href="?class=gallery">zurück zur Übersicht</a>
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 "<table>";
echo "<tr>";
while () {
if (floor($i/6) == ceil($i/6)) echo "</tr><tr>";
$i++;
}
echo "</tr>";

das is mal für die tabelle... den rest schaffst du?
echo "</table>";
 
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:
<head>
<script language="JavaScript">
      function popup(w,h,site) {
        x = screen.availWidth/2-w/2;
        y = screen.availHeight/2-h/2;
        var popupWindow = window.open(
            '','','width='+w+',height='+h+',left='+x+',top='+y+',screenX='+x+',screenY='+y);
        popupWindow.document.write(site);
      }
    </script>
</head>

<body link=#000000 vlink=#000000>
<center><span style="letter-spacing:4px">Titel der Gallery</span><br><br></center>

<table width="600px" border="0"><tr><td width="600px">Text zur Bildergallery</td></tr>
</table><br><b>(Auf die Bilder Klicken um diese zu vergrößern)</b><br><bR>

<table border=0 width=630><tr><td><center>


<table border=0 width=85% cellpadding=5>
<?php 
$section=$_GET['section'];
$image = "001";
$i = 0;
echo "<table border=0 width=85% cellpadding=5>";
echo "<tr>";

while (file_exists("./img/gal/$section/$image.JPG")) 
{echo "<td align=\"center\"><a href=\"javascript:popup('460','460','<html><img src=/img/gal/$section/$image.JPG></html>')\" alt=\"$image\"><img src=\"/img/gal/$section/".$image."_thumb.JPG\"  border=\"0\"></a></td></tr>"; 
     if (floor($i/6) == ceil($i/6)) echo "</tr><tr>";
         $image++;
         $i++;
}

 echo "</tr>";
 echo "</table>";
?>
</td></tr></table>
<br><a href="?class=gallery">zurück zur Übersicht</a>
lg alex
 
Zuletzt bearbeitet:
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 "<table border=0 width=85% cellpadding=5>";
echo "<tr>";

$bilder = arry(
while (file_exists("./img/gal/$section/$image.JPG")) 
{echo "<td align=\"center\"><a href=\"javascript:popup('460','460','<html><img src=/img/gal/$section/$image.JPG></html>')\" alt=\"$image\"><img src=\"/img/gal/$section/".$image."_thumb.JPG\"  border=\"0\"></a></td></tr>"; 
     if (floor($i/6) == ceil($i/6)) echo "</tr><tr>";
         $image= $image+001;
         $i++;
)

natsort ($bilder)


}

 echo "</tr>";
 echo "</table>";
echo " (nach der Tabelle) var image =".$image."  - var i =".$i.".";
?>

so wohl nicht.
 
nein, du machst ein neues array

PHP:
$bildnames = array();

dann füllst du es per whileschleife mit den dateinamen
PHP:
while ( $file = readdir($opendir) ) {
if ( $file != '.' && $file != '..' ) $bildnames[] = $file;
}

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

und dann mit

PHP:
foreach ($bildnames as $value) {
 echo "<img src="......./$value" alt="$value"/>";
}
 
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:
<head>
<script language="JavaScript">
      function popup(w,h,site) {
        x = screen.availWidth/2-w/2;
        y = screen.availHeight/2-h/2;
        var popupWindow = window.open(
            '','','width='+w+',height='+h+',left='+x+',top='+y+',screenX='+x+',screenY='+y);
        popupWindow.document.write(site);
      }
    </script>
</head>

<body link=#000000 vlink=#000000>
<center><span style="letter-spacing:4px">Titel der Gallery</span><br><br></center>

<table width="600px" border="0"><tr><td width="600px">Text zur Bildergallery</td></tr>
</table><br><b>(Auf die Bilder Klicken um diese zu vergrößern)</b><br><bR>

<table border=0 width=630><tr><td><center>


<table border=0 width=85% cellpadding=5>
<?php 
$section=$_GET['section'];
$image = "001";
$i = 0;
echo "<table border=0 width=85% cellpadding=5>";
echo "<tr>";


while (file_exists("./img/gal/$section/$image.JPG")) 
{echo "<td align=\"center\"><a href=\"javascript:popup('460','460','<html><img src=/img/gal/$section/$image.JPG></html>')\" alt=\"$image\"><img src=\"/img/gal/$section/".$image."_thumb.JPG\"  border=\"0\"></a></td></tr>"; 
     if (floor($i/6) == ceil($i/6)) echo "</tr><tr>";
         
         $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 "<img src="img/gal/$section/$value" alt="$value"/>";
}




}

 echo "</tr>";
 echo "</table>";
?>
</td></tr></table>
<br><a href="?class=gallery">zurück zur Übersicht</a>
 
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);

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);
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;
}
das?

danke. lg alex
 
Zuletzt bearbeitet:
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)
5) = 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;
um das erweitern:
PHP:
if ( $file != '.' && $file != '..' && $file != '*unterverzeichnis*' ) $bildnames[] = $file;
oder du erweiterst die zeile
PHP:
if ( $file != '.' && $file != '..' ) $bildnames[] = $file;

um das:

PHP:
if ( $file != '.' && $file != '..' && !eregi('thumb', $file) ) $bildnames[] = $file;

das würde heissen:

Code:
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
 
hallo, weiss denn sonst niemand wie ich das amchen könnte?? das muss doch irgendwie gehen, oder? wäre wirklich wichtig. danke im vorraus.
 
Einfach in deiner komischen Schleife ein
PHP:
if(($image%5)==0)
{
    echo "</tr><tr>\n";
}
 
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; }
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben