PHP: формы, их создание и обработка

Форма поиска

Метод POST

Тег <form action="action.php" method="post"> отправит данные на обработку скрипту action.php после нажатия на кнопку, созданную элементом формы <input type="submit">
Исходный код форм можно посмотреть при помощи сочетания клавиш Ctrl+U.

Название тега, который является корневым элементом:
В каком году создана всемирная сеть WWW?
Какой тег лишний?
Какой тег является строчным?
p
span
div
h1
Название или адрес картинки:
Я согласен с условиями обработки данных

Код php в файле action.php:

Главный тег: <?php echo htmlspecialchars($_POST['name']); ?>.
Лишний тег: <?php echo $_POST['tag1']; ?>
Строчный тег: <?php echo $_POST['tag2']; ?>

<?php if ((int)$_POST['year'] == 1990): ?>
Год создания WWW – <?php echo (int)$_POST['year']; ?>.
<?php else: ?>
  Нет, год создания WWW – не <?php echo (int)$_POST['year']; ?>.
<?php endif; ?>

Сообщение: <?php echo htmlspecialchars($_POST['msg']); ?>
Согласился с условиями?
<?php
if ( isset($_POST['checker']) )
{
  echo "Да";
} else {
  echo "Нет";
} ?>

Метод GET

Тег <form action="action-get.php" method="get"> отправит данные на обработку скрипту action.php после нажатия на кнопку.

Название тега, который является корневым элементом:
В каком году создана всемирная сеть WWW?
Какой тег лишний?
Какой тег является строчным?
p
span
div
h1
Название или адрес картинки:
Я согласен с условиями обработки данных

динамическое создание форм

Пример создания формы после чтения базы данных:
<?php
  $file_db = new PDO('sqlite:mysqlitedb.db');
  $res = $file_db->query('SELECT * FROM foo', PDO::FETCH_ASSOC);
  echo '<form action="action2.php" method="post">' . "\n";

  foreach ($res as $values)
    $keys = array_keys($values);
  foreach ($keys as $key)
    echo '  <input type="text" name="' . $key . '">' . "<br>\n";

  $form = <<< FRM
  <input type="submit" name="send" value="Отправить">
  </form>
  FRM;
  echo $form;
?>

Обработка формы и добавление значений в базу данных:

<?php
unset($_POST["send"]);
$k = '';
$v = '';
foreach (array_keys($_POST) as $key) {
  $k .= $key . ', ';
  $v .= "'" . $_POST[$key] . "', ";
}
  $k = substr($k, 0, -2);
  $v = substr($v, 0, -2);
  $db = new MyDB();
  $db->exec("INSERT INTO foo ($k) VALUES ($v)");

Для работы не забудьте настроить PHP для работы с базой данных SQLite: в файле php.ini надо раскомментировать строки

extension=pdo_sqlite
extension=sqlite3