Bildergalerie

smyle

Erfahrenes Mitglied
Da ich keine Ahnung von Javascript habe, habe ich den Code für eine Bildergalerie aus dem folgenden Link kopiert.

http://www.jswelt.de/showsource.php?id=1030353686

Dieser Code ist Perfekt. Jedoch gibt es ein Problem.
Die Bilder müssen von Hand angegeben werden.
Wie kann ich machen dass die Bilder automatisch aus einem bestimmten Ordner herausgelesen werden?
Denn wenn ich mal 100 Bilder habe, kann es echt mühsam werden diese einzeln im Code zu hinterlegen.

Hier noch die eine Funktion mit den Bildern:

Code:
function init()
{

	neu("1.jpg",		"Test1");
	neu("2.jpg",		"Test2");
	neu("img3.jpg",		"Test3");
	neu("img4.jpg",		"Test4");
	neu("img5.jpg",		"Test5");
	neu("pic6.jpg",		"Test6");
	neu("7pic.jpg",		"Test7");
	neu("img8.jpg",		"Test8");

	document.getElementById("thumbs").style.height=10+height;
	setTimeout("document.getElementById('thumbs').innerHTML=thumb_table(0)",500);
}

Ich danke allen die mir helfen können und helfen werden.
Und falls ihr noch ein tipp für mich habt zB: ein Buch um Javascript zu lernen würde das mich sehr freuen. Denn Javascript scheint sehr interessant zu sein.

Liebe Grüsse an alle
smyle :D
 
Hola,

ich bin mir nicht sicher, ob das mit JS geht, da JS Client-seitig ausgeführt wird.

Mit PHP (readDir()) kannst Du so was durchaus machen. Du kannst einen Ordner X auf deinem Server auslesen, den Inhalt in eine Variable packen und übergeben.

Die Variable bzw. das Array kannst Du dann durchlaufen und die entsprechende JS Funktion mit dem Parameter aufrufen lassen.

Sonnige Grüße,

Tom
 
Moin,

falls du keine serverseitige Sprache verfügbar hast, ginge es evtl. auch ohne.

Falls sich in diesem Ordner keine index-Datei befindet, und das Directory-Listing am Server aktiviert ist, könnte man die vom Server generierte Auflistung der Dateien des Ordners per AJAX abfragen und daraus die Namen der Bilder "extrahieren".

Toms Vorschlag wäre aber vorzuziehen, falls du die Möglichkeit dazu hast :)
 
