【发布时间】:2013-03-12 12:07:36
【问题描述】:
我有一个包含书籍信息的表格,用户必须可以选择 按照他的意愿对表格进行排序。
共有三个选项:
Author, Title, Edition
它们都可以是 ASCENDING 或 DESCENDING。
但该选择没有顺序。用户可以选择:Title ASC 和Edition DESC 或Author DESC 和Edition ASC 和Title DESC,甚至只是Edition 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>
【问题讨论】:
-
我认为这可以帮助您处理表单stackoverflow.com/questions/3887321/…
-
如果你展示一些代码,甚至是丑陋的代码,它可能比图片更有帮助。您想要多个“排序依据”和“方向”下拉菜单吗?
-
@fab,到目前为止,我已经使用所有代码的基础进行了编辑
-
您应该考虑在客户端处理排序,除非由于某种原因您需要支持禁用 Javascript 的浏览器。
-
@crush,那个特殊的脚本,必须在服务器端。这是一种锻炼。
标签: php