2015-12-27 2 views
1

Я пытаюсь проверить, какие флажки отмечены, и выполнить удаление файла в зависимости от того, какие флажки отмечены. Мне кажется, что они ВСЕГДА имеют значение, даже если их не проверили, если я установил значение «..» в флажке. В настоящее время я удалил значение в флажке, похоже, не имел никакого значения.Флажок всегда проверен PHP/HTML

Каждому флажку присваивается уникальный номер, в то время как файл, который предполагается удалить, имеет тот же индекс с его именем файла как данными. Но он никогда не видит, что какой-либо из флажков даже проверено .. Ошибок нет, просто ничего не делать .. Пожалуйста, помогите

how it looks now picture

HTML и PHP: (документ им работать на называется protected.php)

<form action="protected.php" method="post"><br> 

    <input type="submit" name="Delete" value="Delete"> 

</form> 


<?php 

echo 'My files'; 
"<br>"; 
$mydr = "D:\wamp\www\\"; 
$dir = $mydr . $_SESSION['userid']; 

// Open a directory, and read its contents 
$checkbox_gen = 0; 
$filename_gen = array(); 

if (is_dir($dir)){ 
    if ($dh = opendir($dir)){ 
    while ((($file = readdir($dh)) !== false)){ 

     if($file != '.' && $file != '..'){ 
      echo "<form><input type=\"checkbox\" name=\"$checkbox_gen\" id=\"checkbox\">" . "<a href=\"$dir/$file\">$file</a></form>" . "<br>"; 
      $filename_gen[$checkbox_gen] = $file; 
      $checkbox_gen += 1; 
     } 
    } 

    closedir($dh); 
    } 
} 

?> 

<br> 
<form action="protected.php" method="post"><br> 

    <input type="submit" name="Delete" value="Delete"> 

</form> 

<?php 

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

    for($i = 0; $i < 10; $i++){ 
     if(!empty($_POST[$i])) { 
      echo $i . 'is checked'; 
      //$temp = $dir . '\\' . $filename_gen[$i]; 
      //unlink($temp); 
      echo $temp; 
     } 

    } 
} 
?> 

ответ

0

только проверила флажки будут размещены так попробовать

print_r($_POST)

и вы увидите контро- d флажок со значением будет там, и снятые флажки не будут опубликованы. Надеюсь, это поможет.

1

Вы создаете отдельную форму для каждого флажка и кнопки отправки. Итак, в основном вы отправляете форму «Отправить кнопку» и, конечно, флажки не установлены, потому что у нее нет флажков.

Вы должны удалить <form> теги из этой строки:

echo "<form><input type=\"checkbox\" name=\"$checkbox_gen\" id=\"checkbox\">" . "<a href=\"$dir/$file\">$file</a></form>" . "<br>"; 

и вместо того, чтобы повторить их вне цикла (также убедиться, что кнопка представить в той же форме).

Это должно выглядеть примерно так, я думаю:

<form action="protected.php" method="post"> 

<?php 

... 

if (is_dir($dir)){ 
    if ($dh = opendir($dir)){ 
    while ((($file = readdir($dh)) !== false)){ 

     if($file != '.' && $file != '..'){ 
      echo "<input type=\"checkbox\" name=\"$checkbox_gen\" id=\"checkbox\">" . "<a href=\"$dir/$file\">$file</a>" . "<br>"; 
      ... 
     } 
    } 

    closedir($dh); 
    } 
} 

?> 

<input type="submit" name="Delete" value="Delete"> 

</form> 
+0

С тегами вы имеете в виду <> или ""? Также, если я удалил эхо, php создаст невидимые html-формы? Я новичок в PHP и HTML (только для C). Цикл перебирает все файлы в папке и выводит их из себя, я не вижу, как я могу это сделать по-другому. Спасибо за ур ответить – Sroy

+0

Мой урок - всегда включать ВСЕ элементы формы ВНУТРИ формы? – Sroy

+0

Вы хотите иметь только несколько форм на одной странице, если эти формы служат совершенно другим целям (например, форма поиска и форма входа). Но кроме того, все члены формы должны быть детьми одинаковой формы, да. –

0

Каждая форма представляет свои собственные переменные, и вы пытаетесь создать несколько форм. Вы отправляете только переменную delete в этой единственной форме. Перед циклом необходимо откликнуть тег начала формы с помощью действия и метода (без новых меток формы с каждым флажком/файлом) и просто кнопка delete/submit и закрыть закрывающий тег после цикла.

Смежные вопросы