• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL Tabelle Filtern mit PHP

Conkuist

Mitglied
Hallo,

Ich habe mit PHP Werte aus einer MySQL Datenbank ausgelesen
und eine Tabelle erstellt
Ich kann die Tabelle auch mit PHP sortieren.
Nun möchte ich diese Sortierung auch dach dem die Seite geladen ist
auch noch nachträglich mit einem Klick auf die Überschrift der Spalten sortieren können
So wie in Excel mit Filter.
Leider sind meine PHP Kenntnisse sehr begrenzt
JavaScript beherrsche ich dagegen einigermaßen

Also kann mir jemand erklären wie ich vorgehen muss um das gewünschte Ergebnis zu erhalte.
 
Werbung:
Moin,
nachdem die Seite geladen ist, lässt sich das ganze nur Clientseitig sortieren.
Dazu bietet sich zb. das jQuery Plugin Tablesorter an: http://tablesorter.com/docs/

Serverseitig, das heißt mit PHP, geht das nur durch ein neuladen der Seite. In dem Fall würde ich aber MySQL das sortieren lassen.

MfG
 
Werbung:
Baue dir je Spalte einen Link mit dem Sort-Flag, z.B.

index.php?sort=spalte1
index.php?sort=spalte2

Im Script überprüfst du dann, ob der Parameter gesetzt ist und falls ja hängst du beim Select ein order by mit dieser Spalte dran.
 
Danke für deine Antwort
kennst du vielleicht eine Seite wo das näher erklärt wird ?
komm noch nicht so ganz mit wie du das gemeint hast.

<?php
mysql_connect("localhost","root","");
mysql_select_db("test");
if(???=="index.php?sort=spalte2")
{$abfrage="SELECT spalte1, spalte2, spalte3, FROM tabelle ORDER BY spalte2"}
else
{$abfrage="SELECT spalte1, spalte2 FROM tabelle ORDER BY spalte1"}
$ergebnis = mysql_query($abfrage);
?><table><?php
while($row = mysql_fetch_object($ergebnis))
{
?>
<tr>
<td><?php echo $row->spalte1; ?></td>
<td><?php echo $row->spalte2; ?></td>
<?php
}
?>
</table>
 
Zuletzt bearbeitet:
PHP:
<?php
  mysql_connect("localhost","root","");
  mysql_select_db("test");

  $order = isset($_GET['sort']) ? "order by `" . mysql_real_escape_string($_GET['sort']) . "`" : "";

  $query  ="SELECT
              `spalte1`,
              `spalte2`,
              `spalte3`
             FROM
               `tabelle`
             $order";

  $result = mysql_query($query)
    or die("MySQL-Error: " . mysql_error());

  echo "<table>\n";

  while($row = mysql_fetch_assoc($result))
    echo "<tr>
           <td>" . $row['spalte1'] . "</td>
           <td>" . $row['spalte2'] . "</td>
           <td>" . $row['spalte3'] . "</td>
          </tr>\n";

echo "</table>
?>

Hinweis: die mysql_*-Funktionen sind veraltet, du solltest auf mysqli_*-Funktionen umsteigen
 
Werbung:
Du hast in deinem Code was vergessen XD

echo "</table>";
?>

aber ansonsten funktioniert der code.

Danke

Wass muss ich verändern wenn ich z.B. nur einträge mit einem bestimmten datum oder Wert anzeigen will und nicht Tabelle ordnen will?
 
Zurück
Oben