Ankündigung

Einklappen
Keine Ankündigung bisher.

dynamische Tabelle sortieren

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

  • dynamische Tabelle sortieren

    Hi all,

    Ja ich habe schon gesucht, auch bei google

    Meine Frage. Ich habe in einer .txt Datei eine Liste angelegt, die mein php skript ausliest und mir als Tabelle in zwei Zeilen pro Spalte (Name plus Punkte) anzeigt.
    Wie kann ich jetzt die Tabelle gleich nach den Punkten sortieren lassen? (Natürlich inklusive dem dazugehörigen Namen)

    mein skript:
    PHP-Code:
    <HTML>
    <HEAD>
     <TITLE>Downloadliste</TITLE>
    </HEAD>
    <BODY bgcolor="#FFFFFF">
    <TABLE width="680" border="1" cellpadding="2" cellspacing="0">
     <TR>
      <TD width="30%">Datei</TD>
      <TD width="70%">Beschreibung</TD>
     </TR><?php
    $datei 
    fopen("liste.txt""r") ;
    while (!
    feof($datei)) {
     
    $zeile fgets($datei512) ;
     
    $eintrag explode("#"trim($zeile)) ;
    // Auslesen jetzt abgeschlossen,
    // es folgt das Einsetzen in die Tabelle
    ?>
     <TR>
      <TD><?php echo $eintrag[0]; ?></TD>
      <TD><?php echo $eintrag[1]; ?></TD>
     </TR>
    <?php
    // Ende der while-Schleife
    fclose($datei) ;?>
    </TABLE>
    </BODY>
    </HTML>
    Recht vielen Dank für eure Hilfe


  • #2
    Beim Auslesen der .txt Datei kannst du die Werte in ein 2dimensionales Array schreiben und dann selbst eine Sortierfunktion schreiben oder mal die vielen Array-Sortierfunktionen von PHP durchgucken, ob das was passendes findest.

    Kommentar


    • #3
      Und die vielen Array-Sortierfunctionen findest Du bei PHP: Arrays - Manual
      Die haben alle irgendwo sort im Namen, krsort, natcasesort etc pp

      Kommentar


      • #4
        Ok, und wie kriege ich die Daten einer .txt Datei in ein mehrdimensionales array?

        Danke

        Kommentar


        • #5
          Wie sind die Daten denn in der .txt gespeichert? Du liest die Daten ja Zeilenweise aus der .txt Datei und explodest sie dann bei #. Dann hast du ein Array $eintrag mit 2 Elementen. Du machst dann halt ganz am Anfang ein zweidimensionales Array und einen Counter, den du nach jedem Auslesen erhöhst. Das Ganze sieht dann etwa so aus:
          PHP-Code:
          <?php

          $datei 
          fopen("liste.txt""r") ;
          $count 0;
          while (!
          feof($datei)) {
              
          $zeile fgets($datei512) ;
              
          $eintrag explode("#"trim($zeile));
              
          $gesamt[$count][0] = $eintrag[0];
              
          $gesamt[$count][1] = $eintrag[1];
              
          // oder gleich $gesamt[$count] = $eintrag;
              
          ++$count;
          }
          fclose($datei);

          ?>

          Danach stehen alle Information im Array $gesamt und du kannst eine Sortierfunktion benutzen und danach dann über foreach oder wieder ne while-Schleife das $gesamt-Array durchlaufen und als Tabelle ausgeben.

          Kommentar


          • #6
            wofür steht das ++count ???

            Aber danke schon mal für die antwort.

            Kommentar


            • #7
              ++$count ist (praktisch) das gleiche wie $count++ oder $count += 1 oder $count = $count + 1, sprich eine Inkrementierung des Wertes der Variable $count um 1.

              Kommentar


              • #8
                ok, ich bin wohl zu doof dafür. Vielleicht hat jemand Zeit und Lust mir das was ich brauche zu schreiben, mit Erklärung damit ich es verstehe. (ich weiß, das klingt jetzt als wäre ich zu faul oder so, aber ich komme echt nicht weiter. Ich suche mich jetzt seit drei Tagen durch google und alle möglichen php-foren)
                Ich habe eine Rangliste, die sich jede Woche ändert. Die Daten der Rangliste will ich in einer txt-Datei speichern, weil ich mit mysql keine Erfahrung habe. Ich möchte das sich php die Daten aus der Datei nimmt (der Aufbau der Datei ist eigentlich egal, ich dachte an Name;dann die Ranglistenpunkte. Und nun soll eine Tabelle erstellt werden die absteigend sortiert wird, wo natürlich noch immer vorne die Platzierung steht, in der nächsten Spalte der Name, und dann die Punkte.
                Wie gesagt, für mich ist das irgendwie zu hoch. Für Hilfe wäre ich sehr dankbar.

                MfG

                Kommentar


                • #9
                  Poste mal hier, was du bisher versucht hast und wo es genau Probleme gibt bzw wofür du zu doof bist. Ich habe dir ja schon einen Teil des Scripts geschrieben. Dass ich dir alles schreibe, bringt dir nichts und ich habe keine Zeit dafür....

                  Kommentar


                  • #10
                    Wenn ich dich richtig verstanden habe sollte dir PHP: sort - Manual weiterhelfen.

                    Kommentar


                    • #11
                      PHP-Code:
                      $eintraege = Array();
                      foreach( 
                      file($dateiname) as $zeile) {
                          
                      $eintraege[] = explode('#'$zeile);
                      }
                      // $eintraege enthaelt jetzt ein mehrdimensionales Array mit 
                      // den Dateiinhalten -- jetzt wird es mit einer Vergleichsfunktion
                      // nach dem Feld [2] sortiert:
                      function vergleich($a$b) {
                          if(
                      $a[2] > $b[2]) {
                              return 
                      1;
                          } elseif(
                      $a[2] < $b[2]) {
                              return -
                      1;
                          }
                          return 
                      0;
                      }
                      // den Funktionsnamen uebergeben wir der Sortierfunktion als String
                      usort($ergebnis"vergleich"); 
                      // $eintraege ist jetzt sortiert: Ausgabe
                      foreach( $eintraege as $eintrag ) {
                          
                      printf('<tr><td>%s</td><td>%s</td><td>%d</td></tr>'
                              
                      $eintrag[0], $eintrag[1], $eintrag[2]);

                      Kommentar


                      • #12
                        sorry vertippt... pls ignore

                        Kommentar

                        Lädt...
                        X