Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortierung einbauen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sortierung einbauen

    Hallo zusammen,

    ich habe ein Script, welches aus einer Datei zeilenweise Daten einliest und ausgibt. Leider werden die Daten aber unsortiert ausgegeben. Habt ihr eine Idee, wie ich in das Script noch eine Sortierung einbauen kann. Einfach nur "arsort ($daten)" einzufügen, reicht irgendwie nicht aus. Danke.

    PHP-Code:
    <?php
    // Daten auf mehreren Seiten aufteilen

    // Datei "navigation.php" in ein Array ($daten) einlesen
    // Trennzeichen ist der Zeilenumbruch (CR)
    // Pfad vom root-Ordner aus gesehen
    $daten file($_SERVER['DOCUMENT_ROOT']."/navigation/navigation.php");

    // Wieviel Datensätze sollen pro Seite angezeigt werden
    $daten_pro_seite 9;

    // Überprüfen ob über $_GET["seitenzahl"] eine Seitenzahl gesendet wurde
    $seitenzahl = ((isset($_GET["seitenzahl"])) ? $_GET["seitenzahl"] : 0);

    $fortlaufende_nummer 0// $fortlaufende_nummer auf 0 setzen

    // Die Schleife zeigt jeden X-ten ($daten_pro_seite) Datensatz mit einem Link an
    for ($zaehler 0$zaehler count($daten); $zaehler $zaehler $daten_pro_seite) {
    $fortlaufende_nummer++; // $fortlaufende_nummer erhöhen
    // Mit dem Link wird seitenzahl=$zaehler als $_GET["seitenzahl"] übergeben
    // Anker "#sitenav" setzen, damit beim Klick auf die Seitenzahl wieder zur Navigation gesprungen wird
    echo "<a href=\"?seitenzahl=$zaehler#sitenav\">" .
    // Die aktuelle Seite hervorheben
    (($zaehler == $seitenzahl) ? " [" $fortlaufende_nummer "]" $fortlaufende_nummer) .
    "</a> &nbsp;\n";
    }

    // Die ausgewählten Datensätze in einer Schleife ausgeben
    for ($zaehler $seitenzahl$zaehler < ($seitenzahl $daten_pro_seite); $zaehler++) {
    echo 
    "<p>" . ($zaehler 1) . ". " $daten[$zaehler] . "</p>\n";
    }
    ?>
    Gruß
    phpuserx

  • #2
    PHP: asort - Manual könnte dir vllt weiterhelfen.
    Nach was willst du die Daten sortieren ?
    Welchen Wert, aufsteigend oder absteigen ?

    Warum speicherst du solche Daten nicht in eine Datenbank, da kannste viel einfacher sortieren ?
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Pro Zeile steht in der Datei ein Link. Diese Links hätte ich gern mit arsort sortiert, also absteigend. Aber letztendlich ist es erstmal egal ob auf- oder absteigend. Das kann ich dann leicht ändern.

      Kommentar


      • #4
        Zitat von phpuserx Beitrag anzeigen
        Einfach nur "arsort ($daten)" einzufügen, reicht irgendwie nicht aus.
        Das reicht als Problembeschreibung genauso wenig aus.

        Beschreibe, was du versucht hast; zeige uns, mit welchem Code und auf welchen (Beispiel-)Daten; und erkläre, in wie fern das Ergebnis vom erwarteten abweicht.
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Absteigend, im Sinne vom ABC her oder im Sinne von andersrum wie sie in der Datei sind ?
          Falls du die Reihenfolge umdrehen willst: PHP: array_reverse - Manual

          Arrays sortieren im Überblick: http://de2.php.net/manual/en/array.sorting.php
          Signatur:
          PHP-Code:
          $s '0048656c6c6f20576f726c64';
          while(
          $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

          Kommentar


          • #6
            PHP-Code:
            arsort($daten);
            // Die ausgewählten Datensätze in einer Schleife ausgeben
            for ($zaehler $seitenzahl$zaehler < ($seitenzahl $daten_pro_seite); $zaehler++) {
            echo 
            "<p>" . ($zaehler 1) . ". " $daten[$zaehler] . "</p>\n";

            Ich hatte versucht vor der eigentlichen Ausgabe "arsort($daten);" einzufügen.
            Es bleibt aber alles so unsortiert wie vorher.

            Beispiel: In der navigation.php stehen folgende Zeilen:
            2010_03.php
            2010_01.php
            2010_02.php

            Die Ausgabe erfolgt genau so. Ich hätte aber gern folgendes ausgegeben:

            2010_03.php
            2010_02.php
            2010_01.php

            Hintergrund ist, es handelt sich um Beiträge, die vom Jüngsten zum
            Ältesten sortiert angezeigt werden sollen.

            Kommentar


            • #7
              Einmal mit print_r das ganze ausgeben und hier posten, bitte.

              Wie kann ich einen Beitrag wieder löschen ?
              Signatur:
              PHP-Code:
              $s '0048656c6c6f20576f726c64';
              while(
              $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

              Kommentar


              • #8
                Zitat von phpuserx Beitrag anzeigen
                Ich hatte versucht vor der eigentlichen Ausgabe "arsort($daten);" einzufügen.
                Es bleibt aber alles so unsortiert wie vorher.
                Nein, ganz im Gegenteil - wie ByStones schon sagte, schau's dir mit print_r/var_dump an.


                Das liegt daran, dass arsort die Schlüsselvergabe des Arrays beibehält (steht deutlich im Manual!) - und du mit deiner For-Schleife aber nach wie vor über die Schlüssel in ihrer ursprünglichen Reihenfolge zugreifst.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar

                Lädt...
                X