Сегодня
18 августа 2019
3:54
Вход Sign In Регистрация Sign Up Забыли пароль ? Forgot password ?
VARVE - Создаем Сайт Своими Руками - Выводим дату и время в формате RU
        СССР - Создаем Сайт Своими Руками - конструируем свой сайт - полезные статьи
подробнее...

Теги

сайты, игры, дизайн, продвижение, php, html, css, my sql, c++, delphi, photoshop, 3ds max, fl studio, трекерская музыка, уроки

Статьи сайта

     
  Другие уроки можно посмотреть в разделе Статьи  
     
 

Краеугольная особенность работы Web-form на примере смены состояния checkbox.

казалось бы - что может быть проще - обычный checkbox - - но оказывается надо учитывать несколько особенностей для корректной работы с этим элементом управления на ваших Web-страничках

 
     
 

В предыдущем уроке - Использование checkbox мы познакомились с простым элементом управления для установки состояний вида Да/Нет

Однако как оказалось нужно учитывать не только особенности работы самих элементов управления web-страницами представленных тегом <input>, но и web форм - <form>.

 
     
 

В данном уроке мы рассмотрим следующие особенности:

- как работают веб-формы;

- как читать/сохранять данные веб-форм в файл;

- как читать/сохранять данные веб-форм в базу данных;

 
     
 

Для начала попробуем создать простейшую веб-форму содержащую знакомый нам checkbox, но чтобы состояние checkbox'а не пропадало бесследно, а сохранялось бы (и читалось бы) из файла.

Вот пример кода на php для реализации этой цели (файл называется checkbox4.php)

 
     
 

<HTML>
<HEAD>
<TITLE>Отслеживаем состояние checkbox'a в файле</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</HEAD>
<BODY>

<div style="width: 990px; margin: 0 auto; background: #777777;">
<div style="width: 900px; margin: 0 auto; background: #aaaaaa;">

<?php

/* Особенность работы checkbox'а

если чекбокс установлен - при отправке данных формы передается его значение value
если чекбокс не установлен - при отправке данных формы не передается ничего !!!

читаем/сохраняем состояние checkbox'а из файла

*/

//первым делом объявляем константу - имя файла где будем хранить состояние checkbox

//обратите внимание - нужно вручную создать папку data т. к. функция fopen с параметром w не умеет //создавать сразу и папку и вложенный в неё файл !!!
define (CHECKBOX_STATE_FILENAME, 'data/checkbox_state.txt');

//эта функция у нас читает состояние чекбокса из файла и возвращает значение $state
function read_state()
{
$state = 0;

if ( file_exists(CHECKBOX_STATE_FILENAME) )
{

$handler = fopen(CHECKBOX_STATE_FILENAME, "r");
$state = fread($handler, filesize(CHECKBOX_STATE_FILENAME));
fclose($handler);

}

return $state;
}

//эта функция - запишет состояние $state чекбокса в файл, если файла нет - он будет создан

//обратите внимание еще раз !!! папку data вы должны предварительно создать сами иначе код не будет //работать корректно !!!

//т. к. функция fopen с параметром w не умеет создавать сразу и папку и вложенный в неё файл !!!

function write_state($state)
{
//$state = 0;

$handler = fopen(CHECKBOX_STATE_FILENAME, "w");
fwrite($handler, $state);
fclose($handler);


//return $state;
}

//Эта функция нужна нам чтобы вывести фразу - Флажок установлен (сброшен)
function show_flag_state($state)
{
$state_phrase = $state ? "установлен" : "сброшен";
echo "Флажок был ".$state_phrase." <br>";
}

//читаем состояние флажка в переменную $published
$published = read_state();
//для атрибута checked задаем пустую строку
$checked = '';

//если флажок установлен
if ( $published )
{

//задаем атрибут checked
$checked = 'checked = "checked"';

}

//эта переменная нужна просто для указания части имени для checkbox'а
$num = 1;

//если была нажата кнопка Сохранить в веб форме

if ( $_POST['save'] )
{

//выставляем переменную $state в 1 или 0 в зависимости от установленности $_POST['published-'.$num]
$state = isset($_POST['published-'.$num]) ? 1 : 0;

//сохраняем значение флажка в файл
write_state($state);

//выводим фразу о том, что произошло
show_flag_state($state);

//выводим ссылку для возврата на страницу
echo "<br><a href='checkbox4.php'>вернуться</a>";
}
else {

//если страница была только что открыта (или обновлена) без нажатия кнопки Сохранить в форме

//выводим нашу веб-форму дав ей имя save_changes

//страницу обработчик - указываем саму себя - checkbox4.php

//метод отправки данных формы - ПОСТ
echo "<form name='save_changes' action = 'checkbox4.php' method = 'POST'>";

//выводим чекбокс
echo "<input type=\"checkbox\" ".$checked." name=\"published-".$num."\" value=\"".$published."\">";

//выводим кнопку Сохранить изменения
echo "<input type = 'submit' value = 'Сохранить изменения' name='save'>

//закрываем форму закрывающим тегом
</form>";
}


?>
</div>
</div>

</BODY>
</HTML>

 
     
 

Это чудо работает таким образом - если зададим состояние чекбокса и нажмём кнопку <Сохранить изменения>, то фраза Флажок установлен или сброшен - будет показывать состояние чекбокса.

Само состояние чекбокса будет браться из файла data/checkbox_state.txt

В файл будет заноситься 1 или 0 в зависимости от установленности (сброшенности) чекбокса.

Главная особенность веб-форм состоит в том, что результат выполнения операции бывает невозможно показать на странице с тем же состоянием - как правило требуется отдельная страница или вынесение кода для показа результата в отдельный условный блок кода.

Работающий пример на php смотрите тут - checkbox4.php

ВОТ и ВСЁ на сегодня. Ждите новых уроков.

 
     
  Другие уроки можно посмотреть в разделе Статьи  
     
 

Оставленные комментарии



Рейтинг@Mail.ru
Время загрузки: 0,1177