[Problem]Images per Script ausgeben

Hallo,
ich habe ein kleines Problem: Ich wollte ein Script erstellen, das alle .jpg-Dateien aus einem Ordner ausliest und ausgibt. Hierfür habe ich ein Download-Script einfach so umgeändert, dass es statt alle Dateien mit "." einfach alle mit ".jpg" nimmt und diese statt Link nun als Bild ausgibt. Ich habe es also so gemacht:

Code:
<?php

$folder1="images";


echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td>';
$open=opendir ($folder1);
while ($file = readdir ($open)) {
if($file != ".jpg" && $file != "..")
echo '<img src="'.$folder1.'/'.$file.'"><br>'; }
closedir($open);
echo '</td></tr></table></center>';?>

Immer, wenn ich jetzt auf meine HP gehe, zeigt es mir alle Bilder an, aber ganz oben wird ein Bild nicht angezeigt, da es dieses gar nicht gibt (es kommt also ein rotes Kreuz; kein Wunder, es gibt diese Datei nicht). Wenn ich mir nun die Eigenschaften dieses Bildes ansehe, steht dort kein Dateiname, sondern einfach nur meine URL und der Pfad mit "/" am Ende.

Ich habe verschiedene Dinge ausprobiert, das Script zu verändern, hat jedoch leider nicht geklappt. Entweder war ein parse error, oder es wurden 2 Bilder dieser Art angezeigt.

Desweiteren wollte ich erfahren, wie ich für jedes Bild eine neue Zeile erstellen kann (<td>)


Dazu sei gesagt, dass meine PHP-Kenntnisse nicht gerade gut sind.

Ich hoffe, dass mir jemand helfen kann.

Vielen Dank schon mal an dieser Stelle

David Baumhauer
 
Hi!

Dort wird die Datei "." angezeigt. In (fast) jedem Verzeichnis gibt es die Datei "." (zeigt auf das gleiche Verzeichnis) und die Datei ".." (zeigt auf das darunterliegende Verzeichnis).


Probier mal aus, eine Text-Datei in das Verzeichnis zu legen: Auch diese wird als Bild angezeigt.
Du musst also anders überprüfen, ob es sich um eine Bild-Datei handelt. Dazu kannst du zum Beispiel gucken, ob getimagesize funktioniert.

Mamphil
 
