Sorteren op veranderen
Nu wil ik dat als je op 'naam' klikt (url) dat ie dan gaat sorteren op naam, ipv instrument..
het script:
[ledenlijst.php]
<table class="tbl1">
<tr>
<td width="50%" class="tbltop">Naam</td>
<td width="50%" class="tbltop">Instrument</td>
</tr>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql = "SELECT * FROM leden ORDER BY instrument ASC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)){
$naam = htmlspecialchars($rij->naam);
$instrument = htmlspecialchars($rij->instrument);
set_smilies($bericht);
echo "<tr>\n";
echo "<td width='50%'>".$naam."</td>\n";
echo "<td width='50%'>".$instrument."</td>\n";
echo "</tr>\n";
}
?>
$sql = "SELECT * FROM leden ORDER BY instrument ASC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)){
$naam = htmlspecialchars($rij->naam);
$instrument = htmlspecialchars($rij->instrument);
set_smilies($bericht);
echo "<tr>\n";
echo "<td width='50%'>".$naam."</td>\n";
echo "<td width='50%'>".$instrument."</td>\n";
echo "</tr>\n";
}
?>
</table>
Nu moet ik dan 'SELECT * FROM leden ORDER BY instrument ASC' veranderen naar 'SELECT * FROM leden ORDER BY naam ASC', dat begrijp ik, maar hoe kan ik dat doen alleen dmv. op een link te klikken.
Ik zat te denken aan dat instrument vervangen door $order, en dan voor $order de get functie te doen, en dan sort te noemen, uds dat dan de url word ledenlijst.php?sort=naam/instrument.. dan word het bij mij (gebruik de include/get functie) ?p=ledenlijst&sort=instrument/naam
Maar hoe kan dit.. ik ben nog niet zo goed in php, maar het bovenstaande was m'n ideetje, weet alleen niet hoe ik het moet uitvoeren.
[ledenlijst.php]
<table class="tbl1">
<tr>
<td width="50%" class="tbltop"><a class="border" href="index.php?p=ledenlijst&sort=naam">Naam</a></td>
<td width="50%" class="tbltop"><a class="border" href="index.php?p=ledenlijst&sort=instrument">Instrument</a></td>
</tr>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (isset($_GET['sort'])) {
$sort=$_GET['sort'];
} else {
$sort = "instrument"; }
$sql = "SELECT * FROM leden ORDER BY $sort ASC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)){
$naam = htmlspecialchars($rij->naam);
$instrument = htmlspecialchars($rij->instrument);
echo "<tr>\n";
echo "<td width='50%'>".$naam."</td>\n";
echo "<td width='50%'>".$instrument."</td>\n";
echo "</tr>\n";
}
?>
if (isset($_GET['sort'])) {
$sort=$_GET['sort'];
} else {
$sort = "instrument"; }
$sql = "SELECT * FROM leden ORDER BY $sort ASC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)){
$naam = htmlspecialchars($rij->naam);
$instrument = htmlspecialchars($rij->instrument);
echo "<tr>\n";
echo "<td width='50%'>".$naam."</td>\n";
echo "<td width='50%'>".$instrument."</td>\n";
echo "</tr>\n";
}
?>
</table>
Misschien een beetje onzinnig om dit:
if (isset($_GET['sort'])) {
$sort=$_GET['sort'];
} else {
$sort = "instrument"; }
te doen, het kan ook:
SELECT * FROM leden ORDER BY $_GET[sort] ASC
maar dat heeft ook een reden, als je dan naar ?p=ledenlijst gaat, dan krijg je een mysql failure, want dan heb je geen sort opgegeven, en met die andere komt dan automatisch instrument..
Is denk ik wel logisch wat die regel doet :)