Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите пожалуйста разобраться.
 
 автор: tavila2009   (14.05.2009 в 17:41)   письмо автору
 
 

Я никогда не использовала checkbox в формах.
Если у меня в форме есть вот такой checkbox, то что надо писать в IF ...
Смысл понятен. Не знаю только на что проверять пост.
<input name="f1" type="checkbox" id="f1" value="checkbox"/>
....
$f1 = $_POST["f1"];
...
if $f1 == " что надо писать здесь?" ....

  Ответить  
 
 автор: Николай2357   (14.05.2009 в 17:43)   письмо автору
 
   для: tavila2009   (14.05.2009 в 17:41)
 

<?
if(isset($_POST["f1"]))

  Ответить  
 
 автор: tavila2009   (14.05.2009 в 18:02)   письмо автору
 
   для: Николай2357   (14.05.2009 в 17:43)
 

но мне надо проверить была ли там поставлена галочка. Это и будет проверкой?
Т.е. проверяется вводилось ли что-то вообще. Так да?

  Ответить  
 
 автор: psychomc   (14.05.2009 в 18:14)   письмо автору
 
   для: tavila2009   (14.05.2009 в 18:02)
 

так проверяется чекбокс:

<?php
if ($_POST["f1"] == "on")
{
  echo 
"галочка поставлена";
}

  Ответить  
 
 автор: tavila2009   (14.05.2009 в 18:20)   письмо автору
 
   для: psychomc   (14.05.2009 в 18:14)
 

спасибо большое!. Теперь понятно.

  Ответить  
 
 автор: Николай2357   (14.05.2009 в 18:59)   письмо автору
 
   для: tavila2009   (14.05.2009 в 18:20)
 

Неправильно это. Первый вариант надо юзать.

  Ответить  
 
 автор: tavila2009   (14.05.2009 в 19:30)   письмо автору
 
   для: Николай2357   (14.05.2009 в 18:59)
 

Правду говорите - неправильно. Только что убедилась. Спасибо Николай! Вы волшебник - я всегда это говорила - правда Вы всегда меня за это ругали :)))

  Ответить  
 
 автор: Гость   (14.05.2009 в 23:23)   письмо автору
 
   для: tavila2009   (14.05.2009 в 19:30)
 

Советую ради интереса попробовать вывести значение $_POST["f1"] - узнаете что в чекбоксах можно передавать не только булевые значения.

  Ответить  
 
 автор: tavila2009   (14.05.2009 в 23:24)   письмо автору
 
   для: Гость   (14.05.2009 в 23:23)
 

спасибо . Попробую.

  Ответить  
 
 автор: *m*   (14.05.2009 в 23:43)   письмо автору
 
   для: tavila2009   (14.05.2009 в 23:24)
 

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

правельнее было бы проверять на конкретный вариант, который возвращает $_POST['f1']

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 00:06)   письмо автору
 
   для: *m*   (14.05.2009 в 23:43)
 

>всегда существует какой-то выбраный вариант по умолчанию..
Почему это? Совсем нет. Это же чекбокс а не радиокнопка. Хотя и там совсем не обязательно условие по умолчанию.
>правельнее было бы проверять на конкретный вариант, который возвращает $_POST['f1']
А куда конкретнее? Имя элемента уникально, какой еще вариант?

  Ответить  
 
 автор: *m*   (15.05.2009 в 02:05)   письмо автору
 
   для: Николай2357   (15.05.2009 в 00:06)
 

да насчет умолчания не так сказал, да не не про чекбоксы, а про радио кнопки.. опять таки не туда)
писал про чекбоксы а думал про радио кнопки вобщем)

  Ответить  
 
 автор: tavila2009   (15.05.2009 в 05:49)   письмо автору
 
   для: Николай2357   (15.05.2009 в 00:06)
 

Спасибо Николай, у меня всё теперь красиво работает. :)))

  Ответить  
 
 автор: serjinio   (15.05.2009 в 10:48)   письмо автору
 
   для: tavila2009   (15.05.2009 в 05:49)
 

Правильнее будет (переменные надо определять и проверять....)
<?
$f1 
= isset($_POST['f1']) ? (Проверка f1 в зависимости от типа переменной )$_POST['f1'] : NULL ;

  Ответить  
 
 автор: Valick   (15.05.2009 в 11:38)   письмо автору
 
   для: serjinio   (15.05.2009 в 10:48)
 

угу, и ещё часто забывают, что в качестве переменной могут передать к примеру массив...

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 11:40)   письмо автору
 
   для: serjinio   (15.05.2009 в 10:48)
 

