Jag har en tabell fylld med data hämtad från en mysql-databas. Nu vill jag att besökaren själv skall kunna välja i vilken ordning posterna skall sorteras efter genom att klicka på kolumnens rubrik.
Så här ser det ut nu:
<?
// Hämta personer
?>
<table>
<tr>
<td>Förnamn</td><td>Efternamn</td><td>Ålder</td>
</tr>
<?
$sql = mysql_query("
SELECT fNamn, eNamn, alder
FROM personer
ORDER BY fName
");
while ($r = mysql_fetch_array($sql)) {
?>
<tr>
<td><?=$r['fNamn']?></td><td><?=$r['eNamn']?></td><td><?=$r['alder']?></td>
</tr>
<?
}
?>
</table>
Rubrikerna är alltså i detta fall "Förnamn", "Efternamn" och "Ålder". Klickar besökaren på "Efternamn" så skall alltså posterna sorteras efter personens efternamn A-Ö, klickar han/hon sedan på samma rubrik igen så sorteras de enligt Ö-A.
"Aktuell" kolumn skall markeras med en bild framför rubriken. Vid A-Ö skall "bild.gif" visas och Ö-A "bild2.gif".
Jag kan inte komma på hur jag skall göra och skulle därför vara oerhört tacksam ifall ngn av er kan hjälpa mig! Tack! :)
Vet faktiskt inte vad det kallas.
om det som står mellan = och ? är sant tilldelas varaiblen $sort det som står mellan ? och : är det falskt får variablen $sort värdet mellan : och ;
variablen $sort får värdet av $_GET['sort'] om isset($_GET['sort']) är sant och "fNamn" om det är falskt.
$variabel = (boolskt värde) ? (värder om det är sant) : (värde om det är falskt);
Tack för ditt tips The_Hulk. Det var dock ett antal fel i din kod, slarvfel förmodar jag. Här kommer en korrigerad version av din kod:
<?
$order = isset($_GET['order']) ? $_GET['order'] : "fNamn";
$orderad = isset($_GET['order']) ? $_GET['orderad'] : "asc";
if ($order != "fName" && $order != "lName" && $order != "born")
{
$order = "fName";
}
if ($orderad != "asc" && $orderad != "desc")
{
$orderad = "asc";
}
?>
<table>
<tr>
<td><a href="?order=fName&orderad=<?=$orderad=="asc"?"desc":"asc"?>">Förnamn</a></td>
<td><a href="?order=lName&orderad=<?=$orderad=="asc"?"desc":"asc"?>">Efternamn</a></td>
<td><a href="?order=born&orderad=<?=$orderad=="asc"?"desc":"asc"?>">Ålder</a></td>
</tr>
<?
$sql = mysql_query("
SELECT fName, lName, born
FROM person
ORDER BY $order $orderad
") or die(mysql_error());
while ($r = mysql_fetch_array($sql)) {
?>
<tr>
<td><?=$r['fName']?></td><td><?=$r['lName']?></td><td><?=$r['born']?></td>
</tr>
<?
}
?>
</table>
Passade även på att ändra till den faktiska databas-queryn. Detta fungerar ju bra, förutom att den ändrar desc/asc-ordningen när jag klickar på en ny kolumn-rubrik...det ska den ju inte göra, endast om jag klickar på samma rubrik två gånger.
Dessutom:
learn skrev:
"Aktuell" kolumn skall markeras med en bild framför rubriken. Vid A-Ö skall "bild.gif" visas och Ö-A "bild2.gif".
Tänkte att om du fick hjälp en bit kanske du kunde göra resten själv.
Felen berodde nog på slarv, testade inte koden utan skrev det bara rakt ner i WF.
har inte testat detta heller men hoppas att det ska fungera.