Выпадающий список с опцией «Новая папка» php

у меня есть этот скрипт, который получает все подкаталоги и помещает их в раскрывающийся список. У меня есть опция «Новая папка», которой нужно создать новую папку, собрав имя папки — в данном случае ее номера, такие как 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 (??) автоматически, даже если я не выбираю «Новая папка», спасибо


person Elad    schedule 15.09.2011    source источник


Ответы (2)


У меня есть пара советов для вас, чтобы улучшить ваш код. Я не совсем понимаю вашу проблему, но это может помочь.

Если вы хотите перечислить каталог со всеми его подкаталогами, вы должны сделать что-то вроде этого

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
person TFennis    schedule 15.09.2011

Вам нужно изменить if($_POST['folderchoose']==0) на что-то другое, потому что 0 означает "null" и, следовательно, оператор if верен, и он будет выполнен.

или... Используйте isset(), чтобы убедиться, что форма действительно отправлена, например

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

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

//do mkdir or something
person John    schedule 15.09.2011
comment
хорошо, спасибо! но почему $newbase не работает с mkdir? - person Elad; 15.09.2011