Hallo,
könntest du mir erklären, wie genau ich diesen String nun einbinde? Ich habe leider fast keine Ahnung von PHP, das ist mein Problem :(

Ich habe ein weiteres Script getestet, das leider auch nicht funktioniert:

Code:
<?php
$ordner = "images";
foreach (glob("gallerie/".$ordner."/*.jpg") as $filename) {
echo " <img src=\"$filename\"><img src=\"$filename\">\n";

}
?>

Bei diesem Script wird keine Datei angezeigt.

Dort wird die Datei "." angezeigt. In (fast) jedem Verzeichnis gibt es die Datei "." (zeigt auf das gleiche Verzeichnis) und die Datei ".." (zeigt auf das darunterliegende Verzeichnis).

Das ist mir auch aufgefallen. Das Script für die Downloads funktioniert jedoch ohne Probleme. Bei meinem Script habe ich anstatt "." einfach ".jpg" angegeben, also sollte er nur die .jpg-Files nehmen. Das ".." habe ich einfach weggelassen.

David Baumhauer
 
Hi!

Ich habe das Script mal umgeschrieben und ein wenig kommentiert. Ich hoffe, das hilft.
Zum PHP-Lernen empfehle ich http://www.schattenbaum.net/php/ ;)
PHP:
<?php

$folder1 = 'images';

echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr>';

// Öffne ein Verzeichnis zum Auslesen der Einträge im Dateisystem
$open = opendir($folder1);

// $i ist eine Zählvariable, mit der die Anzahl der Bilder pro Zeile gezählt werden sollen.
$i = 0;

while ($file = readdir ($open)) { // Solange ein Eintrag aus dem Verzeichnis ausgelesen 
                                  // und in die Variable $file geschrieben werden kann
  if ($img = @getimagesize($folder1.'/'.$file)) { // Wenn die Datei ein Bild ist (das @ unterdrückt Fehlermeldungen) [KORRIGIERT]
    // Wenn 4 oder mehr Bilder in der Zeile sind ....
	if ($i >= 4) {
	  // Schließe die Tabellenzeile ab und öffne eine neue ...
	  echo '</tr><tr>';
	  // ... und setze $i auf null zurück
	  $i = 0;
	  }
    // Öffne Tabellenzelle
	echo '<td>';
	// Gebe Bild aus. $img[3] enthält einen String width="..." height="..."
    echo '<img src="'.$folder1.'/'.$file.'" '.$img[3].'>';  
    // Schließe Tabellenzelle
	echo '</td>';
	// Erhöhe $i:
	$i++;
    }
  }
// Schließe das Verzeichnis
closedir($open);

echo '</tr></table></center>';

?>

Mamphil

EDIT: Fehler im Script korrigiert.
 
Zuletzt bearbeitet:
muss das nicht so sein:
PHP:
<?php 

$folder1 = 'images/'; 

echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr>'; 

// Öffne ein Verzeichnis zum Auslesen der Einträge im Dateisystem 
$open = opendir($folder1); 

// $i ist eine Zählvariable, mit der die Anzahl der Bilder pro Zeile gezählt werden sollen. 
$i = 0; 

while ($file = readdir ($open)) { // Solange ein Eintrag aus dem Verzeichnis ausgelesen 
                                  // und in die Variable $file geschrieben werden kann 
  if ($img = @getimagesize($file)) { // Wenn die Datei ein Bild ist (das @ unterdrückt Fehlermeldungen) 
    // Wenn 4 oder mehr Bilder in der Zeile sind .... 
    if ($i >= 4) { 
      // Schließe die Tabellenzeile ab und öffne eine neue ... 
      echo '</tr><tr>'; 
      // ... und setze $i auf null zurück 
      $i = 0; 
      } 
    // Öffne Tabellenzelle 
    echo '<td>'; 
    // Gebe Bild aus. $img[3] enthält einen String width="..." height="..." 
    echo '<img src="'.$folder1.'/'.$file.'" '.$img[3].'>';   
    // Schließe Tabellenzelle 
    echo '</td>'; 
    // Erhöhe $i: 
    $i++; 
    } 
  } 
// Schließe das Verzeichnis 
closedir($open); 

echo '</tr></table></center>'; 

?>
 
Hi!

Nein, ich habe beim getimagesize nur versucht, die Datei anhand des Dateinamen zu öffnen und habe den Pfad vergessen.

So geht's (getestet):
PHP:
<?php

$folder1 = 'yourFolder';

echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr>';

// Öffne ein Verzeichnis zum Auslesen der Einträge im Dateisystem
$open = opendir($folder1);

// $i ist eine Zählvariable, mit der die Anzahl der Bilder pro Zeile gezählt werden sollen.
$i = 0;

while ($file = readdir ($open)) { // Solange ein Eintrag aus dem Verzeichnis ausgelesen
                                  // und in die Variable $file geschrieben werden kann
  if ($img = @getimagesize($folder1.'/'.$file)) { // Wenn die Datei ein Bild ist (das @ unterdrückt Fehlermeldungen)
    // Wenn 4 oder mehr Bilder in der Zeile sind ....
    if ($i >= 4) {
      // Schließe die Tabellenzeile ab und öffne eine neue ...
      echo '</tr><tr>';
      // ... und setze $i auf null zurück
      $i = 0;
      }
    // Öffne Tabellenzelle
    echo '<td>';
    // Gebe Bild aus. $img[3] enthält einen String width="..." height="..."
    echo '<img src="'.$folder1.'/'.$file.'" '.$img[3].'>';  
    // Schließe Tabellenzelle
    echo '</td>'."\n";
    // Erhöhe $i:
    $i++;
    }
  }
// Schließe das Verzeichnis
closedir($open);

echo '</tr></table></center>';

?>

Mamphil
 
Zurück