gpt4 book ai didi

php - 通过 html 表单控制 PHP scandir

转载 作者:行者123 更新时间:2023-11-28 01:36:13 26 4
gpt4 key购买 nike

我正在使用 PHP 和 scandir 函数构建一个文件排序工具。到目前为止,我得到的是一个简单的 HTML 文档,其中包含 PHP,它可以打印出特定目录的所有文件 - 是的。它还根据文件名按升序或降序执行此操作,具体取决于我使用的 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>';
}
}
}

?>

谢谢!

最佳答案

SCANDIR_SORT_NONESCANDIR_SORT_DESCENDINGSCANDIR_SORT_ASCENDING 常量只是 PHP 以有意义的方式使用的整数。您可以根据需要将这些常量分配给变量,并根据您的表单输入操作该变量。

$sortFlag = SCANDIR_SORT_NONE; // set a default
if (!empty($_GET['valone'])) $sortFlag = SCAN_SORT_ASCENDING;
if (!empty($_GET['valtwo'])) $sortFlag = SCAN_SORT_DESCENDING;
$files = scandir($dir, $sortFlag);
// ...

你的表格:

<form class="controlform" method="get" action="">
<input type="radio" name="valone" value="Milk">Ascending
<input type="radio" name="valtwo" value="Milk">Descending
<button class="sortbutton">Sort!/button><br>
</form>

我可能会修复 radio 元素以使用相同的 name 属性:

<form class="controlform" method="get" action="">
<input type="radio" name="sort" value="asc">Ascending
<input type="radio" name="sort" value="desc">Descending
<button class="sortbutton">Sort!/button><br>
</form>

那么您的 PHP 代码可以看起来更像这样:

$sortFlag = SCANDIR_SORT_NONE; // set a default
if (!empty($_GET['sort'])) {
switch ($_GET['sort']) {
case 'asc': $sortFlag = SCAN_SORT_ASCENDING; break;
case 'desc': $sortFlag = SCAN_SORT_DESCENDING; break;
}
}
$files = scandir($dir, $sortFlag);
// ...

关于php - 通过 html 表单控制 PHP scandir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com