当前位置: 首页 > 知识库问答 >
问题:

PHP从下拉列表中删除文件

蓬高谊
2023-03-14

我有一个下拉列表,其中填充了使用下面列出的PHP从目录中提取的文件,我正试图找出如何在选中这些文件时使用表单中的删除按钮删除它们。

<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>" . $file . "</option>";
  }
   }
   ?>
   </select>

在运行时更新代码。

<?php
   session_start();
    $directory = $directory = $_SERVER['DOCUMENT_ROOT'] . '/users/' . $_SESSION['username'];
    $file_to_delete = $_POST['CodeList'];
    if ( unlink ($directory.'/'.$file_to_delete) ) {
      echo $file_to_delete . " deleted.";
   } else {
echo "Error.";
}
?>

编辑和更新代码

现在说警告:取消链接(/myhome/root/public_html/users/addicient/)[function.unlink]:在/home/revo/public_html/evo/avdeleteprocess中没有这样的文件或目录。php第5行出错。

所以它找到了正确的文件夹,只是没有从下拉列表选择中找到文件。

我在删除脚本之后运行了一个var_dump($_POST),查看它作为POST的值提取了什么,结果返回:Error。数组(1){[“操作”]=

共有2个答案

蓟俊杰
2023-03-14

您的表格将不会使用

<button type="button">Delete</button>

试试看

<button type="submit">Delete</button>
臧令
2023-03-14

您需要使用表单标记来包装代码。另外,$\u POST需要获取您的select的名称(在本例中),因此:

类型php:

<form action="avdeleteprocess.php" method="post">
<select size="1" name="CodeList" id="CodeList">
<?php
   $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>";
  }
   }
   ?>
   </select>
   <input type="submit" name="Action" value="DELETE" />
</form>

avdeleteprocess.php:

<?php
  session_start();
  $directory = 'users/'.$_SESSION['username'].'/';
  //here you can even check if user selected 'delete' option:
  if($_POST['Action'] == "DELETE"){
      $file_to_delete = $_POST['CodeList'];
      if(unlink($directory.'/'.$file_to_delete))
         echo $file_to_delete." deleted.";
      else
         echo "Error deleting file ".$file_to_delete;
  }
  if($_POST['Action'] == "SAVE"){
      ...
  }
?>
 类似资料:
  • 问题内容: 我正在使用HTML5构建拖放式Web应用程序,并将文件拖放到div上,当然要获取dataTransfer对象,这给了我FileList。 现在,我想删除一些文件,但是我不知道怎么办,或者甚至可能。 最好是我只想从FileList中删除它们;我没有用。但是,如果那不可能,我是否应该在与FileList交互的代码中编写检查代码?那看起来很麻烦。 问题答案: 如果只想删除几个选定的文件,则不

  • 问题内容: 我想删除下拉列表外面的边框。 我在尝试: 但是对我不起作用。 问题答案: 您能得到的最多是: 您无法完全设置样式,但可以尝试类似

  • 问题内容: 如果我需要从List中删除一个对象(假设字符串“ abc” linkedList或ArrayList),则可以删除哪一个?(我认为两者都是相同的) ,如果我使用Linkedlist和arraylist,那么时间和空间的复杂度是多少 (我相信两者的时间复杂度都为O(n)相同) 问题答案: 两者都具有相同的时间复杂度-O(n),但是恕我直言,该版本会更快,尤其是在大型列表中,因为当您从数组

  • 问题内容: 在遍历列表时,我想根据条件删除列表中的项。请参见下面的代码。 这给了我一个例外。 如何才能做到这一点? 问题答案: 您需要使用和调用上,而不是使用循环。

  • 问题内容: 如果我有词典列表,请说: 并且我想删除具有2(或name )的字典,以编程方式解决此问题的最有效方法是什么(也就是说,我不知道列表中条目的索引,因此它可以)只是被弹出)。 问题答案: 编辑 :由于对此代码的性能提出了一些疑问(一些基于对Python的性能特征的误解,一些基于超出给定规范的假设,即列表中仅存在一个dict,其key的值为2) id”),我希望在此方面给您保证。 在旧的Li

  • 在执行量角器测试时,我想清除一个下拉列表。我知道如何在下拉列表中选择一个特定的选项。如何清除它? 下拉列表是表单的一部分。下拉选项的值由ajax调用加载。所以,选择看起来像这样。 现在,当加载表单时,没有选择任何值。但是,一旦选择了一个值,就不可能清除它(即使手动清除),因为这是一个必填字段。只能从下拉列表中选择一个替代值。 但是,我想做第二个测试,检查这个字段的值是否为空(没有选择)。为此,我必