PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Ausgelesene MySQL-Datensätze filtern (http://www.selfphp.de/forum/showthread.php?t=20364)

neoman 10.10.2008 16:38:47

Ausgelesene MySQL-Datensätze filtern
 
Hallo,

ich habe eine Frage zu PHP. Ich habe eine MySQL-Tabelle, die wird mit PHP ausgelesen. Nun möchte ich wenn ich auf eine Spaltenüberschrift klicke (ist ein Link) das die Daten alphabetisch nach der jeweiligen Spalte neu sortiert werden. Wenn ich nochmal drauf klicke soll sie in die andere Richtung sortiert werden. Und das für jede Spalte.

Hier ist meine PHP-Code, der beinhaltet nur das auslesen aus MySQL in eine HTML Tabelle. Mit den filtern weiß ich kein Ansatz, mir fehlt die Programmierlogik dazu.

PHP-Code:

$db mysql_connect($server$user$passwd);
mysql_select_db($database$db);
$sql 'SELECT * FROM filter';

$result mysql_query($sql$db);

echo 
'<table><tr><td>#</a></td><td>Trainings</td><td>Trainer</td><td>Dauer</td></tr>';
while(
$row mysql_fetch_object($result))
{
    echo 
sprintf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
    
addslashes($row->id),
    
addslashes($row->training),
    
addslashes($row->trainer),
    (int)
$row->dauer
    
);
}
echo 
'</table>'

Ich habe schon sehr lange danach gesucht und hoffe mir kann einer helfen.


MfG neoman

schrubba 10.10.2008 19:23:22

AW: Ausgelesene MySQL-Datensätze filtern
 
Hi neoman,

ich mache das mit verschiedenen DB-Abfragen, also je nachdem welcher Link gewählt wurde, wird eine andere DB-Abfrage per PHP genommen und dann sozusagen per SQL sortiert. Ob es da was in PHP gibt weiß ich nicht, würde in meinen Augen aber auch keinen Sinn machen.

Gruß
schrubba

vt1816 10.10.2008 20:06:03

AW: Ausgelesene MySQL-Datensätze filtern
 
Zitat:

Zitat von neoman (Beitrag 121386)
...

Ich habe schon sehr lange danach gesucht und hoffe mir kann einer helfen.

Die Zauberworte heißen WHERE (zur Erweiterung Deiner Datenbankabfrage) und ASC/DESC (Sortierreihenfolge aufsteigend/absteigend). Die Datenbank sollte die entsprechenden Indexe (Trainings/Trainer/Dauer) besitzen.

neoman 10.10.2008 20:50:42

AW: Ausgelesene MySQL-Datensätze filtern
 
Danke für eure Antworten. SQL selber ist nicht mein Problem, wie man in SQL sortiert weiß ich ja. Mein Problem ist das Programmlogik von PHP.

Sowas was ich suche kannman in phpmyadmin bewundern. Wenn man sich dort den Inhalt einer Tabelle (diese muss gefüllt sein) anschaut, kann man auf die "Überschift" der jeweiligen Spalte klicken und die Inhalte der Tabellenspalte werden neu sortiert, klickt man nochmal drauf werden sie in die andere Richtung sortiert, also einmal ASC und einmal DESC.

Nun weiß ich nicht wie man sowas in PHP programmiert.


MfG neoman

vt1816 10.10.2008 20:58:44

AW: Ausgelesene MySQL-Datensätze filtern
 
Zitat:

Zitat von neoman (Beitrag 121393)
...

Sowas was ich suche kannman in phpmyadmin bewundern. ...

Nun weiß ich nicht wie man sowas in PHP programmiert.

Dann schau Dir doch mal den Code von phpMyAdmin an...

neoman 10.10.2008 21:07:45

AW: Ausgelesene MySQL-Datensätze filtern
 
Ok als Programmieranfänger in phpmyadmin nachschauen, was schon an einer professionellen Software gleichtund dann dort was ruaszupicken ist schon fast unmöglich. Ich werde es trotzdem versuchen.

Ich dachte nur mir könnte jemand mit meinen Code weiterhelfen, dürfte für einen erfahrenen Programmierer kein Thema sein...


MfG neoman

schrubba 10.10.2008 21:19:13

AW: Ausgelesene MySQL-Datensätze filtern
 
Also meines Erachtens nach brauchst Du am PHP Code bzw. an der Schleife gar nix ändern, sondern lediglich entsprechende DB-Abfragen entwerfen oder den WHERE-Teil im SQL per Variable anpassen, je nachdem wie sortiert werden soll. Letzteres wertest Du per Link-Request aus.

vt1816 10.10.2008 21:23:51

AW: Ausgelesene MySQL-Datensätze filtern
 
Hier wird Dir gerne geholfen - jedoch wird Dir hier keinen Deinen Code schreiben. Und was würde es Dir bringen, wenn jemand Dir den Code schreibt, Du damit aber nicht klar kommst?

knight1 10.10.2008 22:00:44

AW: Ausgelesene MySQL-Datensätze filtern
 
Hi,
also mein Denkansatz wäre folgender:
Du übergibts per Adresszeile den Feldnamen und die Sortierrichtung.

Als Code würde das dann in etwa so aussehen:

PHP-Code:

#Angenommen wir übergeben folgendes http://www.example.com?field_name=test&order_dir=ASC
#Das würde dann als $_GET['field_name'] und $_GET['order_dir'] im Script zur Verfügung stehen
#Prüfung der übergebenen $_GET-Array-Elemente (Stichwort: SQL-Injection)
if ()
{}
.
.
.
#Prüfung ende

#Wenn dann klar ist dass die Sachen i.O. sind bauen wir das SQL-Statement
§sql_statement "SELECT * FROM `table` WHERE `field` = 'irgendeine Bedingung' ORDER BY $_GET['field_name'] $_GET['order_dir']"


Ich hoffe, dass ich helfen konnte.


Kai aka Knight1

neoman 13.10.2008 16:49:39

AW: Ausgelesene MySQL-Datensätze filtern
 
So, habe es nun nach langer Überlegung hinbekommen. Für alle die es interessiert, ich habe es mit einer switch() case Anweisung gelöst.


Danke für eure Hilfe....


MfG neoman


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:56:12 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.