Флажки PHP и HTML с использованием POST - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть php-файл, в котором перечислены все файлы в каталоге с флажками рядом с каждым:

<html
<body>
<P>List of files:</p>

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

<?php
 if ($handle = opendir('./files')) {

   while (false !== ($file = readdir($handle)))
   {
          if ($file != "." && $file != "..")
          {
            $thelist .= '<a href="'.'./files/'.$file.'">'.$file.'</a>';
            $thelist .= '<br>';

            $s = '<input type="checkbox" name="'.$file.'" value="yes"/><a href="'.'./files/'.$file.'">'.$file.'</a>';
            echo $s;
            echo '<br';
          }
   }
  closedir($handle);
  }
?>
</body>

<input type="submit" name="formSubmit" value="Submit"/>
</form>

</html>

Затем у меня есть submitfiles.php, который просматривает все файлы и получает значения $ _POST для каждого флажка.

<?php


 if ($handle = opendir('./files')) {
   while (false !== ($file = readdir($handle)))
   {
          if ($file != "." && $file != "..")
          {

                echo 'Value is ' . $_POST['$file'] . '<br>';
                echo $file . '<br>';

          }
   }
  closedir($handle);
  }

?>

Даже если я поставлю флажок, строка «Значение» в моем php-файле всегда печатает пробел. Это означает, что ни одному из флажков никогда не присваивается значение. Как мне заставить это работать? Если я установил флажок, я хочу, чтобы он напечатал «Значение - да», но это не так.

Ответы [ 4 ]

4 голосов
/ 28 февраля 2011

Хорошо - в вашем коде есть небольшое отключение ...

Вот флажок:

<input type="checkbox" name="'.$file.'" value="yes"/>

Вот ваша попытка получить его:

$_POST['$file']

Имя флажка не "$ file" - это значение переменной $ file ...

Поэтому попробуйте изменить их на ...

<input type="checkbox" name="file[]" value="yes"/>

И получи их вот так ...

$FileCheckBoxes = $_POST['file'];

Теперь $ FileCheckBoxes будет содержать список из тех, которые были проверены .

0 голосов
/ 28 февраля 2011

В строке

echo 'Value is ' . $_POST['$file'] . '<br>';

в submitfiles.php, попробуйте не использовать кавычки вокруг $ file, например:

echo 'Value is ' . $_POST[$file] . '<br>';

Использование одинарных кавычек заставляет PHP не оценивать значение $ file.Читайте об одиночных кавычках на http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single

0 голосов
/ 28 февраля 2011

Проблема в этой строке здесь:

echo 'Value is ' . $_POST['$file'] . '<br>';

Удалите одинарные кавычки вокруг ключа массива (или используйте двойные кавычки):

echo 'Value is ' . $_POST[$file] . '<br>';

Когда вы используете одинарные кавычки, переменная $ file передается в виде строки. Подробнее о том, почему это так, можно прочитать здесь: http://php.net/string/

0 голосов
/ 28 февраля 2011

Вы хотите иметь флажки для вывода массива.

<input type="checkbox" name="assigned_name[]" value="1"> Item 1
<input type="checkbox" name="assigned_name[]" value="2"> Item 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...