我有一个下拉列表,其中填充了使用下面列出的 PHP 从目录中提取的文件,并试图弄清楚如何在选择它们时使用表单中的删除按钮删除它们。
编辑取消链接功能错误已解决。
尝试删除时仍然出错: Error.array(1) { ["Action"]=> string(6) "Delete" }
<input type="hidden" name="Action" value="EDIT" /><input type="hidden" name="Selection" id="Selection" value="-1"><div>Below is the list of your saved codes. To edit your codes, select it from the list.</div>
<select size="1" name="CodeList" id="CodeList">
<?php
$directory = $directory = 'users/' . $_SESSION['username'];
$filesContents = Array();
$files = scandir( $directory ) ;
foreach( $files as $file )
{
if ( ! is_dir( $file ) )
{
$filesContents[$file] = file_get_contents($directory , $file);
echo '<option value="'. $file .'">' . $file . '</option>';
}
}
?>
删除 PHP 脚本。
<?php
session_start();
$directory = $directory = $_SERVER['DOCUMENT_ROOT'] . '/users/' . $_SESSION['username'];
$file_to_delete = $_POST['CodeList'];
if(is_file($directory .'/'. $file_to_delete) && is_writable($directory .'/'. $file_to_delete)) {
if ( unlink ($directory.'/'.$file_to_delete) ) {
echo $file_to_delete . " deleted.";
} else {
echo "Error.";
}
}
?>
<?php var_dump($_POST) ?>
添加选项,但没有选项值。选择框应如下所示:
<select name="identifier">
<option value="value_1">Option 1</option>
<option value="value_2">Option 2</option>
</select>
现在,如果您选择选项 2,您应该在 post 数组中获取value_2:
echo $_POST['identifier']; // prints out 'value_2';
您的选项如下所示:<option>Option x</option>
,这意味着您选择一个选项,但它没有值(无value=""
属性)。
如果您查看PHP错误,我确实看到正确的目录名称,但没有附加文件名。
您还应该检查该文件是否存在,以防止出现"没有此类文件"错误:
if(is_file($directory .'/'. $file_to_be_deleted) && is_writable($directory .'/'. $file_to_be_deleted)) {
// delete the file
}
是的,我使用 is_file
AND is_writable
测试,因为如果检查的路径是目录,is_writable
函数也会返回true
。
编辑
要分配值,请按如下方式更改 foreach 循环:
<select size="1" name="CodeList" id="CodeList">
<?php
// fetch files etc.
foreach( $files as $file ) {
if ( ! is_dir( $file ) {
echo '<option value="'. $file .'">' . $file . '</option>';
}
}
哦,顺便说一句:摆脱get_file_contents()
部分。你没有对那里的文件内容做任何事情,是吗?
我们可以为此使用 Javascript
删除选项 :
$("#selectBox option[value='option1']").remove();
添加选项 :
$("#selectBox").append('<option value="option5">option5</option>');
希望这会有所帮助!