带有新文件夹选项php的下拉列表

时间:2011-09-15 14:32:34

标签: php drop-down-menu options mkdir

我有这个脚本获得所有子目录并将它们放入下拉列表中.. 我有一个选项“新文件夹”需要通过收集文件夹名称来创建一个新文件夹 - 在这种情况下它的数字像995 - 并折扣一个来创建一个名为994的目录

<form action="index.php" method="post">
<select name="folderchoose" id="folderchoose" onchange="this.form.submit();">
<?php
$base = basename("$items[1]", ".php").PHP_EOL;
$newbase = $base -1;
if($_POST['folderchoose']==0){ mkdir("../albums/$newbase", 0700); }
$items = glob("../albums/*", GLOB_ONLYDIR);
natsort($items);
{?><option>select:</option><?
    foreach($items as $item)
    {
         ?>  <option value="1"><? echo "$item\n "; ?></option><?
        } ?> <option value="0" >New folder</option> <? 
    }
?>
</select>
</form>
Directory:<?php echo $_POST[folderchoose]  ?><br />
<?php $base = basename("$items[1]", ".php").PHP_EOL;
$newbase = $base -1;
echo $newbase  ?>

两件事情都不正常,mkdir函数没有得到$ newbase并自动创建一个名为dir(??)的目录,即使我不选择'New Folder' 感谢

2 个答案:

答案 0 :(得分:1)

您需要将if($ _ POST ['folderchoose'] == 0)更改为其他内容,因为0表示“null”,因此if语句为true且将被执行。

或...使用isset()确保表单确实已提交,例如

if (isset($_POST['folderchoose'])) {

if ($_POST['folderchoose'] == 0) {

//do mkdir or something

答案 1 :(得分:1)

我有一些提示可以帮助您改进代码。我不完全理解你的问题,但这可能会有所帮助。

如果要列出包含其所有子目录的目录,您应该执行类似这样的操作

function list_directory( $dirname ) {
    foreach file in directory      
        if(is_dir($dirname)){
            list_directory($dirname)
        }
        if(is_File($dirname)){
            echo $dirname;
        }
    }
}

这不是可用的代码,而是您可以使用的一般想法。

如果奇怪的事情开始发生,请尝试这样做

var_dump( $var ); // The variable your are suspecting in your case $newbase