Перейти к содержимому

Фото
- - - - -

Старые формы (php)


  • Вы не можете создать новую тему
  • Please log in to reply
22 ответов в этой теме

#1 eL fantasmA

eL fantasmA

    Олимпийский мишка

  • Постоялец
  • 8 807 сообщений

Отправлено 25 Август 2007 - 02:33

Вобщем нужна помощь в некоторых вещах.

А именно,

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

Вот например раньше была простая форма, куда надо было написать текст и скрипт проверял, написан текст в поле или нет. Ну и там либо отправлял, либо ошибку выдавал.

А сейчас там не поля ввода, а место, чтобы поставить галочку.
Вот как это проверить?

Проверка строчки там вот так написана:

if ($UgUg==""){
$result=0;
$error7="<li>$no_UgUg</li>";
}


А как быть с checkbox, а также с select?
Как их проверить и как отослать результаты?

Тоесть если в checkbox'е не стоит галочка, то на мыло должно прийти (Априар: -), а если стоит галочка, то (Априар: +).

Ну и с select, должен прийти выбраный вариант.

Кто поможет?!
  • 0
«Удовольствие и счастье совсем не одно и тоже. На самом деле особую ценность имеет то, что не вечно...»

#2 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 25 Август 2007 - 15:05

checkbox = input

чтобы его проверить, надо сделать что-то вроде:

<input type="checkbox" name="chbox" value="on">
....
$checkbox_value = empty( $_POST['chbox'] ) ? '-' : '+';

  • 0

#3 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 25 Август 2007 - 15:30

if ($checkbox == "on") {
// галочка
}else{
// нет галочки, где $checkbox - имя чекбокса
}


<select name="selectname"> 
<option value="1">+</option> 
<option value="0">-</option> 
</select>

...

if ($selectname > 0) {
$message_to_mail = "Априар: +";
}else{
$message_to_mail = "Априар: -";
}

Сообщение изменено: Управхоз №263 (25 Август 2007 - 15:31 )

  • 0

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


#4 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 25 Август 2007 - 15:42

if ($checkbox == "on") {
// галочка
}else{
// нет галочки, где $checkbox - имя чекбокса
}

Если чекбокс не был установлен, то переменная с его именем не будет создана, по этому вылезет notice. По-умолчанию занчение чекбокса = on, но какой-то конкретной спецификации на данный счёт я не встречал.
  • 0

#5 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 25 Август 2007 - 20:26

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

#6 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 25 Август 2007 - 21:10

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

Я же говорю, если чекбокс не был помечен галочкой, его значение не приходит. Как буд-то его вообще не было на той странице. Значение приходит только если он был отмечен. Если я тебя правильно понял ;)
  • 0

#7 eL fantasmA

eL fantasmA

    Олимпийский мишка

  • Постоялец
  • 8 807 сообщений

Отправлено 25 Август 2007 - 23:50

Что-то не доходит до меня :(


Допустим это на странице с формой:
<select size="1" name="Choose">
<option>А</option>
<option>Б</option>
<option>В</option>
<option>Г</option>
<option>Д</option>
</select>

Как теперь сделать проверку того, что выбрано?

$result=1;
if (!$Choose==""){
$result=0;
$error1="<li>$no_choose</li>";
}

Точно не так, да?

И как потом написать в форму, что должно быть отправлено в письмо:

if ($result==1) {
$Message .= "<br><font color=red>Буква:</font><br> $Choose\n<br>";
}

Вот как исправить то, что у меня есть?
  • 0
«Удовольствие и счастье совсем не одно и тоже. На самом деле особую ценность имеет то, что не вечно...»

#8 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 26 Август 2007 - 00:01

eL fantasmA, ты сам понимаешь что пишешь? :)

if (!$Choose==""){

Зачем ты отрицаешь значение переменной $Choose? Наверное ты хотел написать if ( $Choose != '' ) ?

При селекте ты так или иначе что-то выбираешь, по этому я считаю, в твоём случае не надо делать проверку на то, что ничего не выбрано :) В любом случае будет выбрана одна из букв...


P.S. советую писать <option value="A">A</option>
  • 0

#9 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 26 Август 2007 - 00:08

Если чекбокс не был установлен, то переменная с его именем не будет создана, по этому вылезет notice. По-умолчанию занчение чекбокса = on, но какой-то конкретной спецификации на данный счёт я не встречал.

Ну, у кого не работает, у кого работает...
<?php
print "<form action=?do=check method=post>Чекбокс: <input type=checkbox name=checkit>
<br><input type=submit value=Ok></form>";
if ($do=="check"){
if ($checkit=="on"){
print "Checkbox is checked!";
}else{
print "Checkbox is not checked!";
}
}
?>

  • 0

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


#10 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 26 Август 2007 - 00:15

Управхоз №263, ну не знаю что там у тебя работает...

Правило 1: register_globals off, используй $_GET, $_POST
Правило 2: никаких ошибок error_reporting E_ALL (notice в т.ч.)

Ты думаешь, что всё окей, на самом деле похоже, даже не представляешь что происходит на самом деле (за кулисами).
  • 0