Тут вообще речь не о переменных... Тут нужно просто проверить - стоит галочка или нет. Зачем такой мудрёж?

  Ответить  
 
 автор: psychomc   (15.05.2009 в 12:03)   письмо автору
 
   для: Николай2357   (15.05.2009 в 11:40)
 

в чем выражается неправильность проверки "on" ???

  Ответить  
 
 автор: amigo63   (15.05.2009 в 12:12)   письмо автору
 
   для: psychomc   (15.05.2009 в 12:03)
 

а там может быть все, что угодно, это вроде от браузера зависит
UPD: а в данном конкретном случае там вообще будет "checkbox"

  Ответить  
 
 автор: psychomc   (15.05.2009 в 12:23)   письмо автору
66.7 Кб
 
   для: amigo63   (15.05.2009 в 12:12)
 

да....верно.
просто зачем для чекбокса вообще value указывать?
если не указывать, moz, ie, opera возвращают ---------------------------->

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 13:11)   письмо автору
 
   для: psychomc   (15.05.2009 в 12:23)
 

Дело не столько в том, что они возвращают, а в том, что у Вас при отсутствии галочки идет обращение к несуществующему элементу массива, что очень плохо. То есть что бы проверить на содержимое, нужно сначала инициализировать переменную, потом проверять уже её. Ну а зачем столько возни, если можно просто проверить, есть ли такой элемент. При отсутствующей галочке его просто не будет.

  Ответить  
 
 автор: psychomc   (15.05.2009 в 13:16)   письмо автору
 
   для: Николай2357   (15.05.2009 в 13:11)
 

>идет обращение к несуществующему элементу массива, что очень плохо
php вроде даже notice не возвращает....

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 13:38)   письмо автору
 
   для: psychomc   (15.05.2009 в 13:16)
 

Такой выставлен уровень ошибок. Но от этого не легче, все равно это тормозит процесс.

  Ответить  
 
 автор: psychomc   (15.05.2009 в 13:55)   письмо автору
 
   для: Николай2357   (15.05.2009 в 13:38)
 

стоит error_reporting(E_ALL)

  Ответить  
 
 автор: Valick   (15.05.2009 в 13:47)   письмо автору
 
   для: Николай2357   (15.05.2009 в 13:11)
 

у Вас при отсутствии галочки идет обращение к несуществующему элементу массива
уверены?

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 14:04)   письмо автору
 
   для: Valick   (15.05.2009 в 13:47)
 

Я никогда ни в чем не уверен. Но:
<pre>
<?PHP
print_r
($_POST);
?>
</pre>
<form action="" method="post">
<input name="f1" type="checkbox" />
<input type="submit" />
</form>
покажите мне, где же он...

  Ответить  
 
 автор: Valick   (15.05.2009 в 14:11)   письмо автору
 
   для: Николай2357   (15.05.2009 в 14:04)
 

кто он?

<?php 
if (isset($_POST['name'])){
echo 
"<PRE>";
print_r ($_POST['name']);
echo 
"</PRE>";
}
if (isset(
$_POST['name1'])) echo $_POST['name1'];
if (isset(
$_POST['name2'])) echo $_POST['name2'];
echo 
"<table border='3' width='50%'>
        <form method='post' action='chekx.php'> "
;
for(
$n=0$n<10$n++){
echo

<tr> 
<td width='20'> 

    <input type='checkbox' name='name[]' value='"
.$n."'> 
    </td> 
<td width='50'>hjgjhg</td> 
<td width='150'>uygjhg</td> 
<td>jhgjhg</td> 
</tr> 
"

}
echo

<tr> 
<td width='20'> 

    <input type='checkbox' name='name1' value='on'> 
    </td> 
<td width='50'>hjgjhg</td> 
<td width='150'>uygjhg</td> 
<td>jhgjhg</td> 
</tr> 
<tr> 
<td width='20'> 

    <input type='checkbox' name='name2' value='off'> 
    </td> 
<td width='50'>hjgjhg</td> 
<td width='150'>uygjhg</td> 
<td>jhgjhg</td> 
</tr> 
    <input type='submit' name='submit' value='Go'> 
        </form> 
    "
;
echo 
"</table> ";
?> 

  Ответить  
 
 автор: sim5   (15.05.2009 в 14:24)   письмо автору
 
   для: Valick   (15.05.2009 в 14:11)
 

Valick, не лукавьте ;-)

  Ответить  
 
 автор: Valick   (15.05.2009 в 14:27)   письмо автору
 
   для: sim5   (15.05.2009 в 14:24)
 

в смысле?

  Ответить  
 
 автор: sim5   (15.05.2009 в 14:30)   письмо автору
 
   для: Valick   (15.05.2009 в 14:27)
 

