PHP Tabelle Sortieren

borklaser

Cadet 3rd Year
Registriert
Dez. 2013
Beiträge
39
Hey, ich hoffe mir kann hier jemand das schnell machen oder mir helfen.
Ich habe eine MySQL Tabelle in einer Tabelle auslesen lassen. Ich möchste aber gerne das man die Tabelle sortieren kann also auf und ab. Das oben hinter jedem Spaltennamen 2 Pfeile sind die auf und absortieren. Und dann noch das sich der Link dadurch ändert habe ich mal gesehen das dann oben im link desc oder so steht je nachdem was man soriert hat hier ist mein code:

Code:
<!DOCTYPE HTML>

<html>
<head>
         <title>Test Homepage</title>
         <meta charset="utf-8"/>
</head>

<body>

    <?php

    mysql_connect("localhost", "name", "passwort") or die(mysql_error());
    mysql_select_db("testpage500_1") or die(mysql_error());

    $sql = "SELECT * FROM PPVs";
    $query = mysql_query($sql) or die(mysql_error());

    echo '<table>';
        echo '<tr>';
            echo '<th>Veranstaltung</th>';
            echo '<th>Datum</th>';
            echo '<th>Art</th>';
            echo '<th>Buyrate</th>';
            echo '<th>Matches</th>';
        echo '</tr>';
        while($fetch = mysql_fetch_assoc($query))  {
            echo '<tr>';
                echo '<td>' . $fetch['ppvname'] . '</td>';
                echo '<td>' . $fetch['datum'] . '</td>';
                echo '<td>' . $fetch['art'] . '</td>';
                echo '<td>' . $fetch['buyrate'] . '</td>';
                echo '<td>' . $fetch['matches'] . '</td>';
            echo '</tr>';
        }
    echo '</table>';



    mysql_close();

    ?>





</body>
</html>

Hoffe mir kann da jemand helfen danke schonmal :)
 
Hi,

dafür brauchst du JavaScript und kein PHP. Einfach mal nach "Javascript sort table" suchen, du findest sicher genug Beispiele.

VG,
Mad
 
Bin echt ein Anfänger hat nicht jemand einen Link wo ich einfach das kopieren & einfügen muss und evtl etwas anpassen muss? Am besten ohne jQuery weil damit komt ich erst recht nicht klar.

Das hier z.B. verstehe ich etwas aber passt das in meine Tabelle? Ne oder? Weil da werden die Tabelleninhalte aus ner Datei genommen..
http://webbausteine.de/blog/php/html-tabelle-sortieren.php
 
Du machst quasi sowas wie:
Code:
<th>Veranstaltung <a href="...php?spalte=veranstalung&sort=desc>Absteigend</a><a href="...php?spalte=veranstalung&sort=asc>Aufsteigend</a></th>;

Und dann beim SELECT:
Code:
$sortieren = $_GET['sort'];
$spalte = $_GET['spalte'];
$sql = "SELECT * FROM PPVs ORDER BY" . $spalte . $sortieren;
Natürlich die GETs vorher noch prüfen, ob da was böses drinsteht.
 
Mach das über JavaScript. Die PHP-Variante erzeugt unnötig Traffic und ist vergleichsweise langsam. Ein ORDER BY würde ich trotzdem einfügen, dann brauchst du über JS nur noch die Reihenfolgen tauschen und nichts mehr sortieren.
 
