はい、URLで並べ替え列と方向を渡します。
$type = 'new'; // default order
$cols = array('old', 'new', 'worst'); // array with possible options columns, to prevent SQL injection
if (in_array($_GET['type'], $cols) {
$type = $_GET['type'];
}
$order = (strtolower($_GET['order']) == 'asc')?'ASC':'DESC'; // again - to prevent bad data
$sql = "SELECT * FROM comments ORDER BY {$type} {$order}, time DESC LIMIT $offset, $rowsperpage";
クエリが異なる場合は、switch()
ステートメントを使用し、注文の種類ごとにクエリを変更します。
// use the same order as before
switch ($_GET['type']):
case 'old':
$sql = " ... ";
break;
// more options
default:
// default can be used for the most common option, for example when you first enter the page with no type argument in the URL
break;
もう1つ-URLを生成するには、これを使用できます。
$cols = array('old', 'new', 'worst'); // you can make this array a config variable
$order = array('asc', 'desc');
foreach ($cols as $col) {
foreach ($order as $ord) {
echo "<a href='index.php?type={$col}&order={$ord}'>".ucwords($col). ' ' . ucwords($ord)"</a>";
}
}
これにより、すべてのタイプとすべての可能な注文が印刷されます。あなたはこれをいじくり回すべきです、あなたはいくつかのきちんとした、ダイナミックなことをすることができます。