【发布时间】:2015-01-14 15:08:05
【问题描述】:
我正在使用 PHP 和 scandir 函数构建一个文件排序工具。到目前为止,我得到的是一个包含 PHP 的简单 HTML 文档,它打印出特定目录的所有文件 - 是的。它还根据文件名的升序或降序执行此操作,具体取决于我使用的 PHP 脚本。现在我要构建的是一个带有两个单选按钮和一个更改 PHP 脚本的提交按钮的 HTML 表单:它应该以升序或降序显示列表。这是我的 html 表单:
<div class="controls">
<form class="controlform">
<input type="radio" name="valone" value="Milk">Ascending
<input type="radio" name="valtwo" value="Milk">Descending
<button class="sortbutton">Sort!/button><br>
</form>
</div>
...在 HTML 文档后面几行,这就是我的 PHP 脚本的样子:
<?php
$dir = "files";
$exclude = array( ".","..","error_log","_notes" );
if (is_dir($dir)) {
$files = scandir($dir
// adding this for descending order ,SCANDIR_SORT_DESCENDING
);
foreach($files as $file){
if(!in_array($file,$exclude)){
echo '
<li> ' . $file . ' </li>';
}
}
}
?>
现在的问题是:我如何让它发挥作用?非常感谢!
//更新和最终解决方案
非常感谢您的回答!这是可行的解决方案:
HTML
<form class="controlform" method="get" action="index.php">
<input type="radio" name="sort" value="asc">Ascending
<input type="radio" name="sort" value="desc">Descending
<button class="sortbutton">Sort!</button><br>
</form>
PHP
<?php
$sortFlag = SCANDIR_SORT_NONE; // set a default
if (!empty($_GET['sort'])) {
switch ($_GET['sort']) {
case 'asc': $sortFlag = 0; break;
case 'desc': $sortFlag = 1; break;
}
}
$dir = "files";
$exclude = array( ".","..","error_log","_notes" );
if (is_dir($dir)) {
$files = scandir($dir, $sortFlag);
foreach($files as $file){
if(!in_array($file,$exclude)){
echo '
<li><h3>' . $file . ' </h3></li>';
}
}
}
?>
谢谢!
【问题讨论】: