| Autor |
Nachricht |
synni
Dabei seit: 31.07.2003
Ort: siegburg
Alter: 22
Geschlecht:
|
Verfasst Fr 29.06.2007 10:20
Titel [PHP] Verzechnis auslesen + alphabetisch sortieren |
 |
|
Moin zusammen,
ich habe ien script geschrieben, dass mir ein bestimmtes verzeichnis, in dem listen liegen ausliest, nach dem auslesen werden download-links erzeugt.
| Code: |
<?php
$i=0;
$niederlassung = $_COOKIE["niederlassung"];
$pfad="data/sub/en/";
$verz=opendir ($pfad);
while ($file=readdir($verz))
{
if (filetype($pfad.$file)!="dir")
{
$i++;
$dateiname = explode(".",$file);
$dateinameteil = $dateiname[0];
echo '<a href="'.$pfad.$file.'" target="_blank">
<span class="pwd">'.$dateinameteil.'
</span></a><br>';
}
}
closedir($verz);
if ($i==0)
{
echo '
<span style="font-size:9px;font-style:italic">
Currently there are no special documents for your subsidiary available.
</span>';
}
?>
|
mit readdir() bekomme ich die einträge aber nicht von a-z sortiert sondern "zufällig" - hat jemand eine idee, wie ich die einträge am besten alphabetisch sortiert ausgeben kann?
greetings
|
|
| |
|
 |
Pixelpole
MGI-Loser 2008
Dabei seit: 25.10.2004
Ort: augusta treverorum
Alter: 22
Geschlecht:
|
Verfasst Fr 29.06.2007 10:23
Titel
|
 |
|
baller dir alles in ein array und jag sort() drüber
//PS: wenn du den dateinamen ohne erweiterung willst nutze die funktion basename
deine funktion fluppt nämlich nich mehr richtig wenn du nen zusätzlichen punkt im dateinamen hast
Zuletzt bearbeitet von Pixelpole am Fr 29.06.2007 10:26, insgesamt 1-mal bearbeitet
|
|
| |
|
 |
Kraat
Dabei seit: 05.10.2006
Ort: Köln
Alter: 27
Geschlecht:
|
|
| |
|
 |
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 31
Geschlecht:
|
Verfasst Fr 29.06.2007 11:21
Titel
|
 |
|
| Zitat: | | dass mir ein bestimmtes verzeichnis [...] ausliest |
So viel Mühe hättest du dir allerdings nicht machen müssen.
Statt opendir()/readdir()/Schleife/closedir() hättest du auch glob() einsetzen können.
| Zitat: | | nach dem auslesen werden download-links erzeugt. |
Nein. Die Dateien werden verlinkt, aber es werden keine "Download-Links" erzeugt.
Das sind ganz normale Links - mit einem target="_blank".
Das mit dem neuen Fenster finde ich ganz schlimm, wenn es darum geht, Files runterzuladen.
Ziemlich nervige Sache.
Ich überlasse es normalerweise immer dem User, ob er ein Dokument im neuen Fenster, neuen Tab oder gleichem Fenster/Tab öffnen will.
Aber warum beim Download ein neues Fenster? Das führt doch immer zu einem leeren neuen Tab/Fenster...
Naja und wie gesagt: Es ist kein Download-Link. Die Datei wird nur dann zum Download geboten, wenn ein Browser nichts mit dem Content-Type der Datei anfangen kann.
Ich würde in so einem Fall mit header() arbeiten und echte Download-Links erstellen. (Wie du das genau machst, findest du in den Kommentaren zu der Funktion, wenn es nicht direkt in der Beschreibung steht.)
|
|
| |
|
 |
synni
Dabei seit: 31.07.2003
Ort: siegburg
Alter: 22
Geschlecht:
|
Verfasst Fr 29.06.2007 11:25
Titel
|
 |
|
vielen dank schonmal für die schnelle hilfe!
das script sieht jetzt so aus:
| Code: |
<?php
$i=0;
$niederlassung = $_COOKIE["niederlassung"];
$pfad="data/sub/en/";
$verz=opendir ($pfad);
while ($file=readdir($verz))
{
if (filetype($pfad.$file)!="dir")
{
$i++;
$dateiname = explode(".",$file);
$dateinameteil = $dateiname[0];
$array_liste[] = array('<a href="'.$pfad.$file.'" target="_blank">
<span class="pwd">'.$dateinameteil.'</span></a><br>
');
}
}
closedir($verz);
sort($array_liste);
print_r ($array_liste);
if ($i==0)
{
echo '<span style="font-size:9px;font-style:italic">
Currently there are no special documents for your subsidiary available.
</span>';
}
?>
|
die ausgabe sieht so aus:
| Code: |
...
Array ( [0] => Array ( [0] => Automated Expense Claim Memo
) [1] => Array ( [0] => Company Car Policy
) [2] => Array ( [0] => Expense Guidelines
...
|
Die Verlinkung und Sortierung klappt perfekt. Wie kann ich die Ausgabe denn noch beeinflussen, sodass das "...Array (0.." wegfällt?
//edit @rob: danke für die ausführiche erklärung - ich denke das umständliche kommt zustande, weil ich noch nicht so weit mit php bin. ich werde deine variante auch mal probieren.
Zuletzt bearbeitet von synni am Fr 29.06.2007 11:33, insgesamt 1-mal bearbeitet
|
|
| |
|
 |
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 31
Geschlecht:
|
Verfasst Sa 30.06.2007 20:14
Titel
|
 |
|
| Zitat: | | Wie kann ich die Ausgabe denn noch beeinflussen, sodass das "...Array (0.." wegfällt? |
Indem du den Aufruf von print_r() weg läßt.
Warum hast du das in dein Script eingebaut?
Und was soll folgende Zeile bewirken?
| Code: | | $niederlassung = $_COOKIE["niederlassung"]; |
Kommt im weiteren Script überhaupt nicht vor...
| Zitat: | | ich denke das umständliche kommt zustande, weil ich noch nicht so weit mit php bin. ich werde deine variante auch mal probieren. |
Ja, mit glob() wäre dein Code bei weitem kürzer.
Das Prinzip, wie es funktioniert:
| Code: | <?php
foreach ( glob("*") as $filename ) {
echo "<a href=\"$filename\" target=\"_blank\">$filename</a><br>\n";
}
?> |
Und natürlich kannst du den Krams dann auch in einem Array speichern und dieses dann sortieren.
glob() selbst gibt dir die Daten bereits in einem Array zurück:
| Code: | | $array = glob("*"); |
Der Code ist kürzer, als deine Version, wie du siehst...
Kein opendir(), kein readdir(), keine Schleife. Du bekommst gleich dein Array.
Und eigentlich müßte glob() den Krams auch schon sortiert rausgeben...
Wenn man die Sortierung nicht will, muß man das explizit mit dem Parameter GLOB_NOSORT sagen.
Also: glob( "*", GLOB_NOSORT );
Dann bekommst du die Reihenfolge, wie die Files im Directory liegen.
Und wenn du nur bestimmte Files haben willst, dann teilst du das glob() halt über den ersten Parameter mit.
Ich habe dort jetzt einen Stern rein gesetzt, damit alle Files ausgegeben werden.
Wenn du z.B. nur Textfiles haben willst, dann schreibst du:
glob( "*.txt" );
|
|
| |
|
 |
| |
|
 |
| Ähnliche Themen |
PHP: Textdatei auslesen und sortieren, wie?
[php] liste sortieren
[PHP] Nach Namen sortieren
Liste mit PHP sortieren / Anfangseintrag bestimmen?
[php] Wie kann ich PDFs auslesen?
[PHP] Verzeichnis auslesen?
|
 |