• 27.04.2024, 02:58
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Dateilinkliste generieren

Samstag, 21. Mai 2011, 13:11

Hi,
ich habe im Netz bißchen php Code gefunden mit dem man eine Dateilinksliste von *.gif Dateien in einem Ordner erstellen können soll. Entsprechend angepasst habe ich das versucht aber er meckert immer wegen den Pfades rum, was mache ich falsch?

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /kunden/xyz/webseiten/dateiliste.php on line 8

Die auszulesenden Dateien befinden sich in "webseiten/kolobok" Verzeichnis wobei die *.php Datei in "webseiten/" liegt.


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function dateiendung($datei){
  $array explode(".",$datei);
  return $array[count($array)-1];
}


$path dir "kolobok/";
while($datei $path->read()){
  if(dateiendung($datei) == "gif"){
      echo "<a href='$datei'>$datei</a>";
  }
}

?>

Samstag, 21. Mai 2011, 13:34

dir("kolobok/");

Samstag, 21. Mai 2011, 14:18

Danke....mhh nur irgendwie habe ich mir das anders vorgestellt. Ich wollte eigentlich die komplette URL dort stehe haben, und am besten als Liste. Muss ich eine neue Funktion aufrufen um die komplette url als Link anzuzeigen?
Und wie bringe ich dem script bei nach jedem Namen einen Absatz zu erstellen?

Samstag, 21. Mai 2011, 15:19

wenn du nach jedem link ne neue Zeile willst, machste einfach hinter jedes </a> noch nen <br />

und die Komplette URL musst du dir zusammen bauen...
wo soll das script liegen? und in welcher relation dazu ist der ordner wo die dateien ausgelesen werden sollen....

nehmen wir an das script liegt im httpdocs
also httpdocs/script.php
und der Ordner kolobok ist auch im httpdocs
also httpdocs/kolobok
dann hat nen bild zb die adresse httpdocs/kolobok/bild01.gif

Wenn script nun an dem ort ausgeführt wird, wo es auch liegt und nicht an einer anderen stelle included wird, schreibste dann also einfach

PHP-Quelltext

1
echo "<a href='".$folder.$datei."'>".$datei."</a><br />";

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »palme|kex`« (21. Mai 2011, 15:20)

Sonntag, 22. Mai 2011, 13:49

Wenn es dir nur darum geht, Dateien in einem Verzeichnis über eine dynamisch generierte HTML-Seite zu verlinken, schau dir dieses Script zum Vergleich an. Anpassen müsstest du lediglich den Dateinamenfilter, so dass nur die gewünschte Endung berücksichtigt wird.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Y0Gi« (22. Januar 2013, 03:39)

Montag, 23. Mai 2011, 12:26

@Palme: Danke dir, geil ich habs! :D http://www.jogibaeruniverse.de/dateiliste.php Wenn ich jetzt noch schaffe die Adressen automatisch als Bild anzeigen zu lassen mit dynamischen Abmessungen, dass ist es perfekt. :D

@Coderschmidt: Klasse danke, dein Script interessiert mich jetzt aber auch, aber ich schätze ich scheitere wieder aufgrund meines geringen Coding Skills. Ich muss doch nur diese Zeile hier ändern und dann das Script in das Verzeichnis kopieren in dem sich die zu indizierenden Dateien befinden oder?

PHP-Quelltext

1
if (($entry != '.') and (substr($entry, -4) != '.gif')) {

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Jogibär« (23. Mai 2011, 12:48)

Montag, 23. Mai 2011, 13:23

Das ist doch die einfachste Sache der Welt.
Einfach den Link durch nen img tag ersetzen, und den wert des href schreibst du dort ins src attribut. Wenn du keine Angaben zur größe der Bilder machst, werden die in original Größe dargestellt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »palme|kex`« (23. Mai 2011, 13:25)

Montag, 23. Mai 2011, 14:47

Mhh genau das habe ich schon versuchst, also bei mir sah das dann so aus was aber nicht geht:

PHP-Quelltext

1
echo "<img src="<a href='kolobok/".$folder.$datei."'>http://www.jogibaeruniverse.de/webseiten/kolobok/".$datei.""</a><br />>";

Montag, 23. Mai 2011, 14:55

Du verwurschtelst da nen bissel was mit ein ander ^^

PHP-Quelltext

1
echo "<a href='".$folder.$datei."'><img src='".$folder.$datei."'></a><br />";

wenn in der $folder vairable eben der kolobok drinne steht und das script aus dem selben ordner ausgeführt wird, in dem sich auch der kolokob ordner befindet

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »palme|kex`« (23. Mai 2011, 14:58)

Montag, 23. Mai 2011, 23:48

@Coderschmidt: Klasse danke, dein Script interessiert mich jetzt aber auch, aber ich schätze ich scheitere wieder aufgrund meines geringen Coding Skills.

Lass es einfach in Ruhe wirken und probiere Änderungen aus. Zugegeben, es vermischt vorbildlich Logik und Darstellung. Um es klarer zu machen, kannst du z. B. die Styles und einiges an HTML weglassen. Einen vernünftigen Editor mit Syntax-Highlighting benutzt du ja hoffentlich bereits.

Ich werde sehen, dass ich hier eben ein paar Verbesserungen vornehme (nach über neun Jahren wird das wohl erlaubt sein ;))).

Ich muss doch nur diese Zeile hier ändern und dann das Script in das Verzeichnis kopieren in dem sich die zu indizierenden Dateien befinden oder?

PHP-Quelltext

1
if (($entry != '.') and (substr($entry, -4) != '.gif')) {

Koooorekt. Fast! Die Bedingung stellt fest, ob ein Verzeichniseintrag angezeigt werden soll. Daher muss es

PHP-Quelltext

1
substr($entry, -4) == '.gif'

heißen, also negiert sein. Der ursprüngliche Test dient dazu, Dateien mit der Endung ".php" *nicht* anzuzeigen. Wenn du, wie du vorhast, statt dieser Black- eine Whitelist nutzt (d. h. nur "*.gif"), dann wird das PHP-Script selbst automatisch herausgefiltert.

Ansonsten gilt, was palme sagte: Das Markup für die Hyperlinks auf die (dann) GIFs einfach durch "img"-Tags mit dem ehemaligen Linkziel als Wert für das "src"-Attribut ersetzen. Der Rest ist CSS um Ausrichtung, Abstände und Rahmen anzupassen. Mit Listen und CSS-Floating kann man übrigens toll Bildergalerien erstellen, die die Anzahl der Bilder pro Zeile dynamisch der verfügbaren Seitenbreite im Browser anpassen Beispiel.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Y0Gi« (24. Mai 2011, 22:18)

Dienstag, 24. Mai 2011, 11:06

Danke, gut dann werde ich mich mal am we damit auseinandersetzen. :)

Nun versuche ich aber noch das erste Script zum Laufen zu bringen, aber ich denke mir fehlt die Funktion "$folder", deswegen auch meine Verwurschtelung im Post #8, wodurch die Zieladresse korrekt wurde, aber nicht die dargestellte und gerade die muss ja richtig ausgelesen werden bei direkter Darstellung der *.gif Bilder auf einer Seite. Auslesen tut das Script ja die Bilder richtig und gibt die Dateinamen aus, da ich ja das Verzeichnis "kolobok/" angegeben habe, aber ich finde in den zich Online Tutrials keine Hinweise auf eine "folder" Funktion. Ist das bereits in php "implementiert" wenn ich das so schreiben darf?

Ich habe ".$folder" jetzt einfach rausgelöscht und "kolobok/" davor geschrieben, was aber doch eigentlich die folder Funktion übernehmen sollte oder habe ich das missverstanden?

So funktioniert es nun: :)

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function dateiendung($datei){
  $array explode(".",$datei);
  return $array[count($array)-1];
}


$path dir ("kolobok/");
while($datei $path->read()){
  if(dateiendung($datei) == "gif"){
      echo "<a href='kolobok/".$datei."'><img src='kolobok/".$datei."'></a><br />";
  }
}

?>

Dienstag, 24. Mai 2011, 21:22

Das ist keine Funktion, sondern ne Variable ^^ Ich hab mich da etwas vertan. Ich habe bei meinem Script ne $folder variable stehen, da ich das Script an verschiedenen stellen included habe.

Das hab ich einfach mit deinem verwechselt ^^
So wie dus gemacht hast, ist schon richtig, $folder gibts bei dir nit

Dienstag, 24. Mai 2011, 23:34

Jogibär: Welche PHP-Version hast du zur Verfügung?

Mittwoch, 25. Mai 2011, 01:28

So, es gibt nun eine verbesserte Version (die "modern"-Variante), die ich anstelle der alten empfehle. Mehr Code, aber recht funktional und damit sauber nachvollziehbar gestrickt. Dazu HTML5 und CSS3 (schlanker, aber hübscher ;)). Viel Spaß damit.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Y0Gi« (22. Januar 2013, 03:39)

Mittwoch, 25. Mai 2011, 09:23

Stark danke, deine alte Version lief bei mir auch, die neue ist aber wesentlich übersichtlicher und komfortabler anzupassen. :) Mir steht PHP 5.2.13 zur Verfügung, mein webspace wird von df.eu betrieben, also immer recht aktuell.

Ich war gerade am Überlegen ob ich die Bilder sortiert in Unterverzeichnisse packe und wie ich das anstellen kann, da habe ich auch schon die entsprechende Zeile gefunden die genau das berücksichtigt wenn sich mein Englisch nicht täuscht. :D

PHP-Quelltext

1
2
function get_grouped_entries($path) {
    list($dirs$files) = collect_directories_and_files($path)


Fein.....dann werd ich für jedes Verzeichnis eine Tabelle per css erstellen.....das wird ein Spaß. :D (das mein ich ernst)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jogibär« (25. Mai 2011, 09:24)

Donnerstag, 26. Mai 2011, 20:38

Funktioniert das neue Script wirklich bei dir? Ich bin der Meinung, mindestens zwei Dinge benutzt zu haben, die erst in PHP 5.3+ verfügbar sind. Aber das kann man wohl zur Not auch abwärtskompatibel gestalten.

Das Script ist so angelegt, dass man es in jedes Verzeichnis kopiert, das man so darstellen möchte. Dann kann man sich durch die entsprechenden Verzeichnisse hangeln.

Wenn du mit einem Aufruf gleich alle Bilder aller Unterverzeichnisse sammeln willst, kannst du Rekursion nutzen und bei jedem Verzeichnis die Funktion erneut aufrufen, die den anzuzeigenden Verzeichnisinhalt zusammenstellt. Dabei gibt man oft eine Datenstruktur (hier: Array) mit, die man entsprechend ergänzen kann. Ist aber nicht ganz trivial, sowas in den Kopf zu kriegen, damit es auch wie gewollt funktioniert.

Freitag, 27. Mai 2011, 00:13

Ich hatte es noch nicht ausprobiert bis jetzt, nur angeguckt und das alte benutzt, aber du hast Recht, es funktioniert bei mir nicht. Er meckert bei mir wegen Zeile 57:


PHP-Quelltext

1
return array_partition($entries, function($entry) {

Samstag, 28. Mai 2011, 13:18

Beschäftige mich derzeit mit deinem alten Script, aber ich bekomme es einfach nicht hin, dass mehrere dynamische Tabellen erstellt werden und sich diese an die Bildschirmgröße anpassen, natürlich in der Länge. Also ich möchte 3 Tabellen nebeneinander wobei die Verteilung der Bilder gleichmäßig über alle 3 wie eine Gallerie stattfindet, geht sowas überhaupt? Sitze da jetzt seit 2 Stunden dran aber finde keine Lösung. Hier mein bisheriger Stand: http://www.jogibaeruniverse.de/kolobok/dirindex.php

Samstag, 28. Mai 2011, 15:24

Tjo, anonyme Funktionen gehen erst ab PHP 5.3.0. Allerdings gibt es für PHP 5.2.x und älter meines Wissens keine Updates mehr (was möglicher-, aber nicht notwendigerweise heißt, dass es auch in Linux-Distributionen keine Patches mehr gibt). Selbst im aktuell stabilen Debian-Release ist bereits 5.3.3 enthalten. Von "recht aktuell" kann da eigentlich eher nicht die Rede sein. Tipp: Einfach mal den Support anrufen, ob die das Updaten oder dich auf 'nen aktuelleren Server schieben können.

Man könnte nun die anonymen in eigenständige Funktionen auslagern und nur deren Namen als Callback-Argumente übergeben. Wäre 'ne Übung für dich, wenn du willst ;)

Was für ein Layout genau möchtest du? Sowas wie in der von mir verlinkten Galerie, d.h. alles nebeneinander soweit in der Breite Platz ist, dann Umbruch? Brauchst du wirklich Tabellen, und wieso drei davon? Sind die Bilder irgendwie gruppiert?

Samstag, 28. Mai 2011, 16:24

[...]
Sowas wie in der von mir verlinkten Galerie, d.h. alles nebeneinander soweit in der Breite Platz ist, dann Umbruch? Brauchst du wirklich Tabellen, und wieso drei davon? Sind die Bilder irgendwie gruppiert?


Ja genau, also die Idee mit unterschiedlichen Verzeichnissen habe ich verworfen, brauch ich eigentlich nicht wirklich. So wie deine Galerie trifft es sehr gut, perfekt wäre dabei natürlich noch eine Sortierung nach Bildgröße, das wäre echt genial. 8o Ich werde erstmal versuche php 5.3.3 zu bekommen, schätze es ist auch erst dann sinnvoll mich anhand deines Galerie Beispiels ein entsprechendes Script zusammen zu basteln.