Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обработка форм



Все данные, которые вы хотите получить из HTML-формы в PHP сценарий обрабатываются с помощью суперглобальных массивов $_POST или $_GET, в зависимости от указанного в атрибуте method метода передачи данных.

Задача: Вам необходимо получить данные из текстового поля и многострочного поля ввода и передать их сценарию.

Решение: Необходимо создать HTML форму и PHP – сценарий для обработки формы.

Обсуждение:

Создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с текстовым полем mytext и текстовой областью msg:

<form action="action.php" name="myform" method="post">

<input type="text" name="mytext" size="50">

<textarea name="msg" cols="20" rows=”10” ></textarea>

<input name="Submit" type=submit value="Отправить данные">

</form>

В этой html-форме нас интересует 3 атрибута: action который указывает путь к обработчику формы, имя текстового поля (mytext) и имя многострочного поля вода (msg). Также в форме присутствует кнопка, при нажатии на которую происходит передача данных.

После того как html-форма готова нам необходимо создать обработчик формы action.php:

<?php

$text = $_POST['mytext'];

$msg = $_POST['mytext'];

echo $text;

echo "";

echo $msg;

?>

После того как мы введем любые значение в текстовые поля и нажмем на кнопку "Отправить данные" html-форма отправить значения сценарию action.php.

После этого в переменных $text и $msg будут содержаться значения текстового поля и многострочного поля ввода соответственно, значения которых взяты из суперглобальных переменных $_POST.

Если вы хотите, чтобы в многострочном текстовом поле соблюдалось html-форматирование, то используйте функцию nl2br():

<?php

$text = nl2br($_POST['mytext']);

?>

Задача: Пусть необходимо создать выпадающий список с годами с 2000 по 2050.

Решение: Необходимо создать HTML форму c элементом SELECT и PHP – сценарий для обработки формы.

Обсуждение:

Для начала создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с выпадающим списком. Причем значения в списке можно указать двумя способами:

I. Ввод данных вручную:

<select class="input" type=text name=years>

<option value='2000'>2000</option>

<option value='2001'>2001</option>

<option value='2002'>2002</option>

……………………………………………

<option value='2050'>2050</option>

</select>

II. Ввод данных через цикл:

<select class="input" type=text name=years>

<?php

$year = 2000;

for ($i = 0; $i <= 50; $i++) // Цикл от 0 до 50

{

$new_years = $year + $i; // Формируем новое значение

echo '<option value='.$new_years.'>'.$new_years.'</option>'; //Формируем новую строчку

}

?>

</select>

Как видно, второй пример с циклом, более компактный. Думаю, не стоит приводить скрипт обработчика данной формы, потому что он обрабатывается точно так же как текстовое поле, т.е. значения списка можно извлечь из суперглобального массива $_POST.

Задача: Загрузка файла на сервер

<FORM ENCTYPE="multipart/form-data" ACTION="action.php" METHOD=POST>

<INPUT NAME="myfile" TYPE="file">

<INPUT TYPE="submit" value="Передать файл">

</FORM>

В данной html-форме присутствует элемент browse, который открывает диалоговое окно для выбора файла для загрузки на сервер. При нажатии на кнопку "Передать файл", файл передается сценарию-обработчику.

Затем необходимо написать сценарий обработчик action.php. Перед написанием обработчика необходимо определиться в какой каталог мы будет копировать файл:

<?php

if(isset($_FILES["myfile"])) // Если файл существует

{

$catalog = "../image/"; // Наш каталог

if (is_dir($catalog)) // Если такой каталог есть

{

$myfile = $_FILES["myfile"]["tmp_name"]; // Времменый файл

$myfile_name = $_FILES["myfile"]["name"]; // Имя файла

if(!copy($myfile, $catalog)) echo 'Ошибка при копировании файла '.$myfile_name // Если неудалось скопировать файл

}

else mkdir('../image/');

// Если такого каталога нет, то мы его создадим

}

?>

Данный пример демонстрирует создание каталога и копирование файла в этот каталог на сервер.

Элемент checkbox отличается от других элементов тем, что если не один из элементов checkbox’a не выбран, то суперглобальная переменная $_POST вернет пустое значение:

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

<input name="mycolor" type="checkbox" value="blue">Синий

<input name="mycolor" type="checkbox" value="black">Черный

<input name="mycolor" type="checkbox" value="white">Белый

<input name="Submit" type=submit value="Выбрать">

</form>

<?php

if (!empty($_POST['mycolor'])) echo $_POST['mycolor']; // Если выбран хоть 1 элемент

else echo "Выберите значение";

?>

Более сложные переменные формы

<?php//form5.php

if (isset($_POST['action']) && $_POST['action'] == 'submitted') {

echo '<pre>';

print_r($_POST);

echo '<a href="'. $_SERVER['PHP_SELF'].

'">Попробуйте еще раз</a>';

echo '</pre>';

} else {

?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

Имя: <input type="text" name="personal[name]" /><br />

Email: <input type="text" name="personal[email]" /><br />

Пиво: <br />

<select multiple name="beer[]">

<option value="аливария">аливария</option>

<option value="криница">криница</option>

<option value="речицкое">речицкое</option>

</select><br />

<input type="hidden" name="action" value="submitted" />

<input type="submit" name="submit" value="Go!" />

</form>

<?php

}

?>

После выполнения PHP получим следующую страницу HTML

<form action="/myphp/form5.php" method="post">

Имя: <input type="text" name="personal[name]" /><br />

Email: <input type="text" name="personal[email]" /><br />

Пиво: <br />

<select multiple name="beer[]">

<option value="аливария">аливария</option>

<option value="криница">криница</option>

<option value="речицкое">речицкое</option>

</select><br />

<input type="hidden" name="action" value="submitted" />

<input type="submit" name="submit" value="Go!" />

</form>

Результат:

Array

(

[personal] => Array

(

[name] => val

[email] => rom

)

[action] => submitted

[submit] => Go!

)

Попробуйте еще раз

При отправке формы вместо стандартной кнопки можно использовать изображение с помощью тега такого вида: <input type="image" src="image.gif" name="sub" />. Когда пользователь щелкнет где-нибудь на изображении, соответствующая форма будет передана на сервер с двумя дополнительными переменными - sub_x и sub_y. Они содержат координаты нажатия пользователя на изображение. Рассмотрим пример:

<html><head>

<title>Simpleform.html </title>

</head>

<body>

<form action="form.php" method="GET">

Имя:<input type="text" name="fio"><p>

<input type="image" src="image.gif" name="sub" />

</form>

</body>

</html>

<?php //form.php

$fio=$_GET['fio'];

echo "Hello, $fio<br>";

print_r ($_GET);

?>

Hello,valera
Array ([fio] => valera [sub_x] => 83 [sub_y] => 64)





Дата публикования: 2014-11-18; Прочитано: 519 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...