В том, что вы прикрасно понимаете о чем речь была выше. Вы просто проставили явные значения.

  Ответить  
 
 автор: Valick   (15.05.2009 в 14:34)   письмо автору
 
   для: sim5   (15.05.2009 в 14:30)
 

Я прекрасно понимаю о чём речь. Я вот только не знаю как обьяснить Николаю, то что из формы на сервер "полетит" массив только выбранных чекбоксов.

  Ответить  
 
 автор: sim5   (15.05.2009 в 14:40)   письмо автору
 
   для: Valick   (15.05.2009 в 14:34)
 

Ну а он о чем? Все верно, не будет выбранных, не будет и в переданном массиве таковых элементов.

  Ответить  
 
 автор: Valick   (15.05.2009 в 15:00)   письмо автору
 
   для: sim5   (15.05.2009 в 14:40)
 

Ну а он о чем?
а он о том что
что у Вас при отсутствии галочки идет обращение к несуществующему элементу массива

  Ответить  
 
 автор: sim5   (15.05.2009 в 15:02)   письмо автору
 
   для: Valick   (15.05.2009 в 15:00)
 

Вы уверены?

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 15:03)   письмо автору
 
   для: Valick   (15.05.2009 в 15:00)
 

Где? Я написал - несуществующие. Это не пустые совсем.

  Ответить  
 
 автор: Valick   (15.05.2009 в 15:04)   письмо автору
 
   для: Николай2357   (15.05.2009 в 15:03)
 

я ошибся, но уже исправил

  Ответить  
 
 автор: sim5   (15.05.2009 в 15:13)   письмо автору
 
   для: Valick   (15.05.2009 в 15:04)
 

Существующий, но пустой будет в том случае, если, например:
<input type="checkbox" name="as" value="" checked>

  Ответить  
 
 автор: Valick   (15.05.2009 в 15:18)   письмо автору
 
   для: sim5   (15.05.2009 в 15:13)
 

да и только тогда когда вы установите галочку
в противном случае эта переменная не попадёт на сервер

  Ответить  
 
 автор: sim5   (15.05.2009 в 15:20)   письмо автору
 
   для: Valick   (15.05.2009 в 15:18)
 

Она уже установлена - checked.

  Ответить  
 
 автор: Valick   (15.05.2009 в 15:19)   письмо автору
 
   для: Николай2357   (15.05.2009 в 15:03)
 

по поводу Вашего примера, прежде чем принимать массив на сервере, потрудитесь его хотябы туда отправить ;)

  Ответить  
 
 автор: Николай2357   (15.05.2009 в 15:30)   письмо автору
 
   для: Valick   (15.05.2009 в 15:19)
 

Это как? По почте что ли? ))) Всё там отправлено. И чудесненько кстати работает.

  Ответить  
 
 автор: Valick   (15.05.2009 в 15:52)   письмо автору
 
   для: Николай2357   (15.05.2009 в 15:30)
 

Николай, я извиняюсь. Но я просто сразу не понял о каком несуществующем элементе и какого массива идёт речь. Вы имели ввиду суперглобальный масив, а я массив переданный из формы, поэтому у нас возникла такая путанница.

  Ответить  
 
 автор: tavila2009   (15.05.2009 в 15:41)   письмо автору
 
   для: psychomc   (15.05.2009 в 12:03)
 

она просто не сработала. Я сделала сначала как Вы посоветовали. И не работало. Потом сделала как Николай посоветовал и всё прекрасно и понятно заработало. Зачем такой сложный огород городить когда можно сделать просто и понятно как Николай посоветовал. На практике проверила оба способа. Сработал только тот что Николай предложил.

  Ответить  
 
 автор: psychomc   (15.05.2009 в 16:02)   письмо автору
 
   для: tavila2009   (15.05.2009 в 15:41)
 

всё уже проверено до вас было...

уберите в своей форме с чекбокса value="checkbox"

и проверьте

<?php
if ($_POST["f1"] == "on")
{
  echo 
"галочка поставлена";

else
{
   echo 
"галочка не поставлена";
}


и так тоже будет работать, никто ничего не городит :)
с Богом :)

  Ответить  
 
 автор: tavila2009   (15.05.2009 в 16:09)   письмо автору
 
   для: psychomc   (15.05.2009 в 16:02)
 

не обижайтесь - я действительно value="checkbox" не убирала. Вы тоже умница! Спасибо Вам. :)))

  Ответить  
 
 автор: Valick   (15.05.2009 в 16:39)   письмо автору
 
   для: psychomc   (15.05.2009 в 16:02)
 

работать будет, но проверка == "on" лишняя

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования