Sortierfunktion mit link

Tweety!
hallo zusammen

bin leider erst neu in der php szene und stehe vor einem problem das mich schon länger beschäftigt

ich möchte eine datei ausgeben mit einer überschriftszeile bei der man mittels anklicken die zeilen sortieren kann.

beim ersten klick absteigend und dann beim wiederholten klick aufsteigend

wenn einer rat weiss bitte um hilfe

hier der code


php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
    

<html>

<head>

<title>Filehandling</title>

</head>

<body>


<?php


require_once('function.php');

$personen getarrayfromfile();

define('SORT'$_GET['sortierung']);  //um bei strcmp constante zu verwenden


$content .= '<table align ="center" border="1"><tr bgcolor = "blue">'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">ID</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">Geschlecht</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">Vorname</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">Nachname</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">Gasse</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">Alter</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">PLZ</a></td>'.
        '<td><a href="'.$PHP_SELF.'?sortierung=2">Ort</a></td></tr>';

   foreach ($personen as $nummer => $daten)


    {  

    $content .= '<tr>';        

        foreach ($daten as $posten)

        {

            $content .= '<td>'.$posten.'</td>';

        }

    $content .= '</tr>';    

    }

$content .= '</table>';    

print ($content);

usort ($personen,"sortfunc");              

function sortfunc($a$b)
{
return strcmp($a[SORT], $b[SORT]);
}

?>

</body>
</html>



p.s. was ich nicht ganz verstehe ist die anfügung von ?sortierung=2 (diesen tipp hab ich von nem freund bekommen)

lg Tweety!
daHooligan
also ich hab so was ähnliche gemacht ich ab allerdings die daten aus ner SQL-DB sortiert:

kann sein, dass ein paar sachen net reingehören, ich habs einfach mal aus meinem Quelltext rauskopiert
php:
1:
2:
3:
4:
5:
<?php if(!isset($sort))            
{
$sortmysql_field_name($erg0)
}                    
$bool=mysql_free_result($erg); ?>


kleine erläuterung:
$sort wird übergeben (egal ob per Formular oder per Link, ich hol' es weiter oben mit
php:
1:
<?php $sort=$_GET['sort']; if(!isset($sort)){$sort=$_POST['sort'];} ?>
.
php:
1:
<?php $sortmysql_field_name($erg0?>
regelt nur, dass es nach der nullten Spalte der SQL-DB sortiert wird, könnte genauso gut die erste sein, dann bestünde allerdings die Gefahr, dass es nur eine Spalte gibt.

Hoffe mal, dass dir das soweit hilft. Bei Problemen einfach nachfragen.

MfG

daHool
Tweety!
danke für die hilfe

mein prog funkt ja soweit

es sind 8 spalten die mit einer titelleiste vorhanden sind

sry hab mich vielleicht nicht ganz korrekt ausgedrückt, weil mein prob liegt darin, dass wenn ich auf eine spaltenüberschrift (zb. vorname) klicke soll sich die ganze tabelle nach den vornamen aufsteigend sortieren, und bei nochmaligen klick auf vornamen soll sich die tabelle absteigend nach vornamen sortieren (die zeilen sollen jedoch sich alle richtig mitverändern bei der sortierung)

also sind bei mir die daten vorhanden, die links auch, jedoch glaub ich dass mit der übergabe vom link dieser teil ==> ........?sortierung=2..... etwas nicht stimmt

ich glaub dein code von der sql sortierung würde ja nur eine spalte sortieren und hilft mit leider nicht viel

kann auch sein dass ich einfach auch nur zu kompliziert denke oder nicht verstehe

trotzdem danke für deine hilfe
daHooligan
das wird mit SQL nur dann nach der ersten Spalte sortiert, wenn nix angegeben ist, wonach sortiert werden soll (z.B. biem ersten Seitenaufruf, wenn noch nix gesetzt ist)
Dadurch dass das SORT by in der Abfrage kommt, bleiben alle Datensätze "zusammen".
ich kann dir evtl. mal ne version zum anschauen geben.....


MfG

daHool
tkshorty
also der einfachste weg finde ich is wenn du das direkt in der abfrage regelst
mit order by
Tweety!
jo wenn ichs mit sql machen würde

aber das ist rein nur php
daHooligan
hab mal ein bissel gegoogelt und dabei das hier gefunden (erster Treffer):

http://www.planetcoding.net/thread/posti...anetcoding.html
Tweety!
cool, big thx, hab anscheinend immer das falsche gesucht, hab nämlich immer nur nach usort gesucht
Hanfling
Mh, nimm aber einen Sortieralgorithmus mit einer linearen oder vielleicht sogar mit einer logaritmischen Laufzeitkomplexität...