kostenloser Webspace werbefrei: lima-city


sort() asort() funktioniert nicht!

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    chsalomon

    chsalomon hat kostenlosen Webspace.

    Irgendwie ist der Wurm drinne ;)
    ich möchte gerne Dateien Sortiert von A-Z oder 1-54...... ausgeben.
    leider funktioniert das nicht. Ich hab nach lösungen gesucht aber hier im Forum gibt es nichts gescheites.

    echo 'var pics'.$i.'=new Array(';
    $handle = opendir(FADER_BASE_PATH.$data['dir']);
    $a = 1;
    while($datei = readdir($handle)){        
    if(!is_dir($datei) && $datei != ".." && $datei != "." && $datei != "index.php" && $datei != "thumb.db"){
    if ($a == 1){
    echo "'".FADER_BASE_PATH.$data['dir'].$datei."'";
    $first_img = FADER_BASE_PATH.$data['dir'].$datei;
    } else{
    echo ", '".FADER_BASE_PATH.$data['dir'].$datei."'";
    }
    $a++; 
    }}
    closedir($handle);
    echo ");\n";


    so sieht derzeit der Teil des Scriptes aus. als Ausgabe erfollgt dann 2 - 1 - 3 und nicht 1 - 2 - 3

    ich hoffe es war verständlich? weis jemand einen rat?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Moin,
    der einfachste Weg um dein Script deinem Wunsch entsprechend
    anzupassen, ist folgender:

    SORT_NATURAL


    Erläuterungen und Beispiele kannst du der Manual entnehmen.
    http://php.net/manual/de/function.sort.php

    MfG
  4. florianbrandstetter

    florianbrandstetter hat kostenlosen Webspace.

    Wie bereits mein Vorposter sagte, schau dich mal in den PHP Manuals um, damit lerne ich PhP am Wochenende für mein Studium.
  5. Autor dieses Themas

    chsalomon

    chsalomon hat kostenlosen Webspace.

    Ja ich Danke euch für die Info!
    Komischerweise funktioniert es nicht....
    Werde das komplette Script noch mal neu schreiben, und dann mal schauen...
  6. Hallo erstmal! :wave:

    probiers doch mal mit:
    scandir()

    Funktioniert ab PHP5.
    http://php.net/manual/de/function.scandir.php
    Alternativen (zB. für PHP 4) sind dort auch aufgeführt.


    Grüße und viel Erfolg!

    Beitrag zuletzt geändert: 31.7.2014 20:19:51 von abi2k7
  7. Hallo,

    bevor hier weiter wild rumspekuliert wird, will ich einmal intervenieren.

    Abgesehen davon, dass das Script nicht sehr lesbar ist, wüsste ich gerne, an welcher Stelle du denn eigentlich sort() oder asort() benutzt? – Denn in deinem Codeschnipsel benutzt du das definitv nicht, somit kann man auf deine Frage auch nicht sinnvoll antworten!

    Alles was dein Script macht ist so etwas ausgeben wie:
    var pics1=new Array('/tmp/1', '/tmp/3', '/tmp/2');


    Du willst also offenbar einen JS-Fetzen ausgeben, der die Ordner sortiert in einem Array enthält. Das sortieren könntest du also auch dem JS überlassen, das wäre auch eine einfache Lösung.

    Außerdem wäre es wahscheinlich schlauer
    var pics = [];
    statt
    var pics = new Array();
    zu benutzen, das hat aber mehr mit den Interna von JS zu tun und ist in dem Beispiel auch unerheblich.

    So um dir jedoch entsprechend eine Anregung zu geben, will ich dir mal unter die Arme greifen und dir ein Beispiel geben, wie ich das Ganze implementieren würde.

    1. Variante, PHP sortiert die Liste
    <?php
    // define $i, $data and FADER_BASE_PATH here
    $files = array();
    $disallowedFiles = array('.', '..', 'index.php', 'thumb.db');
    $handle = opendir(FADER_BASE_PATH . $data['dir']);
    while($file = readdir($handle)){
        if(!is_dir($file) && !in_array($file, $disallowedFiles)){
            $files[] = FADER_BASE_PATH . $data['dir'] . $file;
        }
    }
    closedir($handle);
    sort($files);
    printf(
        "var %s = [\n'%s'\n];\n",
        'pics' . $i,
        implode("',\n'", $files)
    );


    Zur Erklärung, das ist nicht der schönste Code, aber er ist zumindest praktikabel.
    - Zuerst definieren wir uns ein Array, in dem die gefunden Dateinamen zwischen gespeichert werden sollen (Zeile 3).
    - Anschließend definieren wir ein Array, welches eine Liste aller Dateinamen enthält, die wir nicht ausgeben wollen (Zeile 4).
    - Nun öffnen wir einen Zeiger auf den Ordner, den wir auslesen wollen. (Zeile 5)
    - Nun lesen wir in einer Schleife alle Einträge des Ordners ein und speichern diese pro durchlauf in der Variablen $file zwischen. (Zeile 6)
    - Innerhalb der Schleife prüfen wir, dass die Datei kein Ordner ist und nicht in der Liste der verbotenen Dateinamen steht. (Zeile 7)
    - Wenn diese Bedingungen erfüllt sind speichern wir den Dateinamen, inklusive des Pfades, in dem hierfür definierten Array. (Zeile 8)
    - Wenn die Schleife fertig ist schließen wir den Zeiger auf den Ordner um die Resourcen freizugeben. (Zeile 11)
    - Vor der Ausgabe müssen wir nun noch das Array sortieren, damit die Ausgabe auch sortiert ist ;-) (Zeile 12)
    - Danach bauen wir uns die Ausgabe zusammen, dazu habe ich in dem Beispiel die Funktion printf() benutzt, weil ich finde, dass man da besser sehen kann, wie die Ausgabe später aussehen wird.
    + Dazu definieren wir erstmal ein Format, welches angibt, wie die Ausgabe später aussehen soll. Dieses Format enthält ein paar Platzhalter für die Werte (%s). (Zeile 14)
    + Der erste Platzhalter wird mit dem Variablennamen des Arrays ersetzt. (Zeile 15)
    + Und der zweite Platzhalter wird mit der verketteten Liste ersetzt, sodass die Ausgabe korrektes JS ist. (Zeile 16)

    Ich denke das sollte dein Problem erschlagen, lies dir die Idee durch und überlege dir was da passiert.


    Mit freundlichen Grüßen
  8. Autor dieses Themas

    chsalomon

    chsalomon hat kostenlosen Webspace.

    Hallo nemoinho,
    danke für deine ausführliche antwort.
    aber ich hatte ja schon erwähnt, das ich das Problem gelöst habe.
    gutes Beispiel hast du da geschrieben, es gibt mit Sicherheit hier den einen oder anderen, der das script gebrauchen kann ;)

    mfg Christian
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!