SELECT name, colour, smak FROM fruit ORDER BY $sort
Du kan sortera det skriver ut genom att ändra innehållet i $sort...
exempelvis så skickar du <a href="?sort=name">Sortera</a> och tar emot det och sparar det $sort=$_GET['sort']
5 svar · 649 visningar · startad av tanten
Om man har en tabell på sidan där man t.ex har ett gäng författare, med olika genre, utgivningsår, m.m. som skrivs ut med senast inlagda i databasen
Hur gör man då bäst för att användaren sedan ska kunna sortera listan på flera olika sätt?
Har sett några exempel med javascript, men det måste väl gå på annat sätt?
Jag har börjat med ett litet experiment med frukter och då ser det ut så här...
Tanken är att användaren ska kunna trycka på någon av <th> men jag vet inte alls om jag är på rätt spår.
$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'lösenord');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, 1);
$sth = $db->prepare("SELECT name, colour, smak FROM fruit"
//vid annat så är det antingen
//ORDER BY colour
//ORDER BY smak
);
$sth->execute();
$result = $sth->fetchAll();
echo <<<FRUKT
<table>
<tr>
<th><a href="namn">Frukt</a></th>
<th><a href="colour">Färg</a></th>
<th><a href="smak">Smak</a></th>
</tr>
FRUKT;
foreach ( $result as $frukt ):
echo <<<RADER
<tr>
<td>{$frukt['name']}</td>
<td>{$frukt['colour']}</td>
<td>{$frukt['smak']}</td>
<tr>
RADER;
endforeach;
echo <<<SLUT
</table>
SLUT;
SELECT name, colour, smak FROM fruit ORDER BY $sort
Du kan sortera det skriver ut genom att ändra innehållet i $sort...
exempelvis så skickar du <a href="?sort=name">Sortera</a> och tar emot det och sparar det $sort=$_GET['sort']
... och kom ihåg att kolla innehållet i sort så att inte nån fipplar med länken och går in med sidan.php?sort=name; drop database test
exakt!
Oh tack så jättemycket... :bire Så lätt trodde jag inte det skulle vara.
Säkerheten har jag inte gjort något åt lokalt... får bli senare
spango skrev:
... och kom ihåg att kolla innehållet i sort så att inte nån fipplar med länken och går in med sidan.php?sort=name; drop database test
Fast det spelar ju ingen större roll i detta fallet iom att hon kör med prepared statements. Dessutom så kan du inte exekevera multipla frågor via php om du inte utryckligen begär det via: mysqli-multi-query.
Fast man ska ju alltid ha koll på sin indata. ;)