webForumDet fria alternativet

sortera en lista

PHP

5 svar · 649 visningar · startad av tanten

Medlem sedan nov. 20051 596 inlägg
Frågan#1

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;
Medlem sedan aug. 2004903 inlägg
#2
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']

Medlem sedan juni 20008 205 inlägg
#3

... 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

Medlem sedan aug. 2004903 inlägg
#4

exakt!

Medlem sedan nov. 20051 596 inlägg
#5

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

Medlem sedan juni 20014 421 inlägg
#6

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. ;)

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)