Bilder mit php anzeigen und verlinken

Hallo ,
Habe folgende Frage :

Kann mir jemand ein script erstellen , was die Bilder aus dem Ordner thumb ausgibt und die ausgegebenen Bilder mit denen aus dem Ordner main verlinkt?

beide bilder haben den selben namen.

Hi,

was hast du denn genau vor?
Benutze doch einfach soetwas wie eine Galerie.

Gruß Nikolas

ja das will ich doch selber basteln ^^

ich habe die großen bilder im main ordner und die kleinen im thumb ordner

nun brauche ich nur noch ein script , das die kleinen bilder auf einer seite anzeigt und mit den großen verlinkt

Wenn du das ganz schlicht machen willst musst du die Dateinamen aus dem Ordner auslesen und dann in das IMG-Tag einfügen und um das IMG-Tag ein legen und dann dabei das … durch den Dateinamen ersetzen lassen und das ganze dann durch ne Schleife laufen lassen das es für jede Datei gemacht wird.

Ich probier mal was aber kann en bissel dauern.

Gruß Nikolas

für php ist da die funktion scandir ganz nützlich, die den verzeichnisinhalt sortiert in ein array zurück gibt.

das is ja mal geil :smiley:

na was denn jetzt? oh? du hast die bilder schon in die ordner gesteckt? :smiley:

So das hier sollte in primitivster Art und Weise das sein was du suchst:

[code]<?php
$verzeichnis = “thumb”;

if (is_dir($verzeichnis))
{
if ( $handle = opendir($verzeichnis) )
{
while (($file = readdir($handle)) !== false)
{
$thumbs = “$verzeichnis/$file”;

        if ( filetype($thumbs) == "file" ) 
             
        {
            $bilderdateinamen[] = $file;
        }            
        
    }
    closedir($handle);
}

}

foreach ( $bilderdateinamen AS $dateiname )
{

echo "<a href=\"main/$dateiname\"><img src=\"$verzeichnis/$dateiname\" border=\"0\"></a>";
}

?>[/code]

Gruß Nikolas

scandir hat den vorteil dass die dateien sortiert sind:

[code]<?php
$main_dir = ‘main’;
$thumb_dir = ‘thumb’;

$images = scandir($main_dir); //Bilder aus main auslesen
foreach($images as $image)
{
//befindet sich die auch im thumb verzeichnis?
if($image != ‘.’ && $image != ‘…’ && file_exists($thumb.’/’.$image))
{
//ausgabe
echo ‘’;
echo ‘'.$image.'’;
echo ‘

’;
}
}
?>[/code]
ungetestet.

Funktioniert gut , aber nun werden die bilder alle aneinander gereit und ganz unten an der seite angezeigt , wie kann ich das so formatieren , dass die bilder oben auf der seite und maximal 4 neneneinander angezeigt werden?

Das macht man wohl am besten mit einer Zählvariable, die bei jedem Schleifendurchlauf um eines erhöht wird und wenn z.B. die 4 erreicht wird, wird umgebrochen oder ähnliches.

Und wie sieht sowas dann ungefähr aus ? ;D

Das ganze ist ergänzend zu Balmung’s code, ungetestet und könnt sein das if($zahl > (bzw == ) 4 falsch ist und du stattdessen 5 nehmen musst…

[code]$zahl = “0”;
if($zahl < 4)
{
//Ausgabe
echo "echo ‘’;
echo ‘'.$image.'’;
echo ‘

’;
//Hochzählen
$zahl = “1”. + $zahl;

}elseif($zahl == 4)
{
//Extra Umbrucherzeugen, wenn 4 Bilder angezeigt werden
echo ‘

’;
//Zahl resetten
$zahl = “0”;
}else{}[/code]

Wenn die Bilder alle gleiche Maße haben (sonst sieht’s wohl eh komisch aus), bzw. man sie wenigstens in Container-Elemente mit gleichen Maßen stecken kann - dann tut’s auch floating bzw. display:inline-block für die Container, plus entsprechende Breitenangabe für das übergeordnete Element. (Als Container eignet sich dann bspw. UL/LI, schließlich ist es eine Liste von Bildern.)

Damit kann man die Darstellung komplett CSS überlassen, und muss bei der Erstellung der Liste nicht noch groß von der Programmlogik her Unterscheidungen treffen. Und ändern lässt es sich auch schneller und einfacher, wenn man dann mal mehr oder weniger Bilder nebeneinander haben will. (Vielleicht will man ja sogar unterschiedliche Styles anbieten, je nach Größe des Darstellungsbereiches, bspw. auf mobilen Geräten.)

weil ich so freundlich bin…

[code]<?php
$main_dir = ‘main’;
$thumb_dir = ‘thumb’;

$images = scandir($main_dir); //Bilder aus main auslesen
$n = 0;
foreach($images as $image)
{
//befindet sich die auch im thumb verzeichnis?
if($image != ‘.’ && $image != ‘…’ && file_exists($thumb_dir.’/’.$image))
{
//ausgabe
echo ‘’;
echo ‘'.$image.'’;
echo ‘
’;
$n++;
if($n % 4 == 0)
{
echo ‘
’; //einfacher Zeilenumbruch.
}
}
}
?>[/code]
chrisb’s Vorschlag mit den Listen wäre aber natürlich eleganter (würde ich auch selbst so machen).

Leider werden mit diesem code die bilder irgendwie nicht angezeigt

irgendwelche Fehlermeldungen?

Nein , nichts

ja dann kann ich dir auch nicht großartig helfen.
Möglichkeiten wäre, dass keine Bilder vorhanden sind, dass das script nicht funktioniert weil es falsch abgespeichert wurde (z.b. als .html statt als .php), oder es tritt ein schwerwiegenderer Fehler auf, der aber wegen abgestellter Fehlerausgabe unterdrückt wird (wenn du es hier auf bplaced hast und du nichts an den einstellungen dazu verändert hast, sollte das nicht der Fall sein).

$thumb ist nicht definiert, vermutlich ist auch an der Stelle $thumb_dir gemeint gewesen.

error_reporting auf E_ALL stellen weist auf solche Fehler hin!

Jetzt funktionierts !

Aber nun werden die Bilder alle untereinander ausgegeben.

ich möchte das gerne so :

z.b 20 bilder sind im verzeichnis

und dann werden 4 bilder nebeneinander und 5 reihen untereinander angezeigt