Zufallsbild aus mehreren Ordnern
Alex
- php
Hallo,
ich habe - u.a. mit eurer Hilfe - folgendes Skript erstellt, um ein
Zufallsbild aus meinem Ordner: "Bilder/Fotos/Web_klein" auszulesen.
Da ich nun aber mittlerweile eine Menge Bilder habe, will ich
diese in Unterverzeichnisse aufteilen ("Galerie_001", "Galerie_002"
usw.).
Leider weiß ich nicht, wie ich dies mache, ohne extra jedes
einzelne Verzeichnis in das Skript einzufügen. Ist es nicht möglich,
dass ich zunächst sage, lese eine Galerie zufällig aus und
dann daraus ein Zufallsbild?
Folgendes Skript habe ich bisher verwendet, um das Zufallsbild
auszuwählen:
<?php
//Script für das Zufallsbild
$bilder = array();
//Ordner öffnen
$dir = opendir ("../Bilder/Fotos/Web_klein");
//Datei lesen ohne die Verzeichnisse darüber
while ($bild = readdir ($dir)){
if ($bild != "." && $bild != "..")
array_push($bilder,$bild);
}
closedir($dir);
$max = count($bilder)-1;
$zufall = rand(0,$max);
$bild = $bilder[$zufall];
?>
Und dies um es einzufügen (inkl. Verlinkung auf die Großansicht):
<a href="../Bilder/Fotos/Web_gross/<?php echo $bild ?>" ><img src="../Bilder/Fotos/Web_klein/<?php echo $bild ?>" /></a>
Ich habe jetzt schon etliches Selbstversuche gestartet, die
jedoch allesamt gescheitert sind.
Übrigens habe ich am 16.07.06 eine ähnliche Anfrage gestartet,
aber da sich die Frage unter einem anderen Thema erst gestellt
hat, wage ich diese nochmal zu wiederholen. Ich bitte dies
zu verzeihen.
Über eine etwas auführlichere Antwort, wie "Ja, das ist möglich"
wäre ich dankbar, weil ich absoluter Anfänger bin. Danke schonmal
im Voraus.
Hey,
meine Idee wäre zuerst das verzeichnis in dem sich deine Ordner Galerie_001 Galerie_002 .. befinden in ein array zu lesen. Dafür readdir und opendir sinnvoll anwenden. Dann einfach das max von rand auf das count des arrays mit den galerien setzen-> so kriegst du dein zufallsverzeichnis... mit dem machst du dann weiter wir oben...
MFG Hagen
Meine Idee war, dass ich das Skript für das Zufallsbild einfach
kopiere und an ein Skript für ein Zufallsverzeichnis anpasse
(bild = verz und bilder = verze).
Etwa so:
<?php
//Script für das Zufallsbild
$verze = array();
//Ordner öffnen
$dir = opendir ("../Bilder/Fotos/Web_klein");
//Datei lesen ohne die Verzeichnisse darüber
while ($verz = readdir ($dir)){
if ($verz != "." && $verz != "..")
array_push($verz,$verz);
}
closedir($dir);
$max = count($verze)-1;
$zufall = rand(0,$max);
$verz = $verze[$zufall];
?>
<?php
//Script für das Zufallsbild
$bilder = array();
//Ordner öffnen
$dir = opendir ("../Bilder/Fotos/Web_klein");
//Datei lesen ohne die Verzeichnisse darüber
while ($bild = readdir ($dir)){
if ($bild != "." && $bild != "..")
array_push($bilder,$bild);
}
closedir($dir);
$max = count($bilder)-1;
$zufall = rand(0,$max);
$bild = $bilder[$zufall];
?>
Bin ich da kompett auf dem Holzweg?
Wenn nein:
Wie mache ich ihm im Skript für das Zufallsbild klar, dass
er den gerade zufällig ausgewählten Unterordner (Galerie)
nimmt?
Wenn ich auf dem Holzweg bin:
Beschreibe mir doch bitte genauer, wie du das meintest.
Hallo.
Wie mache ich ihm im Skript für das Zufallsbild klar, dass
er den gerade zufällig ausgewählten Unterordner (Galerie)
nimmt?
Indem Du es dem Skript auch sagst. D.h. an das "Web_klein" noch einen Slash und $verz anhängst.
Bisher ist Dein Bild-Wahl-Teil ja noch unverändert, d.h. dort wird noch in Web_lein gesucht und nicht in Unterordnern davon.
Sollte dann passen.
Grüße aus Würzburg
Julian
Hallo!
Indem Du es dem Skript auch sagst. D.h. an das "Web_klein" noch einen Slash und $verz anhängst.
Hab ich gemacht; so:
<?php
//Script für das Zufallsbild
$verze = array();
//Ordner öffnen
$dir = opendir ("../Bilder/Fotos/Web_klein");
//Datei lesen ohne die Verzeichnisse darüber
while ($verz = readdir ($dir)){
if ($verz != "." && $bild != "..")
array_push($verze,$verz);
}
closedir($dir);
$max = count($verze)-1;
$zufall = rand(0,$max);
$verz = $verze[$zufall];
?>
<?php
//Script für das Zufallsbild
$bilder = array();
//Ordner öffnen
$dir = opendir ("../Bilder/Fotos/Web_klein/$verz");
//Datei lesen ohne die Verzeichnisse darüber
while ($bild = readdir ($dir)){
if ($bild != "." && $bild != "..")
array_push($bilder,$bild);
}
closedir($dir);
$max = count($bilder)-1;
$zufall = rand(0,$max);
$bild = $bilder[$zufall];
?>
Und beim einfügen so:
<a href="../Bilder/Fotos/Web_gross/<?php echo $verz ?>/<?php echo $bild ?>" target="_blank"><img width="160" src="../Bilder/Fotos/Web_klein/<?php echo $verz ?>/<?php echo $bild ?>" /></a>
Klappt aber net. Kann mir jmd. sagen, wo da mein Fehler liegt?
Sorry! Hatte noch einen Flüchtigkeitsfehler entdeckt.
Klappt jetzt; aber leider net immer.
Zwischendurch zeigt er mir den Alternativtext an.
Zwischendurch bekomme ich noch diese Fehlermeldung:
Warning: opendir(../Bilder/Fotos/Web_klein/Thumbs.db) [function.opendir]: failed to open dir: Invalid argument in D:\Programme\xampp\htdocs\Include\head2.php on line 21
Warning: readdir(): supplied argument is not a valid Directory resource in D:\Programme\xampp\htdocs\Include\head2.php on line 23
Warning: closedir(): supplied argument is not a valid Directory resource in D:\Programme\xampp\htdocs\Include\head2.php on line 27
Aber obwohl ich die Ansicht "alle Ordner anzeigen" gewählt
habe, zeigt der mit in WinXP keine Thumbs.db an.
Weiß jmd. Rat, wie ich die Ansicht ändere, dass er mir die
anzeigt, damit ich die löschen kann oder liegt der Fehler
noch ganz woanders?
Kann man eigentlich abstellen, dass die Thumbs.db
automatisch anlegt wird?
Sollte mir echt mal angewöhnen erst zu denken und dann zu
schreiben. Aber manchmal fällt mir während des Schreibens
die Lösung ein.
Also für alle die es noch interessiert:
Ich habe das Problem jetzt so gelöst, indem ich
"Thumbs.db" bei der Auswahl des Verzeichnisses und
des Bildes ausgeschlossen hab:
if ($verz != "." && $verz != ".." && $verz != "Thumbs.db")
if ($bild != "." && $bild != ".." && $bild != "Thumbs.db")
Danke an alle, die sich mit meinem Problem beschäftigt
haben.
Jetzt kann ich wieder ruhig schlafen und geh ins Bett.
Gute N8
hi,
Ich habe das Problem jetzt so gelöst, indem ich
"Thumbs.db" bei der Auswahl des Verzeichnisses und
des Bildes ausgeschlossen hab:
Suboptimal.
Was, wenn dir mal irgendeine andere Datei in das Verzeichnis "rutscht" - eine aus Versehen dort abgelegte Textdatei oder sonstwas? Schon hättest du dein Problem wieder.
Nutze doch einfach is_dir() um zu prüfen, ob es sich bei dem aktuell ausgelesenen Verzeichniseintrag seinerseits um ein Verzeichnis handelt - und nur, falls dem so ist, nimmst du es in dein Array auf.
gruß,
wahsaga
Hi Wahsaga,
erstmal danke für den Tip mit den Thumbs. Habe die jetzt
erstmal gelöscht, aber sicherheitshalber, den "Ausschluss"
beibehalten, weil der öfter mal wieder (wann genau weiß
ich net) von Win angelegt wird.
Suboptimal.
Was, wenn dir mal irgendeine andere Datei in das Verzeichnis "rutscht" - eine aus Versehen dort abgelegte Textdatei oder sonstwas? Schon hättest du dein Problem wieder.
Naja, sollte eigentlich net passieren, aber deinen Tipp:
Nutze doch einfach is_dir() um zu prüfen, ob es sich bei dem aktuell ausgelesenen Verzeichniseintrag seinerseits um ein Verzeichnis handelt - und nur, falls dem so ist, nimmst du es in dein Array auf.
werde ich trotzdem mal aufgreifen. Erstens lerne ich mal wieder
was neues und zweitens scheint mir das wirklich die bessere
Lösung zu sein; wenn ich damit prüfen kann, ob ein Verzeichnis
vorliegt, kann ich bei der Bilderauswahl sicher auch prüfen,
ob ein ".jpg" vorliegt.
Schönen Abend noch und ein schönes Wochenende.
Gruß
Alex
Habe mal noch eine Frage zu meinem Script.
Ist es auch möglich anstatt auf das Zufallsbild
in Großansicht (z.B. "016_001.jpg") auf eine
HTML-Seite (z.B. "016_001.html") zu verlinken?
Habe die Bilder in einer HTML-Datei eingefügt,
weil das so schöner aussieht und ich so auch
eine Art Galerie ohne JS habe.
Kann ich das "jpg" durch ein "html" mit
einem Befehl ersetzen?
Oder kann ich evtl. auch einfach die HTML-Datei
in "016_001.jpg.html" umbenennen und das ".html"
dann in dem Zufallsskript hinzufügen?
hi,
Kann ich das "jpg" durch ein "html" mit
einem Befehl ersetzen?
http://de.selfhtml.org/javascript/objekte/string.htm#replace
(Es muss kein regulärer Ausdruck verwendet werden, eine einfache Zeichenkette, nach der zu suchen ist, geht auch.)
Oder kann ich evtl. auch einfach die HTML-Datei
in "016_001.jpg.html" umbenennen und das ".html"
dann in dem Zufallsskript hinzufügen?
Geht auch, per simpler Zeichenkettenverknüpfung.
gruß,
wahsaga
Hi Wahsaga,
http://de.selfhtml.org/javascript/objekte/string.htm#replace
(Es muss kein regulärer Ausdruck verwendet werden, eine einfache Zeichenkette, nach der zu suchen ist, geht auch.)
Will möglichst auf JavaScript verzichten, deswegen mache ich mir
ja die Mühe und füge jedes von in eine HTML Seite mit Navigation
und Bildinfo ein.
Oder kann ich evtl. auch einfach die HTML-Datei
in "016_001.jpg.html" umbenennen und das ".html"
dann in dem Zufallsskript hinzufügen?
Damit meinte ich, dass ich mein Skript für das Zufallsbild einfach
wie folgt anpasse:
<a href="../Galerien/<?php echo $verz ?>/<?php echo $bild ?>.html" target="_blank"><img width="160" src="../Bilder/Fotos/Web_klein/<?php echo $verz ?>/<?php echo $bild ?>" /></a></td>
Das habe ich mittlerweile ausprobiert und funktioniert. Frage
mich nur, ob jeder Server damit klarkommt, dass ich einen
"." im Dateinamen hab und dann noch ein "."-html folgt.
Also verständlicher: Ordner/Unterordner/Datei.jpg.html.
(So heißt dann meine HTML-Seite, die ich über den obigen
Link aufrufe).
Also wär nett, wenn mir das noch mal jmd. bestätigt oder
mitteilt, wenn das net auf jeden Server läuft. Denn bei
mittlerweile so knapp über 500 Fotos macht das einfügen
in HTML schon ein wenig Arbeit.
Gruß
Alex
hi,
Will möglichst auf JavaScript verzichten
Ach so ja, wir hatten ja auch bisher nur mit PHP gearbeitet - da war ich auf dem falschen Boot ...
Das habe ich mittlerweile ausprobiert und funktioniert. Frage
mich nur, ob jeder Server damit klarkommt, dass ich einen
"." im Dateinamen hab und dann noch ein "."-html folgt.
Also verständlicher: Ordner/Unterordner/Datei.jpg.html.
Es muss ja eigentlich nicht jeder Server damit klarkommen, sondern erst mal deiner :-)
Aber wenn's dir um die Portierbarkeit auf andere Server geht: Sollte kein Problem darstellen.
gruß,
wahsaga
Hi Wahsaga,
Es muss ja eigentlich nicht jeder Server damit klarkommen, sondern erst mal deiner :-)
Ja, dass würde mir ja auch schon reichen. Zur Zeit habe ich aber
noch keinen Webhoster, sondern teste erstmal nur lokal mit Xampp.
Aber wenn's dir um die Portierbarkeit auf andere Server geht: Sollte kein Problem darstellen.
Danke, dass wollte ich wissen. Nicht, dass ich jetzt hier alles
mühsam erstelle und dann nach dem Umzug zum Webhoster nichts mehr
läuft.
Gruß
Alex
Hallo nochmal,
konnte mir jetzt erstmal selbst weiterhelfen und
bedanke mich bei allen, die sich vlt. schon
Gedanken um meine Fragen gemacht haben.
Falls es noch jmd. interessiert, wie ich das
jetzt gelöst habe, kann er sich ja hier im
Forum melden, dann stelle ich mein Skript hierrein.
Wünsche Allen eine angenehme Nachtruhe.
Gruß
zwerg Alex
Hi,
Will möglichst auf JavaScript verzichten, deswegen mache ich mir
ja die Mühe und füge jedes von in eine HTML Seite mit Navigation
und Bildinfo ein.
warum denn nur? Du nutzt doch PHP - da reicht eine Seite, die Du mit entsprechenden Parametern aufrufst, wie z.B. hier: http://ingo-webdesign.de/foto/?gallery=Test&nr=31.
freundliche Grüße
Ingo
Hi Ingo,
danke für deine Antwort und Kompliment für dein Fotoalbum.
warum denn nur? Du nutzt doch PHP - da reicht eine Seite, die Du mit entsprechenden Parametern aufrufst, wie z.B. hier: http://ingo-webdesign.de/foto/?gallery=Test&nr=31.
Du hast Recht, ich nutze PHP. Aber ich fahre auch ´nen Auto und
kann es trotzdem nicht reparieren ;-) Das Skript für mein Zufalls-
bild habe ich mir mehr oder weniger abgeschrieben und mit der
Hilfe des Forums auf meine Bedürfnisse angepasst.
Ich versuche mich in PHP einzulesen, aber mir fehlt bei vielen
Dingen einfach das Grundverständnis und ehrlich gesagt öfters
auch mal die Geduld.
Ist es mit PHP und ohne Javascript möglich, eine Maske (HTML-/PHP-
Seite) zu erstellen und hier immer das Bild einzufügen, welches
gerade angeklickt wurde? Außerdem sollte es die Funktionen vor und
zurück (in der jeweiligen Galerie) haben und die Anzeige Bild ...
von ....
So sieht hierzu meine HTML-Seite aus:
<body>
<table width="100%" align="center">
<tr>
<td align="center">
<table align="center">
<tr>
<td align="left"> </td>
<td align="center"><a href="016.jpg.html" title="zurück zur Übersicht">Sit-In bei Ali (Sommer 2004)</a></td>
<td align="right"><a href="016_002.jpg.html"><img src="../../Bilder/Layout/forw.gif" width="22" height="22" style="border:solid 1px black" /></a></td>
</tr>
<tr>
<td colspan="3" align="center"><img src="../../Bilder/Fotos/Web_gross/Galerie_016/016_001.jpg" /></td>
</tr>
<tr>
<td align="left"> </td>
<td align="center">Bild 1 von 7</td>
<td align="right"><a href="016_002.jpg.html"><img src="../../Bilder/Layout/forw.gif" width="22" height="22" style="border:solid 1px black" /></a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
Das ist natürlich alles etwas aufwendig. Vor allem die Ersterfassung
momentan. Aber da so jedes WE um die 100 Bilder dazu kommen,
erscheint mir das auch langfristig, keine gute Lösung zu sein.
Wenn ich dies alles auch mit PHP umsetzen kann, ohne dass ich
das alles einzeln einfügen muss, wäre ich für Stichwörter hierzu:
dankbar.
Empfehlt ihr außerdem MySQL für die Bildverwaltung zu nutzen?
Hi,
Ist es mit PHP und ohne Javascript möglich, eine Maske (HTML-/PHP-
Seite) zu erstellen und hier immer das Bild einzufügen, welches
gerade angeklickt wurde? Außerdem sollte es die Funktionen vor und
zurück (in der jeweiligen Galerie) haben und die Anzeige Bild ...
von ....
natürlich. Und das ist gar nicht mal so kompliziert.
bei meiner Galerie sieht dieser Teil so aus:
echo ' <a id="galleryPrev" href="', $pic,$rew, '&iv=',$iv, '">«</a>', $cr;
echo ' <var>Bild ';
if($galleries[$gallery][5]<10 || $galleries[$gallery][5]>99) echo $nr;
else echo sprintf("%02d",$nr);
echo '/', $galleries[$gallery][5], '</var>', $cr;
echo ' <a id="galleryNext" href="', $pic,$fwd, '&iv=',$iv, '">»</a>', $cr;
Vielleicht hilft es Dir, das Prinzip zu verstehen...
Zuvor werden einige Variablen gesetzt: $pic enthält die URL bis zu "nr=", $rew die Nummer des vorigen Bildes und $iv den Bildwechsel-Intervall. $galeries ist schon etwas komplizierter - das ist ein assoziatives mehrdimensionales Array. Für diese Galerie sind mit
'Test' => array(
'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'gallery.css'
)
der Titel, Pfad, Anfang der Bildnamen, Anfang der Thumbnail-Namen und das zu verwendende CSS definiert. Aber so komplex brauchst Du das für eine einzelne Galerie ja gar nicht zu machen.
Wenn ich dies alles auch mit PHP umsetzen kann, ohne dass ich
das alles einzeln einfügen muss, wäre ich für Stichwörter hierzu:
- Bild einfügen, welches angeklickt wurde
Zunächst mal ist es hilfreich, die Thumbnails ähnlich wie die Originalbilder zu benennen, d.h. BildXYZ.jpg und thumb_BildXYZ.jpg, oder gleich und in einem anderen Verzeichnis.
Dann wird's leider etwas komplizierter: Du brauchst eine Routine, die das Verzeichnis ausliest und die Bildnamen in einem Array speichert. Wenn Du das dann sortierst, kannst Du die Bildnamen über $DeinArray[$Nummer] herausholen und
- Bild vor und zurück des jeweiligen Albums
naturlich auch $Nummer+1 bzw. $Nummer-1 berechnen und auch
- Anzeige Bild ... von ... der jeweiligen Galerie
die aktuelle Bildnummer und die Anzahl der Bilder im Array ausgeben.
Empfehlt ihr außerdem MySQL für die Bildverwaltung zu nutzen?
Nein. Das ist dazu überhaupt nicht nötig. Spare Dir die begrenzte Anzahl lieber für Anendungen, die komplexe Datenbankabfragen benötigen.
freundliche Grüße
Ingo
Hi Ingo,
schönen Dank für deine ausführliche Antwort.
Werde mich in meinem 3-wöchigen Urlaub jetzt
mal dransetzen und versuchen die Fotogalerie
mit deinen Tipps umzusetzen.
Beste Grüße
Alex
Gruß
Zwerg Alex
Hallo nochmal,
ich hoffe ich gehe euch allen net zu sehr auf den Wecker,
aber ich habe jetzt - u.a. dank eurer Hilfe - ein ganz gutes
Fotoalbum hingekriegt (zumindest für meine Verhältnisse^^).
Also zumindest habe ich es hingekriegt, das ich die Bilder
in eine einmal erstellte PHP-Seite integriere und nicht
jedes Bild einzeln einfügen muss.
Leider habe ich noch ein paar Probleme. Hierzu vlt.
erst einmal mein Skript:
<a href="../Galerien/Galerie_17/thumbs.php?t=Karneval in Düsseldorf&o=Galerie_17" target="_blank">
Script vor <head>:
<?php
// Hier wird der Titel automatisch über "GET" von "fotos.php" übergeben
$titel = $_GET['t'];
// Hier wird der Galerie-Ordner automatisch über "GET" von "fotos.php" übergeben
$ordner = $_GET['o'];
// Hier wird ein Array (Variable "galerie") angelegt
$galerie = array();
//Ordner öffnen
$dir = opendir ("../../Bilder/Fotos/Web_klein/$ordner");
//Datei lesen ohne die Verzeichnisse darüber
while ($bild = readdir ($dir)){
if ($bild != "." && $bild != ".." && $bild != "Thumbs.db")
array_push($galerie,$bild);
}
closedir($dir);
//Zählen der Einträge in $galerie für das spätere festlegen des Endpunktes für die for-Schleife im body
$x = count($galerie);
?>
Script im <body>:
<?php
// Bestimmen des Startpunktes und des Endpunktes der for-Schleife wenn mir, als 20 Bilder, dann "$x-1" durch "19" ersetzen
for ($i = 0; $i <= $x-1; $i++)
{
echo "<a href="vorschau.php?t=" . $titel . "&o=" . $ordner . "&bn=" . $galerie[$i] . ""><img src="../../Bilder/Fotos/Web_klein/" . $ordner . "/" . $galerie[$i] . "" /></a>";
}
?>
3)Abschließend lass ich mir in "vorschau.php" das Bild in groß
anzeigen.
Script vor <head>:
<?php
// Hier wird der Titel von "thumbs.php" übergeben
$titel= $_GET['t'];
// Hier wird der Bildname von "thumps.php" übergeben
$bild = $_GET['bn'];
// Hier wird der Galerie-Ordner automatisch über "GET" von "thumbs.php" übergeben
$ordner = $_GET['o'];
?>
Script im <body>:
<img src="../../Bilder/Fotos/Web_gross/<?php echo $ordner . "/" . $bild ?>" />
Was ich immer noch nicht hinbekomme ist:
Ich kann doch in "vorschau.php" ja nicht sagen, gehe in dem Array
einen zurück bzw. vor, weil das ja Array ja in "thumbs.php" aus-
gelesen wird. Und mit dem Bildnamen z.B. 3.jpg kann ich doch
net rechnen, oder?
Wie bekomme ich es hin, dass mir die Bildnummer des
aktuellen Bildes anzeigt wird?
Ich weiß, dass ich mit array_search die Position des Bildes im
Array anzeigen lassen kann. Aber dann hab ich wieder das Problem,
dass ich das array in "vorschau.php" ja garnicht auslese.
Und per GET von "thumbs.php" übergeben lassen, stellt mich vor
dem Problem, dass ich net weiß, wie ich die Position ermittle,
wenn ich die for-Schleife genutzt habe.
Verlangsamt es den Aufbau der Seite eigentlich sehr, wenn
ich 3-4 Werte per GET übergebe?
Kann das derzeit noch net abschätzen, weil ich lokal mit
Xampp teste und noch keinen Webhoster habe.
Sorry, dass ihr jetzt erstmal soviel lesen musstet, aber ich
hoffe, es hat trotzdem noch jmd. etwas Zeit und die Motivation,
sich mit meinen o.g. Problemen zu beschäftigen und antwortet mir.
Beste Grüße
Alex
Hi,
<a href="../Galerien/Galerie_17/thumbs.php?t=Karneval in Düsseldorf&o=Galerie_17" target="_blank">
warum ist das Script nicht in Galerien/ ? Und warum ist Karneval in Düsseldorf nicht url-kodiert und &o maskiert?
- In der jeweiligen Galerie ("thumbs.php") zeige ich die
Thumbnails an.
Warum verwendest Du mehrere Scripts? Wenn Du Dich auf eines beschränkst, dann enthält dieses sämtliche Informationen, die es auch ermöglichen...
- Wie bekomme ich es hin, das ich in der Vorschau ein Bild
zurück bzw. ein Bild vorspringen kann?
ein bestimmtes Bild über die Nummer im Array aufzurufen und entsprechende Links zum Blättern auszugeben und natürlich auch die aktuelle Bildnummer. Rufe dazu nicht das Bild, sondern seine Nummer auf.
Und mit dem Bildnamen z.B. 3.jpg kann ich doch net rechnen, oder?
könntest Du zwar schon, brauchst Du aber nicht.
- Verlangsamt es den Aufbau der Seite eigentlich sehr, wenn
ich 3-4 Werte per GET übergebe?
Nein. Jedenfalls wirst Du es nicht bemerken.
freundliche Grüße
Ingo
Hi Ingo,
<a href="../Galerien/Galerie_17/thumbs.php?t=Karneval in Düsseldorf&o=Galerie_17" target="_blank">
warum ist das Script nicht in Galerien/ ? Und warum ist Karneval in Düsseldorf nicht url-kodiert und &o maskiert?
Hhmmm, keine Ahnung, was du damit meinst. *schäm*
- In der jeweiligen Galerie ("thumbs.php") zeige ich die
Thumbnails an.Warum verwendest Du mehrere Scripts? Wenn Du Dich auf eines beschränkst, dann enthält dieses sämtliche Informationen, die es auch ermöglichen...
Meinst du mit "mehrere Scripts", warum ich für jede Galerie
eine einzelne Vorschau erstelle oder warum ich "thumbs.php"
(Kleinansicht) und "vorschau.php" (Großansicht) nicht in einer
Datei einfüge?
Also ersteres mache ich für die Übersichtlichkeit. Ist ja auch
kein Problem, die Datei eben von der einen Galerie in die nächste
zu kopieren.
Letzteres wüsste ich jetzt auf Anhieb nicht wie ich das verwirklichen
sollte. Würde ich vlt. hinkriegen, aber dann würde mir das Skript
wieder zu unübersichtlich.
- Wie bekomme ich es hin, das ich in der Vorschau ein Bild
zurück bzw. ein Bild vorspringen kann?ein bestimmtes Bild über die Nummer im Array aufzurufen und entsprechende Links zum Blättern auszugeben und natürlich auch die aktuelle Bildnummer. Rufe dazu nicht das Bild, sondern seine Nummer auf.
Danke, hab ich gestern Nacht noch hinbekommen. Habe einfach
das array $galerie in Vorschau nochmal geöffnet und ausgelesen,
mir die Bildnummer ($bnr)anzeigen lassen und dann, wie du mir in einer
vorherigen Nachricht empfohlen hast in $rew = $galerie[$bnr-1]
und in $fwd = $galerie[$bnr+1] die zu verlinkenden Bildnummern
gespeichert.
- Verlangsamt es den Aufbau der Seite eigentlich sehr, wenn
ich 3-4 Werte per GET übergebe?Nein. Jedenfalls wirst Du es nicht bemerken.
:-)
Gruß
Alex
P.S.
Ich bin absoluter Anfänger (wie du ja bestimmt schon bemerkt hast)
und bin z. Zt. froh, wenn etwas läuft. Um die Optimierung werde
ich mich später kümmern. Bin aber für jeden Verbesserungsvorschlag
dankbar.
Hi,
warum ist das Script nicht in Galerien/ ? Und warum ist Karneval in Düsseldorf nicht url-kodiert und &o maskiert?
Hhmmm, keine Ahnung, was du damit meinst. *schäm*
1. sind Leerzeichen in einer URL unzulässig (müßte als %20 kodiert werden) und 2. muß das Zeichen & im HTML-Link als & angegeben werden.
Meinst du mit "mehrere Scripts", warum ich für jede Galerie
eine einzelne Vorschau erstelle oder warum ich "thumbs.php"
(Kleinansicht) und "vorschau.php" (Großansicht) nicht in einer
Datei einfüge?
Beides. Aber vor allem letzteres.
Also ersteres mache ich für die Übersichtlichkeit. Ist ja auch
kein Problem, die Datei eben von der einen Galerie in die nächste
zu kopieren.
Letzteres wüsste ich jetzt auf Anhieb nicht wie ich das verwirklichen
sollte. Würde ich vlt. hinkriegen, aber dann würde mir das Skript
wieder zu unübersichtlich.
Nö. wie schon beschrieben kannst Du am Anfang des Scripts ein Array definieren mit den erforderlichen Informationen. Schau mal:
http://ingo-webdesign.de/foto/?gallery=dionysos&nr=-19
http://ingo-webdesign.de/foto/?gallery=bochum
http://ingo-webdesign.de/foto/?gallery=Test&nr=32&iv=60
Im Script steht dazu am Anfang:
$galleries = array(
'dionysos' => array( // URL-Parameter für Aufruf der Galerie
'Urlaub auf Thassos', 'dionysos', 'Dionysos', 'thumb_', 'dionysos/dionysos.css'
# Überschrift der Galerie, Pfad der Bilder, Anfang der Bildnamen [, Thumbnail [, CSS-Datei] ]
),
'bochum' => array(
'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'selfhtml-bochum/selfhtml.css'
),
'Test' => array(
'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'gallery.css'
)
);
was leicht zu ergänzen ist.
Darin wird dann z.B. der Galerieparameter so abgefragt:
$gallery = (isset($_REQUEST['gallery']) && array_key_exists($_REQUEST['gallery'], $galleries)) ? $_REQUEST['gallery'] : false;
Wenn also der Parameter als Schlüssel im Array ist, wird die Variavle $gallery damit definiert.
freundliche Grüße
Ingo
Glück auf mal wieder!
Hhmmm, keine Ahnung, was du damit meinst. *schäm*
- sind Leerzeichen in einer URL unzulässig (müßte als %20 kodiert werden) und 2. muß das Zeichen & im HTML-Link als & angegeben werden.
Ich dachte, die Leerzeichen werden automatisch als %20 kodiert.
Zumindest ist das bei meinen Browsern IE6 und Firefox so.
Das und Zeichen macht auch keine Probleme. Werde das aber dennoch
aufgreifen, weil ich ja möglichst viele Browser erreichen will.
Meinst du mit "mehrere Scripts", warum ich für jede Galerie
eine einzelne Vorschau erstelle oder warum ich "thumbs.php"
(Kleinansicht) und "vorschau.php" (Großansicht) nicht in einer
Datei einfüge?Beides. Aber vor allem letzteres.
Ersteres habe ich jetzt angepasst. Letzteres verzichte ich
drauf, weil ich nur das Großbild und keine Thumbnails mehr
in der Vorschau haben will. Habe nämlich eine ziemlich hohe
Auflösung 1024x768.
Also ersteres mache ich für die Übersichtlichkeit. Ist ja auch
kein Problem, die Datei eben von der einen Galerie in die nächste
zu kopieren.
Letzteres wüsste ich jetzt auf Anhieb nicht wie ich das verwirklichen
sollte. Würde ich vlt. hinkriegen, aber dann würde mir das Skript
wieder zu unübersichtlich.Nö. wie schon beschrieben kannst Du am Anfang des Scripts ein Array definieren mit den erforderlichen Informationen. Schau mal:
http://ingo-webdesign.de/foto/?gallery=dionysos&nr=-19
http://ingo-webdesign.de/foto/?gallery=bochum
http://ingo-webdesign.de/foto/?gallery=Test&nr=32&iv=60Im Script steht dazu am Anfang:
$galleries = array(
'dionysos' => array( // URL-Parameter für Aufruf der Galerie
'Urlaub auf Thassos', 'dionysos', 'Dionysos', 'thumb_', 'dionysos/dionysos.css'Überschrift der Galerie, Pfad der Bilder, Anfang der Bildnamen [, Thumbnail [, CSS-Datei] ]
),
'bochum' => array(
'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'selfhtml-bochum/selfhtml.css'
),
'Test' => array(
'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'gallery.css'
)
);
>
> was leicht zu ergänzen ist.
> Darin wird dann z.B. der Galerieparameter so abgefragt:
>
> `$gallery = (isset($_REQUEST['gallery']) && array_key_exists($_REQUEST['gallery'], $galleries)) ? $_REQUEST['gallery'] : false;`{:.language-php}
>
> Wenn also der Parameter als Schlüssel im Array ist, wird die Variavle $gallery damit definiert.
Jetzt weiß ich auch mal wofür die assoziativen Arrays gut
sein können ^^.
Also bis auf kleinere Probleme, habe ich
jetzt erstmal eine passable Galerie hinbekommen.
Um die Verfeinerung kümmere ich mich später nochmal,
weil ich jetzt erstmal genug davon hab und mich wieder
den leichteren Seiten (nur mit HTML und CSS und ohne PHP)
zuwende.
Ich danke vor allem Ingo für seine Hilfe, auch wenn ich
vlt. nicht alles so genau umgesetzt habe, wie er es
mir "empfohlen" hat.
Beste Grüße
zwerg
Hi,
Ich dachte, die Leerzeichen werden automatisch als %20 kodiert.
Zumindest ist das bei meinen Browsern IE6 und Firefox so.
nur kannst Du Dich nicht drauf verlassen. Aber dazu gibt es doch die praktische Funktion urlencode() - und für die Rückumwandlung zur Anzeige des Textes dann urldecode().
Das und Zeichen macht auch keine Probleme. Werde das aber dennoch
aufgreifen, weil ich ja möglichst viele Browser erreichen will.
Es ist aber invalide und kann durchaus Probleme machen. Das & leitet eine Entity ein, die durch ; beendet wird. Viele Browser erkennen zwar, dass &o= keine Entity sein kann und korrigieren den angenommenen Fehler, aber wenn Du u.B. &part= angeben würdest, könnte leicht angenommen werden, dass Du das ; vergessen hast und der Fehler dahingehend korrogiert werden, dass ∂ ausgegeben wird.
Darin wird dann z.B. der Galerieparameter so abgefragt:
$gallery = (isset($_REQUEST['gallery']) && array_key_exists($_REQUEST['gallery'], $galleries)) ? $_REQUEST['gallery'] : false;
Wenn also der Parameter als Schlüssel im Array ist, wird die Variavle $gallery damit definiert.
Jetzt weiß ich auch mal wofür die assoziativen Arrays gut
sein können ^^.
Nicht nur dafür. Auch der Zugriff auf die Elemente kann dadurch sehr vereinfacht werden. Z.B. bekomme ich dann über $galleries[$gallery] wenn $gallery='dionysos' sofort das Array mit den Daten für die 'dionysos'-Galerie.
Abgesehen davon "verschenkt" man in solchen Fällen mit einem numerischen Array den key, denn $galleries[0] sagt noch gar nichts, es sei denn, man würde die Galerie auch numerisch aufrufen, also über ?gallery=0 - ansonsten müßte der key (=Aufrufparameter) noch zusätzlich als weiteres Array-Element hinzugefügt und umständlich herausgesucht werden.
Also bis auf kleinere Probleme, habe ich
jetzt erstmal eine passable Galerie hinbekommen.
Um die Verfeinerung kümmere ich mich später nochmal,
weil ich jetzt erstmal genug davon hab und mich wieder
den leichteren Seiten (nur mit HTML und CSS und ohne PHP)
zuwende.
Schön. freut mich.
freundliche Grüße
Ingo
hi,
Aber obwohl ich die Ansicht "alle Ordner anzeigen" gewählt
habe, zeigt der mit in WinXP keine Thumbs.db an.
In der Thumbs.db legt Win XP die Miniaturansichten der Bilder im Verzeichnis ab, wenn du mal die entsprechende Anzeigeoption im Explorer gewählt hast.
Allerdings gilt die Thumbs.db IIRC als "Systemdatei" - also muss du in den Ordneroptionen angeben, dass du auch solche angezeigt bekommen willst.
gruß,
wahsaga