Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich möchte gerne alle Bilder aus einem Ordner auf einer Webseite anzeigen lassen.

Zur Zeit mach ich das noch so:

<img src="ordner/1.gif">

<img src="ordner/2.gif">

<img src="ordner/3.gif">

...

Geht doch sicherlich auch einfacher :D

Geschrieben

Mit PHP

Einfach das Verzeichnis lesen und die gefundenen Dateien überprüfen ob es bilder sind (Endung .jpg .png etc.) und dann einfach ausgeben.

Geschrieben

Mhh..

Wisst ihr was mir grade so auffällt? Hier sind erschreckend viele andere Nürnberger ;)...

Achso, ja zu deinem Problem; hier mal ein Ansatz:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html lang="de">

<?php


$titel='Meine Fotogalerie';  // Titel der Galerie


$bilddatei='bild.txt';       // Datei mit den Bildinformationen

$bildpfad='bilder';          // Unterverzeichnis, das die Bilder enthält

$iconpfad='minibilder';      // Unterverzeichnis, das die Vorschaubilder enthält

$grossbildpfad='';           // Falls nicht '', wird bei Klick auf Bild eine große Version aus diesem Verz. geladen


$spalten=5;                  // Anzahl der Spalten in der Übersichtstabelle  

$faktor=5;                   // Verkleinerungsfaktor für die Icons 


$bildpraefix='';             // evtl. ein Präfix für alle Dateinamen

$bildsuffix='.jpg';          // Dateiendung aller Bilder


$prev='';                    // Seite vor der Galerie

$next='';                    // Seite hinter der Galerie

$up='';                      // Übergeordnete Seite 



// -------- Ab hier nur mit Vorsicht ändern -------


$dir='';

$n=''; 

$letztesbild='';



$qs=$QUERY_STRING;

//parse_str($QUERY_STRING);  // Übernimmt den Bildnamen, falls übertragen 

import_request_variables('g','');


$dateiname=basename($_SERVER['PHP_SELF']);   


$qs=str_replace('letztesbild=ja','',$qs);

$qs=str_replace('&&','&',$qs);

$qs=ereg_replace('(^|&)n=[^&]*','',$qs);

$qs=ereg_replace('^&','',$qs);

if($qs){$pdateiname=$dateiname.'?'.$qs;} else{$pdateiname=$dateiname;};



$zusatztexte=3;              // Anzahl der Zusatztexte


$nr=0; 

$einzel=false;               // falsch-Übersicht über alle Bilder

$gbild=false;


if($dir!=''){$dir=$dir.'/';};


$bilddatei=$dir.$bilddatei;


$bildpfad=$dir.$bildpfad;

$iconpfad=$dir.$iconpfad;

if($grossbildpfad!=''){$gbild=true;};

$grossbildpfad=$dir.$grossbildpfad;



$d=array(array("","","","","","","")); // liest die Bildbeschreibungsdatei aus



if(file_exists($bilddatei)) {


 $f=fopen($bilddatei,'r');


 if($f) {

  while (!feof($f)) {

   $test=fgetcsv($f,32000,chr(167));

   if($test[0]!=''){array_push($d,$test);};

  };

 fclose($f);

 };


 $max=count($d)-1;   //Anzahl der Bilder



 if($letztesbild=='ja'){$n=$d[$max][0];};


 if($n!=''){for($i=1;$i<=$max;$i++){if($n==$d[$i][0]){$einzel=true;$nr=$i;};};};  //bestimmt die Nr. des aktuellen Bildes


 if ($einzel){     // Initialisiert Daten für Einzelbildanzeige


  $beschreibung=$d[$nr][3];

  $width=$d[$nr][1];if($width > 0){$width=' width="'.$width.'"';}else{$width='';};

  $height=$d[$nr][2];if($height > 0){$height=' height="'.$height.'"';}else{$height='';};

  $name=rawurlencode($d[$nr][0]);

  $zusatz=array('');


  for($i=4;$i<$zusatztexte + 4;$i++){array_push($zusatz,$d[$nr][$i]);};

  if($nr<$max){

   $nname=$d[$nr+1][0];

   $nachbeschreibung=$d[$nr+1][3];

   $next=$dateiname.'?n='.$nname.(($qs=='') ? '' '&'.$qs));

  }

  else{   

   };

  if($nr>1){

   $vname=$d[$nr-1][0];

   $vorbeschreibung=$d[$nr-1][3];

   $prev=$dateiname.'?n='.$vname.(($qs=='') ? '' '&'.$qs));;}

  else{$prev=$pdateiname;};


  $up=$pdateiname;


  $stitel=$titel.' - '.$beschreibung;

 }


 else {         // Initialisiert Daten für die Übersicht

  $beschreibung='';

  $stitel=$titel;

  $next=$d[1][0];$next=$dateiname.'?n='.$next.(($qs=='') ? '' '&'.$qs));

 };


