Ik ben bezig met een gebruikerslijst en wil makkelijk de sorteer manier van de lijst kunnen wisselen. Standaard op id sorteren, maar ook kunnen kiezen voor naam, geblokkeerd, actief etc

Hoe kan ik dat het beste doen?

Ik heb nu:

<?php
if (isset($_GET['sort']))
{
switch ($_GET['sort'])
{
case 'naam': $sort1 = "SELECT * FROM leden ORDER BY voornaam "; break;
case 'email': $sort1 = "SELECT * FROM leden ORDER BY emailadres"; break;
}
}
else
{
$sort1 = "SELECT * FROM leden";
}
?>

Alleen ik vraag me af of dat de handigste manier is. Hoe doen jullie dit meestal?

Groeten! Cris

edit
typo
SELECT id
FROM table
ORDER BY $_GET['sort']

dan moet je dus wel eventjes [php]mysql_real_escape_string[/php]() oid over $_GET['sort'] halen...
Dit is inderdaad wel heel makkelijk! Bedankt boaz! Handige tip ook van mysql_real_escape_string()!

Greetz, Cris
Tip: Ga niet tig keer een query opstellen wanneer het gaat om een aantal variaties. Verder kun je de toegestane variaties die uit een url komen, in een array zetten ter controle. Dit maakt het onderhoud een stuk eenvoudiger.
<?php
$aSort = array('voornaam', 'emailadres'); // uitbreiden met andere toegestane waardes

if (isset($_GET['sort']) && in_array($_GET['sort'], $aSort))
{
$sSort = 'ORDER BY '.$_GET['sort'].' ASC'; // ASC = oplopend, DESC = aflopend
}
else
{
$sSort = ''; // default waarde, leeg
}
$query = "
SELECT
*
FROM
leden
".$sSort; // slechts 1 query om te onderhouden
?>
Edit: mysql_real_escape_string() is nu niet nodig omdat uitsluitend de waardes in de array zijn toegestaan. SQL-injection is niet mogelijk.

Reageren