Ich bekomme das echt nicht in :(
Verstehe kaum was habe auch noch selber gegooglet. Habe aber noch das hier gefunden das verstehe ich etwas aber WIE verwende ich dasfür meine Tabelle oben geht das überhaupt? Weil da werden die daten aus ner datei eingelesen...


Code:
 <!DOCTYPE html>
<html>
 <head>
  <title>HTML-Tabelle sortieren</title>

  <style>
  body, a {
   font-family: Verdana, Arial, Sans-Serif;
   font-size: 14px;
  } 
   th a {
    text-decoration: None; color: #FF0000;
  }
  </style>

 </head>
<body>

<table border="1">
 <tr style="background: #E5E5E5;">
  <th>
   Name
   <a href="?spalte=1&amp;sort=asc">&uarr;</a>
   <a href="?spalte=1&amp;sort=desc">&darr;</a>
  </th>
  <th>
   Land
   <a href="?spalte=2&amp;sort=asc">&uarr;</a>
   <a href="?spalte=2&amp;sort=desc">&darr;</a>
  </th>
  <th>
   Alter
   <a href="?spalte=3&amp;sort=asc">&uarr;</a>
   <a href="?spalte=3&amp;sort=desc">&darr;</a>
  </th>
 </tr>

<?php
/* HTML-Tabelle sortieren -
 Webbausteine.de - 08.11.2013 */

$daten = file("daten.txt"); // Daten einlesen

// Auswahl der Spalte
$spaltennummer = isset($_GET["spalte"]) ? $_GET["spalte"] : 1;

// Daten in ein zweites Array kopieren
$schluessel = array();
foreach ($daten as $zaehler => $element) {
 list($spalte[1], $spalte[2], $spalte[3]) = explode(";", $element);
 $schluessel[$zaehler] = array($spalte[$spaltennummer], $zaehler);
}

// Schlüssel sortieren
isset($_GET["sort"]) ? (($_GET["sort"] == "desc") ?
 rsort($schluessel) : sort($schluessel)) : sort($schluessel);

 // Die Daten mit dem sortierten Schlüssel ausgeben
 foreach ($schluessel as $element) {
  list($name, $land, $alter) = explode(";", $daten[$element[1]]);
  echo "<tr><td>" . $name . "</td><td>" . $land . "</td><td>" .
   $alter . "</td></tr>";
}
?>

</table>

</body>
</html>
 
Verstehe dein Problem nicht, das bei http://tablesorter.com/docs/ ist ja wirklich sehr einfach erklärt im Abschnitt "Getting started", inkl wie man jQuery einbindet. Man muss sich auch mal 5 Minuten damit beschäftigen.

Die PHP Sortierungs-Variante erzeugt unnötige Serverlast, ist vergleichsweise langsam und man muss die Eingaben validieren.

Um bei deinem im #1 geposteten Beispiel zu bleiben:

HTML:
<!DOCTYPE HTML>
     
  <html>
  <head>
    <title>Test Homepage</title>
    <meta charset="utf-8"/>
    <script src="/scripts/jquery.js"></script> 
    <script src="/scripts/jquery-tablesorter.js"></script> 
  </head>
     
  <body>
     
   <?php
     
    mysql_connect("localhost", "name", "passwort") or die(mysql_error());
    mysql_select_db("testpage500_1") or die(mysql_error());
     
    $sql = "SELECT * FROM PPVs";
    $query = mysql_query($sql) or die(mysql_error());
     
    echo '<table id="myTable" class="tablesorter">';
    echo '<tr>';
    echo '<th>Veranstaltung</th>';
    echo '<th>Datum</th>';
    echo '<th>Art</th>';
    echo '<th>Buyrate</th>';
    echo '<th>Matches</th>';
    echo '</tr>';
    while($fetch = mysql_fetch_assoc($query)) {
    echo '<tr>';
    echo '<td>' . $fetch['ppvname'] . '</td>';
    echo '<td>' . $fetch['datum'] . '</td>';
    echo '<td>' . $fetch['art'] . '</td>';
    echo '<td>' . $fetch['buyrate'] . '</td>';
    echo '<td>' . $fetch['matches'] . '</td>';
    echo '</tr>';
    }
    echo '</table>';
     
    mysql_close();
    ?>

   <script>
     $(document).ready(function() 
     { 
       $("#myTable").tablesorter(); 
     }); 
   </script>

</body>
</html>

Geändert wurde Zeile 7+8, 21 sowie 43-48.
Natürlich musst Du jquery.js und jquery-tablesorter.js in einen Unterordner "scripts" in deinem Web kopieren damit das klappt.
 
Zuletzt bearbeitet:
Ja habe mir hier: http://tablesorter.com/docs/#Download die jquery.tablesorter.zip runtergeladen und die jquery.tablesorter.js in jquery-tablesorter.js umbenannt und in den scripts ordner gemacht.

Dann auf http://jquery.com/download/#Download_jQuery die Download the compressed, production jQuery 1.10.2 geöffnet test kopiert und in ne datei gemacht, die jquery.js genannt und auch in scripts gemacht.

Aber die Tabelle ist da nur halt ohne sortieren sondern halt einfach nur die Tabelle ohne etwas :O
 
Die Änderung in Zeile 21 und den Codeteil von Zeile und 43 - 48 auch berücksichtigt?
 
Zurück
Oben