?>

 <head>

  <title><?php echo $stitel; ?></title>

  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

  <meta name="description" content="<?php echo $beschreibung; ?>">

  <meta name="keywords" content="">

<?php if($prev!='') { ?>

  <link rel="prev" href="<?php echo htmlentities($prev);?>">

<?php }; if($next!='') { ?>

  <link rel="next" href="<?php echo htmlentities($next);?>">

<?php }; if($up!='') { ?>

  <link rel="up" href="<?php echo htmlentities($up);?>">

<?php }; ?>

<?php if($einzel) { ?>

  <link rel="section" href="<?php echo htmlentities($pdateiname);?>" title="<?php echo $titel;?>" ><?php };?>

  <link rel="stylesheet" type="text/css" href="stil.css" title="Standard">

 </head>


 <body id="galerie">


  <h1><?php echo $titel; ?></h1>

<?php 

 if($einzel){echo'

  <h2>'.$beschreibung.'</h2>';}

?>


<?php  


if ($einzel) { // Anzeige des einzelnen Bildes

 echo '

  <div class="bild">

';

 if($gbild){

  echo '     <a href="'.$grossbildpfad.'/'.$bildpraefix.$name.$bildsuffix.'">

  ';

 };

?>

   <img src="<?php echo $bildpfad.'/'.$bildpraefix.$name.$bildsuffix;?>" alt="<?php echo $beschreibung; ?>" <?php echo $width.$height; ?>>

<?php

 if($gbild){echo ' </a>';

?>

<br><span>Für größere Version auf Bild klicken.</span>

<?php

 };

 echo '  </div>

  <div class="zusatz">';

if($zusatz[1]!=''){echo ' 

   <p class="zusatz1">'.$zusatz[1].'</p>';};

if($zusatz[2]!=''){echo '

   <p class="zusatz2">'.$zusatz[2].'</p>';};

if($zusatz[3]!=''){echo '

   <p class="zusatz3 minitext">'.$zusatz[3].'</p>';};

 echo '

  </div>

  <div class="extra">

   <p class="bildzahl">Bild  '.$nr.' von '.$max.' </p>

   <p class="bildnavig">';

if($nr > 1){echo '

    <a href="'.$dateiname.'?n='.$vname.(($qs=='') ? '' '&'.htmlentities($qs))).'" title="'.$vorbeschreibung.'">vorheriges Bild</a> ·';};

echo '

    <a href="'.$pdateiname.'">Übersicht</a>';

if($nr < $max) {echo ' ·

    <a href="'.$dateiname.'?n='.$nname.(($qs=='') ? '' '&'.htmlentities($qs))).'" title="'.$nachbeschreibung.'">nächstes Bild</a>';};

echo '

   </p>

  </div>';}


else {        //Anzeige der Übersicht

 echo '

  <div>

   <table summary="Tabellarische Übersicht der Bilder" class="fotos">';

 $row=floor($max / $spalten);

 if ($row<1){$bild=0;};

 for ($i=0;$i<$row;$i++){ //Tabellenzeile

  echo '

    <tr>';

  for ($j=1;$j<=$spalten;$j++){  // Tabellenzelle

   $bild=$spalten*$i+$j;

   $name=rawurlencode($d[$bild][0]);

   $width=round($d[$bild][1]/$faktor);if($width>0){$width=' width="'.$width.'"';}else{$width='';};

   $height=round($d[$bild][2]/$faktor);if($height>0){$height=' height="'.$height.'"';}else{$height='';};  // Icons sind 1/faktor des Originalbildes

   $beschreibung=$d[$bild][3];

   echo '

     <td><a href="'.$dateiname.'?n='.$name.(($qs=='') ? '' '&'.htmlentities($qs))).'" title="'.$beschreibung.'">';

?>

<img src="<?php echo $iconpfad.'/'.$bildpraefix.$name.$bildsuffix;?>" alt="<?php echo $beschreibung;?>" <?php echo $width.$height;?>><?php echo '</a></td>';?>

<?php

  };

  echo '

    </tr>' ;

 };

 if ($bild<$max){       //letzte Tabellenzeile wird extra erzeugt

  $rest=$spalten-$max+$bild;

  echo '

    <tr>';

  for ($bild=$bild+1;$bild<=$max;$bild++){	

   $name=rawurlencode($d[$bild][0]);

   $width=round($d[$bild][1]/$faktor);if($width>0){$width=' width="'.$width.'"';}else{$width='';};

   $height=round($d[$bild][2]/$faktor);if($height>0){$height=' height="'.$height.'"';}else{$height='';};  // Icons sind 1/faktor des Originalbildes

   $beschreibung=$d[$bild][3];

   echo '

     <td><a href="'.$dateiname.'?n='.$name.(($qs=='') ? '' '&'.htmlentities($qs))).'" title="'.$beschreibung.'">';

?>

<img src="<?php echo $iconpfad.'/'.$bildpraefix.$name.$bildsuffix;?>" alt="<?php echo $beschreibung;?>" <?php echo $width.$height;?>><?php echo '</a></td>';?>

<?php

  };

  echo '

     <td colspan="'.$rest.'"></td> 

    </tr>';      //leere Zelle umfaßt restliche Zellen


 	};


 echo '

   </table>';

 echo '

  </div>';

};

?>


</body>


<?php

}

else {

?> 

 <head>

  <title><?php echo $stitel; ?></title>

  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

  <meta name="description" content="<?php echo $beschreibung; ?>">

  <meta name="keywords" content="">

<?php if($prev!='') { ?>

  <link rel="prev" href="<?php echo htmlentities($prev);?>">

<?php }; if($next!='') { ?>

  <link rel="next" href="<?php echo htmlentities($next);?>">

<?php }; if($up!='') { ?>

  <link rel="up" href="<?php echo htmlentities($up);?>">

<?php }; ?>

  <link rel="section" href="<?php echo htmlentities($pdateiname);?>" title="<?php echo $titel;?>" >

  <link rel="stylesheet" type="text/css" href="stil.css" title="Standard">

 </head>


 <body id="galerie">

  <h1>Fehler</h1>

  <p>Die Datei <em><?php echo $bilddatei;?></em> mit den Bilddaten konnte nicht geöffnet werden.</p>

 </body>

<?php 

};


?>

</html>


[/code]

Hab' ich vor lange Zeit mal gemacht, schrecklicher Codestil, usw. Hoffe das tut's trotzdem :)

mfl

Robin

Geschrieben

Mhh, ok..

Dann würde ich mir eben irgend einen Scriptinterpreter lokal installieren und halt einfach alles in eine html-Datei ausgeben, sollte doch kein Problem sein.

Wenn du Linux benutzt habe ich hier fertige Shellscripte die dir das machen, wenn du Windows benutzt musst du dich leider selber umschauen, aber ich wette, dass es da einige Freewareprogramme gibt :)

mfl

Robin

Geschrieben

ach ich find den link grad nicht, aber man kann die "index of" seite, die der apache ausgibt, doch anpassen. jetzt wärs interessant ob ich da bilder nicht als link sondern als bild selber ausgeben kann?

Geschrieben

Mhh,

gute Idee, aber leider nicht Möglich..

Du kannst zwar Header und Footer setzen (wie ich es hier auch machen) und die Icons ändern, aber Thumbnails erstellt der mod_autoindex dir (zumindest ohne ein extra Modul) nicht.

Quelle

mfl

Robin

Geschrieben

Wenn man den Header der AutoIndex Dings selber definieren kann, dann kann ich doch n Javascript verwenden welches die Index Of Daten ausließt und beim finden eines Bildes die entsprechenden Tags setzt.

Alternativ kann ich natürlich mit Javascript auch alle Elemente der Seite entfernen und somit wirklich nurnoch die Bilder anzeigen.

Aber um da genaueres sagen zu können reicht mein Javascript wissen nicht aus.

Geschrieben

LOL!

Das ist genauso krank wie genial!

Klaro, die Indexes vom Apache haben 'nen ordentlich DOM-Baum. Möglich ist es also auf jeden Fall. Nur ob es wirklich die Methode ist, die man will ist fraglich. :)

Aber SNOWMAN++ für die geekige Idee :D

mfl

Robin

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...