Ich habe die Variante mit PHP versucht aber da ich kein Javascript kann, habe ich keine Ahnung wie ich das verbinden soll
:(
Ich bin total überfordert.

Jedoch habe ich als PHP Code das zusammen bekommen. Ich denke das es stimmt...
Mit diesem Code kann ich Dateien aus einem Ordner herauslesen und mit einem echo ausgeben. Danach kann ich mit 2 Links, zurück gehen oder weiter

PHP:
$zeile=$_GET['Bild'];
$files = array(); 
$path = "Test/";
$verzeichnis = @opendir($path);     /* öffnet das Verzeichnis (@ unterdrückt Fehlermeldungen) */
if(!$verzeichnis) die("Kann Verzeichnis $path nicht öffnen");
rewinddir($verzeichnis);                    /* setzt den Verzeichnis-Zeiger auf die erste Datei */
while($file = readdir($verzeichnis)) {     /* durchläuft alle Dateien im Verzeichnis */
     if($file != "." and $file != "..") {
          array_push($files, "$file");          /* Dateien werden in das Array $files gespeichert */
     }	 
} 
sort($files);               /* sortiert, weil das durch readdir() nicht immer gewährleistet ist */

Hier sind noch die zwei zurück und weiter links

PHP:
if($zeile<count($files)-1) 
   {
    echo '<a href="Bilder.php?Bild= $zeile+1'; 
	echo "&From=";
	echo $_GET['From']; 
	echo '">Weiter</a>';
   }
if($zeile>count("-1"))
   {
     echo'<a href="Bilder.php?Bild= $zeile-1';
     echo "&From=";					
     echo $_GET['From'];				
     echo '">Zurück</a>';

und hir die ausgabe der Bilder im Ordner durch ein echo.

PHP:
<img src="Bilder/<? echo $files[$zeile]; ?>">

Aber leider weiss ich nicht wie ich das ganze mit den js verbinde :(


PS: Ich kann PHP nur ganz wenig, Javascript kenne ich nur vom sehen kann aber damit nichts anfangen und denn AJAX Code habe ich noch nie gesehen. Dieser werde ich warscheinlich noch weniger vestehen als js:S

:(
 
Hi,

wenn es darum geht, die Funktionsaufrufe neu für alle Bilder des Verzeichnisses automatisch zu generieren, solltest du sie mit Hilfe von PHP ins JS schreiben.
Code:
function init(){
<?php
	$zeile=$_GET['Bild'];
	$files = array();
	$path = "Test/";
	$verzeichnis = @opendir($path);     /* öffnet das Verzeichnis (@ unterdrückt Fehlermeldungen) */
	if(!$verzeichnis) die("Kann Verzeichnis $path nicht öffnen");
	rewinddir($verzeichnis);                    /* setzt den Verzeichnis-Zeiger auf die erste Datei */
	while($file = readdir($verzeichnis)) {     /* durchläuft alle Dateien im Verzeichnis */
	     if($file != "." and $file != "..") {
	          array_push($files, "$file");          /* Dateien werden in das Array $files gespeichert */
	     }
	}
	sort($files);               /* sortiert, weil das durch readdir() nicht immer gewährleistet ist */

  for($i=0; $i<count($files); $i++){
  	echo("neu(\"".$files[$i]."\", \"Test".$i."\");\n");
  }
?>

	document.getElementById("thumbs").style.height=10+height;
	setTimeout("document.getElementById('thumbs').innerHTML=thumb_table(0)",500);
}

Ciao
Quaese
 
WOW das sieht ja wunderbar aus, :( ABER :( leider bekomme ich als echo die Namen der Dateien und nicht die Bilder.

Deswegen habe ich das echo in eine TXT Datei reinschreiben lassen und diese dann als „Include“ wieder in die Datei eingebunden.
Das hat leider nicht funktioniert.
Danach habe ich es mit

Code:
open document.getElementByName("Test/Bilder.txt");

versucht, weil ich dachte es liegt am PHP und das hat auch nicht geklappt, aber wenigstens hat es mir nichts mehr im Browser angezeigt.

hier der Code:
PHP:
for($i=0; $i<count($files); $i++){
$filename = "Test/Bilder.txt";
	$somecontent = "'neu('.$files[$i].','Test'.$i.');\n'";

	if (!$handle = fopen($filename, "a")) {
         print "Kann die Datei $filename nicht öffnen";
         exit;
    }
    if (!fwrite($handle, $somecontent)) {
        print "Kann in die Datei $filename nicht schreiben";
        exit;
    }
    fclose($handle);

Das include:
PHP:
include 'Test/Bilder.txt';

Webbrowser ausgabe:
''neu('.1.jpg.','Test'.0.'); ''neu('.2.jpg.','Test'.1.'); ''neu('.3.jpg.','Test'.2.'); ''neu('.4.jpg.','Test'.3.'); ''neu('.5.jpg.','Test'.4.'); ''neu('.6.jpg.','Test'.5.'); ''neu('.7.jpg.','Test'.6.'); ''neu('.8.jpg.','Test'.7.'); ''neu('.Bilder.js.','Test'.8.'); ''neu('.Bilder.txt.','Test'.9.'); ''neu('.Gallery.html.','Test'.10.'); ''neu('.Thumbs.db.','Test'.11.');

Und danach das lyout der Seite ohne Bilder.
 
Hola,
leider bekomme ich als echo die Namen der Dateien und nicht die Bilder.

na klar, Du bekommst die Dateinamen ausgegeben.

Damit die Bilder auch angezeigt werden, musst Du natürlich den ganze Pfad angeben

Hier aus deiner Source:
Code:
neu("http://flexi.j-ws.de/test/martin.jpg",		"Der böse Martin"		);

Einfach den Pfad zum Speicherort in eine Variable packen und im Functionsaufrufe mit dem Dateinamen verbinden

Code:
neu(variable + dateiname);

Den Umweg über die TXT datei musst Du nicht nehmen.

Code:
$somecontent = "neu($pfad . $files[$i],'Test'.$i);"

So in der Art, wenn ich das nun auf die Schnelle richtig überrissen habe ;)

Grüße,

Tom
 
Wenn ich das richtig verstanden habe muss ich das so übernehmen:
JS
Code:
function init(){
Variabeln
PHP:
    $zeile=$_GET['Bild'];
    $files = "http://pfad/Bildergalerie/Test/";
    $path = "Test/";
Rest
PHP:
$verzeichnis = @opendir($path);     /* öffnet das Verzeichnis (@ unterdrückt Fehlermeldungen) */
	if(!$verzeichnis) die("Kann Verzeichnis $path nicht öffnen");
	rewinddir($verzeichnis);                    /* setzt den Verzeichnis-Zeiger auf die erste Datei */
	while($file = readdir($verzeichnis)) {     /* durchläuft alle Dateien im Verzeichnis */
	     if($file != "." and $file != "..") 
		 {
	          array_push($files, "$file");          /* Dateien werden in das Array $files gespeichert */
	     }
	}
	sort($files);               /* sortiert, weil das durch readdir() nicht immer gewährleistet ist */
Schluss
PHP:
	for($i=0; $i<count($files); $i++)
	{
  	echo("neu(\''.$files[$i].'\', \'Test'.$i.'\');\n");
    }
JS
Code:
	document.getElementById("thumbs").style.height=10+height;
	setTimeout("document.getElementById('thumbs').innerHTML=thumb_table(0)",500);
}

Aber dabei bekomme ich mehrere solche Meldungen:
Warning: array_push() [function.array-push]: First argument should be an array in /usr/export/www/hosting/smyle/Bildergalerie/Bilder.php on line 150

Die Zeile 150 ist die folgende:
146 while($file = readdir($verzeichnis)) { /* durchläuft alle Dateien im Verzeichnis */
147 if($file != "." and $file != "..")
148 {
149 array_push($files, "$file"); /* Dateien werden in das Array $files gespeichert */
150 }

Irgendwie bin ich davon überzeugt das ich noch etwas mit js machen müsste aber da ich das nicht kann, weis ich auch nicht was.

Ich habe danach noch andere Varianten die ähnlich aussehen versucht und ausprobiert, aber die Fehlermeldungen waren nur noch schlimmer.
Was mir noch aufgefallen ist die Meldungen werden nicht zwischen den 2 links (Aufwärts und Abwärts) angezeigt sondern oberhalb. das ist ja eigentlich auch falsch. Oder nicht?

Ich habe keine Ahnung wie ich das lösen soll, denn meine PHP kenntnisse sind ja auch nicht soooooooooooo gut :(
 
Zuletzt bearbeitet:
Moin :)

Die Fehlermeldung bekommst Du deswegen:
PHP:
$files = "http://pfad/Bildergalerie/Test/";

Somit ist $files kein Array sondern eine mit einem Textstring belegte Variable. Ergo kannst Du nicht per Array_push Werte hinzufügen.

Vielleicht kannst Du das ganze mal auf deinen Server in eine Dummypage einbinden.

Dann wäre das überprüfen etwas leichter, wenn man das Script im ganzheitlichen Zusammenhang sieht.

Sonnige Grüße,

Tom
 
Ich habe den Ordner mit den beiden Dateien und die Fotos angehängt ihr könnt diese somit herunterlade und mal ausprobieren wenn ihr das möchtet.

hmm man kan das zip nicht vollständig hochladen, dann mache ich das halt so:

Hier noch der Code
 

Anhänge

Neue Beiträge

Zurück