[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Sumbit булевое значение
mastos
Здравствуйте,


Я новенький в php, хочу попросить Вас, помочь мне разобраться с булевыми значением, конкретно какое булевое значение отправляется при нажатии на кнопку sumbit с пустым запросом (false или undefined или вообще 0?).
Пример: Есть 3 - варианта ответа, если я не выбрал не одного и нажал на кнопку, какой запрос отправляется ?


С Уважением, Сергей.
AllesKlar
Уважаемый Сергей,

ничего не понятно.

Форму html привидите, тогда все прояснится.

_____________
[продано копирайтерам]
Slavok47
а что тут думать, форма передает значения инпутов, например value="Вася", если ни чего не выбрать то передается value="", все это передается в переменную, и проверить переменную на пустоту можно например через empty()

да кстати, если по примеру, из трех вариантов ни чего не выбрано, то получишь пустой массив, если у тебя чекбоксы передаются как массив, тут все зависит от конструкции формы
Игорь_Vasinsky
1. у каждой формы есть метод отправки (см. тег form) - method - default GET

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

<form action="" method="POST">


если ты указывает GET - то все параметры формы будут передены в суперглобальный массив $_GET - кроме этого ты увидишь их в урл - http://site.ru?param1=val1&m2=val2&sumbit=send

Недостатков у GET хватает, например
- в урле поместится только определённое кол-во символов
- в урле они доступны визуально - и с ними просто можно хулиганить

метод POST - передаст же данные в суперглобальный массив $_POST (такую форму можно так же с имитировать с cURL), но кол-во параметров, которые можно передать - в разы больше, чем у GET, я не помню точно ограничение - не суть, главно - что так просто POST не с имитировать - как это можно с GET


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

чтобы форма отправила данные - необходима кнопка (input) с атрибутом type="submit"

по твоему вопросу:

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

test.php

<?php
//код php делай выше HTML - если ты пишешь всё в одном месте, в этом есть ряд преимуществ, не в этом суть

//если нажата кнопка с именем send

if(isset($_POST['send'])){
$p1=$_POST['p1'];
$p2=$_POST['p2'];

echo 'переданы след. параметры: '.$p1.', '.$p2;
}
?>

<html>
<
head>
<
body>
<
form method="POST" action="">
<
input type="text" name="p1"/>
<
input type="text" name="p2"/>
<
input type="submit" name="send"/>
</
form>
</
body>
</
html>


можно сделать простую проверку - на обязательность заполнения полей

<?php

if(isset($_POST['send'])){
//trim() вырежит все пробелы в конце и в начале, - если пытаются отправить несколько пробелов, например
$p1=trim($_POST['p1']);
$p2=trim($_POST['p2']);

//сюда соберём ошибки
$errors = array();

if(empty($p1)) $errors[] = 'Поле p1 не может быть пустым';
if(empty($p2)) $errors[] = 'Поле p2 не может быть пустым';

if(!empty($errors)){
echo implode("<br/>", $errors);
}
else{
echo 'переданы след. параметры: '.$p1.', '.$p2;
}
}

?>


по твоему варианту с несколькими вариантами ответов на примере кнопок radio

<form method="POST" action="">
<
input type="radio" name="q" value="answer1"/>answer1
<input type="radio" name="q" value="answer2"/>answer2
<input type="radio" name="q" value="answer3"/>answer2
<input type="submit" name="send"/>
</
form>


тут особое внимание на HTML, на правильность формы

3 кнопки radio - с одним именем (q) - говорят о том, что из всех 3х - можно выбрать только одну
если нет очмеченной кнопки по дефолту checked="checked" - значит - ты допускаешь - что могут не выбрать ни один ответ, в этой случае $_POST['q'] - просто не будет существовать после отправки - isset($_POST['q']) === false

если ты сделаешь у одной кнопки атрибут checked="checked" - значит при прорисовки формы - уже оДин варианта будет выбран, посетителю - нужно будет укакзать свой вариант из группы кнопок - в этом случае ты будешь иметь isset($_POST['q']) === true , а значение $_POST['q'] будет равен value этой кнопки

т.е - ещё раз об основных моментах:

- если ты хочешь предоставить несколько вариантов ответов на один вопрос - используй группы - radio, checkbox - несколько кнопок с одинаковым name
- если ответ на вопрос обязателен - задай default ответ с помошью checked="checked"
<input type="radio" name="q" value="answer1" checked="checked"/>answer1


вот в принципе и усё.

можно использовать ещё и select - но тогда весь список доступных ответов будет доступен только при раскрытии списка - что по моему - не комильфо.


можно так же и проверять обязательность ответов и на клиенте - JS - для юзабилити - подсветки обязательных вопросов, да чтоб данные на сервер не гонять в холостую каждый раз

но, если есть проверка на клиенте - то совсем не говорит о том, что на серверной стороне на проверки можно забить - нет - серверные проверки нужны в любом случае.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.