Выпадающий список с опцией Новая папка php - PullRequest
1 голос
/ 15 сентября 2011

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

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

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

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

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
1 голос
/ 15 сентября 2011

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

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

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

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

//do mkdir or something
...