#11 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 26 Август 2007 - 00:17

eL fantasmA,
<?php
print "<form action=?do=check method=post>
<select size='1' name='choose'>
<option value=А>A</option>
<option value=Б>Б</option>
<option value=В>В</option>
<option value=Г>Г</option>
<option value=Д>Д</option>
</select>
<input type=submit value=ok>";
if ($do=="check"){
if ($choose!=""){
$message = "Буква: ".$choose;
print $message;
}
}
?>

Управхоз №263, ну не знаю что там у тебя работает...

Правило 1: register_globals off, используй $_GET, $_POST
Правило 2: никаких ошибок error_reporting E_ALL (notice в т.ч.)

Ты думаешь, что всё окей, на самом деле похоже, даже не представляешь что происходит на самом деле (за кулисами).

А ты не гадай, возьми да и проверь.

Сообщение изменено: Управхоз №263 (26 Август 2007 - 00:18 )

  • 0

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


#12 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 26 Август 2007 - 00:22

А ты не гадай, возьми да и проверь.

Я не гадаю, Notice: Undefined index: checkit in test.php on line 7
Checkbox is not checked!

Пришлось слегка модифицировать, т.к. у меня register_globals off. Включи показ ошибок!
  • 0

#13 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 26 Август 2007 - 00:29

Я не гадаю, Notice: Undefined index: checkit in test.php on line 7
Checkbox is not checked!

Пришлось слегка модифицировать, т.к. у меня register_globals off. Включи показ ошибок!

Ога, но notice это не global error.
  • 0

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


#14 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 26 Август 2007 - 00:35

Ога, но notice это не global error.

В продакшен версии не должно быть никаких notice'в. В любом случае их нужно избегать. Всегда надо делать проверки, иначе рано или поздно получишь взлом сайта. + эти notice могут не отображаться, а в логах оставлять кучу мусора.
  • 0

#15 eL fantasmA

eL fantasmA

    Олимпийский мишка

  • Постоялец
  • 8 807 сообщений

Отправлено 26 Август 2007 - 01:16

Хе-хе... там всё пашет и без этого :) Так что усё ок :)
  • 0
«Удовольствие и счастье совсем не одно и тоже. На самом деле особую ценность имеет то, что не вечно...»

#16 eL fantasmA

eL fantasmA

    Олимпийский мишка

  • Постоялец
  • 8 807 сообщений

Отправлено 27 Август 2007 - 02:05

А что тут проверяется?

if ($Ann2==""){
$result=0;
$error1="<li>$no_ann2</li>";
}

Как написать... if ($Ann2 ничего не написано){
$result=0;
$error1="<li>$no_ann2</li>";
}

?
  • 0
«Удовольствие и счастье совсем не одно и тоже. На самом деле особую ценность имеет то, что не вечно...»

#17 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 27 Август 2007 - 02:07

Как написать... if ($Ann2 ничего не написано){
$result=0;
$error1="<li>$no_ann2</li>";
}

?

Код верный.
  • 0

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


#18 eL fantasmA

eL fantasmA

    Олимпийский мишка

  • Постоялец
  • 8 807 сообщений

Отправлено 27 Август 2007 - 02:30

Управхоз №263, хммм... почему тогда, если эти пункты не заполнены, то не выдаёт ошибку, а пишет что всё ок?:(
  • 0
«Удовольствие и счастье совсем не одно и тоже. На самом деле особую ценность имеет то, что не вечно...»

#19 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 27 Август 2007 - 02:31

Управхоз №263, хммм... почему тогда, если эти пункты не заполнены, то не выдаёт ошибку, а пишет что всё ок?:(

Откуда же мне знать?
По маленькому куску практически невозможно сделать какие-либо определенные выводы.
  • 0

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


#20 Киря Веб

Киря Веб
  • Пользователь
  • 140 сообщений
  • Откуда:Tallinn, Estonia

Отправлено 27 Август 2007 - 14:48

Как написать... if ($Ann2 ничего не написано){
$result=0;
$error1="<li>$no_ann2</li>";
}

?


if(isset($Ann2) && !$Ann2){
  $result = 0;
  $error = "<li>".$no_ann2."</li>";
}else{
  $result = 1;
  $error = false;
}

яб лучше сделал таг, отключив нотисы

 $result = $Ann2?0:1;
 $error = $Ann2?"<li>".$no_ann2."</li>":false;

Сообщение изменено: Киря Веб (27 Август 2007 - 14:49 )

  • 0

#21 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 27 Август 2007 - 22:04

яб лучше сделал таг, отключив нотисы

Неужели сложно использовать глобальные массивы $_GET, $_POST, или хотябы $_REQUEST?
  • 0

#22 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 28 Август 2007 - 08:46

Setor, ниче, придет и на них PHP6, где включение register_globals вызывает ошибку уровня ядра
  • 0

#23 Киря Веб

Киря Веб
  • Пользователь
  • 140 сообщений
  • Откуда:Tallinn, Estonia

Отправлено 30 Август 2007 - 23:43

Setor, я так и делаю :)
просто человек спросил: "Как написать... if ($Ann2 ничего не написано){" ;)
  • 0