私は本の情報を含むテーブルを持っており、ユーザーは自分が望むようにテーブルをソートするオプションを持っている必要があります。
3つのオプションがあります。
Author, Title, Edition
それらはすべてASCENDINGまたはDESCENDINGにすることができます。
しかし、その選択には順序はありません。ユーザーは、タイトルASCとエディションDESC、または作成者DESCとエディションASCとタイトルDESC、またはエディションASCのみを選択できます。
質問は。PHPでこれを作成するのにどちらの方法が良いですか?フォームで?配列?この情報をこのように管理するにはどうすればよいですか?
{"Author" => "Desc", "Title" => "Asc"}
私はすでに並べ替えスクリプトを持っています。このようにカスタマイズされた情報を管理する方法を理解する必要があります。配列の方が良いと思いますが、どうすればフォームを通過できますか?
私は理解しようとしましたが、すべての解決策は醜く、コードが貧弱です。
理解していなかった人のためのサービスの写真は次のとおりです。
これまでの基本的なすべてのコードは次のとおりです。
<?php
$file = file_get_contents('books.json');
$json = json_decode($file, true);
$json = array_map(function($a) { return $a['book'][0]; }, $json['books']);
foreach ($json as $key => $row):
$title[$key] = $row['Title'];
$author[$key] = $row['Author'];
$edition[$key] = $row['Edition'];
endforeach;
array_multisort($title, SORT_ASC, $author, SORT_ASC, $json); // This is the default
?>
<form method="post">
<table align="center">
<tr>
<td>
Sort By
</td>
<td>
Direction
</td>
</tr>
<tr>
<td>
<select class="select" id="firstRule" name="firstRule">
<option value="">Select</option>
<option value="Author">Author</option>
<option value="Title">Title</option>
<option value="Edition">Edition</option>
</select>
</td>
<td>
<select id="firstRuleOrder" name="firstRuleOrder">
<option value="">Select</option>
<option value="up">Ascendent</option>
<option value="down">Descendent</option>
</select>
</td>
</tr>
<tr>
<td>
<input type="submit">
</td>
</tr>
</table>
</form>