Bildgalerie und alphabetische Anzeige

Hallo zusammen,
ich bin in Sachen PHP leider nicht richtig fit und tue mich deswegen auch ziemlich schwer mit diesem Thema. HTML und CSS kein Problem aber PHP finde ich persönlich sehr schwierig zu verstehen.

Ich habe mir ein Bilderscript erstellt bzw. angepasst. Läuft auch soweit nur die Ausgabe der Bildinformationen bekomme ich nicht hin. Anbei erst einmal etwas Code:

[code]<?php
$extensions = array(‘gif’, ‘jpg’, ‘jpeg’);
$dir = ‘files/’;
$bilder = array();
foreach($extensions as $key => $extension)
$bilder = array_merge($bilder, glob($dir.’*.’.$extension));
$anzahl = count($bilder);
if(!$anzahl)
echo “Es befinden sich keine Bilder in diesem Ordner.”;
else{

    $spalten  = 1;
    $reihen = 6;
    $pro_seite = $spalten*$reihen;

    $seiten = ceil($anzahl/$pro_seite);

    $start = isset($_GET['seite'])?(int)$_GET['seite']:1;

    if ($start < 1)
        $start = 1;
    if ($start > $seiten)
        $start = $seiten;

}
?>

<?php echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; echo "Seite: \n"; echo " \n"; if ($start != 1) echo "<&nbsp\n"; for($i=1; $i<=$seiten; $i++) { if ($i==$start) echo $i."\n"; else echo "".$i."\n"; } if ($start != $seiten) echo "&nbsp> \n"; echo "
\n"; ?>
    <?php $offset = ($start-1)*$pro_seite; echo "\n"; // horizontale Ausrichtung for($i=0; $i<$reihen; $i++) { echo " \n"; // vertikale Ausrichtung for($j=0; $j<$spalten; $j++) { echo " \n"; // Bild-Index erhöhen $offset++; } echo " \n"; } echo "
    \n"; // Prüfen, ob der Bild-Index auch existiert if(isset($bilder[$offset])) echo "
  • Grafik vergrößern
  • Dateiname:
    Dateigrösse:
    Abmessungen (in Pixel):
    Grafik: http://
    HTML:
  • \n"; else echo "&nbsp"; echo "
    \n"; ?>
[/code]

Ich benötige folgende Informationen: Dateiname inkl. Dateiendung, Dateigrösse, Dateiabmessungen sowie den Dateipfad und den HTML-Code der Bilddatei. Das alles soll als Zusatzinfo zum Bild in Textform mit ausgegeben werden aber leider komme ich dabei kein Stück weiter. In einem anderen Script hat es noch funktioniert und ich habe versucht das irgendwie zu verstehen bzw. einzufügen, bekomme aber meist Fehlermeldungen (Parse-Error, Syntax-Error, usw.) was natürlich heisst das ich was falsch eingegeben habe. Tüftel jetzt schon seit 2 Tagen daran rum komme aber auf keinen grünen Zweig.

Könnte mir jemand dabei behilflich sein bitte?

Hi,

der Pfad zum jeweiligen Bild dürfte doch $bilder[$offset] sein, oder? Die Bildausmaße kannst du mithilfe von getimagesize($path) auslesen, dabei erhältst du ein Array als Rückgabewert, der Index 0 enthält anschließend die Breite, Index 1 die Höhe in Pixeln.

Bzgl. des Dateinamens siehe php.net/filesize. Was du allerdings mit “HTML-Code der Bilddatei” meinst, verstehe ich noch nicht.

Zeig doch mal, welche Versuche du bisher unternommen hast, wenn es dort Probleme gab.

Hallo,

generell habe ich vor allem Probleme die verschiedenen Schreibweisen bzw. was das Script macht richtig zu verstehen was bedeutet, das ich leider nur ausprobieren kann ohne genau zu wissen was ich da gerade mache… also Codeschnipsel einfügen, schauen was passiert, bei Fehler Rückgängig machen, versuchen zu verstehen was das Script macht oder auch nicht usw…

Inzwischen habe ich nach langem tüfteln, googeln und auch inzwischen teilweise verstehen ein etwas anderes Script zum laufen gebracht. Das Script aus dem Vor-Post habe ich komplett verworfen. Hier das aktuelle Script:

[code]<?php
// Abfrage auf welcher Seite man ist
$seite = $_GET[“seite”];
// Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite)) {
$seite = ‘1’;
}
// Array aufbauen
$files = array();
// Verzeichnis benennen
$v = “verzeichnis/test”;
// Verzeichnis öffnen
$dir = openDir($v);

// Schleife laufen lassen, um die Bilder in das definierte Array zu schreiben
// Dabei prüfen, ob die Dateinamen reguläre Dateien sind
while ($file = readDir($dir)){
if ($file != “.” && $file != “…” && is_file($v."/".$file)) {
$files[] = $file;
}
}
// Verzeichnis schliessen
closeDir($dir);
// Tabellenanfang generieren
echo ‘

’;
// Anzahl der Dateien im Verzeichnis zählen und Alphabetisch sortieren
if (isset($files))
$count = count($files);
sort($files);
// Einträge pro Seite
$max = 5;
// Ausrechnen wo die Zählung der maximalen Anzahl der Bilder beginnt
$start = $seite * $max - $max;
// Errechnen wieviele Seiten es geben wird
$seiten = $count / $max;
// Ausgabe der Links zu den Seiten
for($a = 0; $a < $seiten; $a++){
$b = $a + 1;
// Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b){
echo ‘’;
}else {
echo ‘’;
}
}
// Tabellenende generieren
echo ‘
’.$b.’’.$b.’
’;
// Anzahl der Bilder aus Array ausschneiden
// $max -> maximale Anzahl
// $start -> Beginn der Zählung
// $files -> Verzeichnis aus dem die Dateien angezeigt werden sollen
// $Original -> Abmessungen der Grafik ermitteln und ausgeben
// $size -> Dateigrösse ermitteln und ausgeben
$output = array_slice($files, $start, $max);

$i = 1;
foreach($output as $pics){
echo ‘

’;
$Original = getimagesize( $v."/".$pics );
$size = ceil(filesize($v."/".$pics)/1024);
echo ‘


Grafik
’.$pics.’
  • Dateiname: ‘.$pics.’

  • Dateigrösse: ‘.$size.’ kb

  • Abmessungen (in Pixel): ‘.$Original[0].’ x ‘.$Original[1].‘

  • Grafik: <input type=“text” onclick=“this.select()” class=“input” value="http://’.$_SERVER[“SERVER_NAME”].’/verzeichnis/’.$v.’/’.$pics.’" readonly=“readonly” />

  • HTML: <input type=“text” onclick=“this.select()” class=“input” value="<a href=“http://’.$_SERVER[“SERVER_NAME”].’/verzeichnis/’.$v.’/’.$pics.’”>" readonly=“readonly” />

’;
}
?>[/code]

Es ist auch ganz gut dokumentiert wie ich finde und habe auch schon ein paar Änderungen erfolgreich durchführen können (Anzeige der Abmessungen, der Dateigrösse sowie die Inputfelder in der Ausgabe). Das läuft auch so wie es soll aber ich habe noch nicht verstanden, wo ich die Abfrage der Dateitypen einbauen kann, damit z.B. nur Bilder des Types “.jpg, jpeg, usw” angezeigt werden und der Rest ignoriert wird.

Habe inzwischen sowas gefunden:

[code]while($file = readdir($verzeichnis)){
$ende= substr($file,strlen($file)-4,4);

if( $ende == “.gif” && $ende == “.jpg”){
echo $file."
";
}
} [/code]

oder auch das hier (was ich meine passen könnte):

while ($file = readDir($dir)){ if ($file != "." && $file != ".." && is_file($v."/".$file) AND strtolower(substr($file,-6) )== 'jpg') { $files[] = $file; } }

Wie muss ich das jetzt noch mit einbinden? Wie kann ich das verwirklichen? Hat jemand Zeit mir das etwas näher zu erläutern?

EDIT: Damit habe ich es erst einmal hinbekommen:

while ($file = readDir($dir)){ if ($file != "." && $file != ".." && is_file($v."/".$file) && (strpos($file, ".jpg")) || strpos($file, ".jpeg")) { $files[] = $file; } }

Ich lasse das Thema noch eine Weile auf falls doch noch Probleme auftreten sollten.

Hallo zusammen,

direkt über dem Post seht ihr welches Script ich verwende. Nun möchte ich gerne noch zusätzlich eine Möglichkeit schaffen, wo man die Dateien per Alphabet aufrufen kann, das heisst ich klicke auf “A” und alles was mit A beginnt wird angezeigt der Rest nicht.

Ich habe inzwischen folgenden Code mit eingebunden:

[code]<?php
// Tabellenanfang generieren
echo ‘

’;

$LetterList = array_merge(array(‘0-9’),range(‘A’,‘Z’));
foreach ($LetterList as $value) {
echo ’ ’ .$value . ‘’.’ ';
}

// Tabellenende generieren
echo ‘

’;
?>[/code]

aber wie verknüpfe ich das nun so, das mir nur die Dateien angezeigt werden welche z.B. mit nem A beginnen?