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

Форум PHP

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

 

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

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

тема: Не могу понять с checkbox
 
 автор: smoothjazz   (15.06.2014 в 15:42)   письмо автору
 
 

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

Мне нужно отметить checkbox в коде, если он был отмечен мышкой, и если мышкой сняли галку, то в коде убрать отметку, вроде все правильно делаю, но происходит следующее:
При загрузке страицы, он не отмечен (это правильно, т.к. его и не отмечали), затем когда отметили, то он отмечен становится в коде, что и верно. НО когда еще раз я снимаю галку, то тут она уже не убирается, а опять как будто отмечена, и
$_POST['f']['url']
пишет что существует, как такое возможно?
Помогите пожалуйста кто может

        $checked = '';
        if  (isset($_POST['f']['url'])) {
            if ($_POST['f']['url'] == 'on') {
                $checked = 'checked="checked"';
            } else {
                $checked = '';
            }
        } else {
            $checked = '';
        }

$cont .= '<input type="checkbox" name="f[url]" '.$checked.' /> Сайт';

        $checked = '';
        if  (isset($_POST['f']['date_domen'])) {
            if ($_POST['f']['date_domen'] == 'on') {
                $checked = 'checked="checked"';
            } else {
                $checked = '';
            }
        } else {
            $checked = '';
        }

$cont .= '<input type="checkbox" name="f[date_domen]" '.$checked.' /> Домен';

  Ответить  
 
 автор: moonfox   (15.06.2014 в 17:08)   письмо автору
 
   для: smoothjazz   (15.06.2014 в 15:42)
 

$checked = '';
if(isset($_POST['f'])) $checked = 'checked';
$cont .= '<input type="checkbox" name="f" '.$checked.' /> Сайт'; 

  Ответить  
 
 автор: smoothjazz   (16.06.2014 в 03:16)   письмо автору
 
   для: moonfox   (15.06.2014 в 17:08)
 

Мне нужно чтобы массив был, а в вашем случае не массив.

Вопрос решен. Я неправильно с jquery работал.
Получалось что я блок с checkbox дублировал в контенте, и происодил такой сбой.

  Ответить  
 
 автор: confirm   (16.06.2014 в 13:05)   письмо автору
 
   для: smoothjazz   (16.06.2014 в 03:16)
 

Вообще-то в таких операциях удобен тернарный оператор:

<?
$var 
'<input type="checkbox" name="name" ' . ($chk 'checked' null) . ' /> Сайт';


Что касается массива, то если вы будете проверять так элементы, как это вы делаете, то при большом количестве элементов в массиве, это утомительно и не оправдано. Как это сделать, это в первую очередь зависит от того как вы выводите такую форму, удобно ли при этом выбрано именование элементов и т.д.

  Ответить  
 
 автор: moonfox   (16.06.2014 в 13:08)   письмо автору
 
   для: smoothjazz   (16.06.2014 в 03:16)
 

интересно
а накой проверять на то, что возвращает в вашем то случае а?
он либо set либо не set и не важно массив или нет

  Ответить  
 
 автор: confirm   (16.06.2014 в 13:10)   письмо автору
 
   для: moonfox   (16.06.2014 в 13:08)
 

Думайте.

  Ответить  
 
 автор: moonfox   (16.06.2014 в 13:22)   письмо автору
 
   для: confirm   (16.06.2014 в 13:10)
 

интересно а что еще вернет отмеченный чек без value?
может просветите?

  Ответить  
 
 автор: confirm   (16.06.2014 в 13:28)   письмо автору
 
   для: moonfox   (16.06.2014 в 13:22)
 

Думайте насчет "без разницы один или массив", и так ли всегда требуется isset.

  Ответить  
 
 автор: moonfox   (16.06.2014 в 13:56)   письмо автору
 
   для: confirm   (16.06.2014 в 13:28)
 

...
о точнее выразится вы бы не могли?
оч хочется знать, зачем проверять на set и на value
когда обе части равноправные.

  Ответить  
 
 автор: confirm   (16.06.2014 в 14:00)   письмо автору
 
   для: moonfox   (16.06.2014 в 13:56)
 

Я не знаю чего он хочет, а вот то, что без разницы один элемент или массив, как вы утверждаете, это далеко не так.

  Ответить  
 
 автор: moonfox   (16.06.2014 в 14:16)   письмо автору
 
   для: confirm   (16.06.2014 в 14:00)
 

 это далеко не так.


пардон, поправлюсь, все зависит от того что с полученными данными делать
но это не умаляет того факта, что отмеченный чек всегда содержит value
а в его случае все чеки всегда при отметке имеют значение on
и он при этом проверяет инициализированы ли они и есть ли в них значение, которое собственно никак далее не используется.
когда можно было сделать 1 проверку либо на значение либо на инициализацию.

  Ответить  
 
 автор: confirm   (16.06.2014 в 14:19)   письмо автору
 
   для: moonfox   (16.06.2014 в 14:16)
 

А причем тут что содержит? Это вторичное.
А то, что он не проверку написал, а глупость, я об этом вроде бы как и не затеваю полемики. Просто вы написали глупость не менее, чем он.

  Ответить  
 
 автор: moonfox   (16.06.2014 в 14:27)   письмо автору
 
   для: confirm   (16.06.2014 в 14:19)
 

я глупостей не писал
написал ровно в его контекте
у чела нет значений в чеках какая разница массив это будет или не массив
хотя оно конечно всегда массив)

[f]
(
['url'] = on
['date_domen'] = on
)
какая то сомнительная польза

  Ответить  
 
 автор: confirm   (16.06.2014 в 14:41)   письмо автору
 
   для: moonfox   (16.06.2014 в 14:27)
 

А вы понимаете выгоду массива?

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

  Ответить  
 
 автор: moonfox   (16.06.2014 в 14:45)   письмо автору
 
   для: confirm   (16.06.2014 в 14:41)
 

возможно его пример не отображает всей картины
но выгода массива тогда когда есть адекватная необходимость

  Ответить  
 
 автор: confirm   (16.06.2014 в 14:47)   письмо автору
 
   для: moonfox   (16.06.2014 в 14:45)
 

Все формы, это массив элементов, если только форма не содержит один элемент. Так что "адекватность", это что-то невразумительное.

  Ответить  
 
 автор: moonfox   (16.06.2014 в 14:55)   письмо автору
 
   для: confirm   (16.06.2014 в 14:47)
 

мы походу говорим не об одном и том же или об одном и том же по разному
1 элемент массива тоже тип данных массив
да и выше я писал "хотя оно все массив"
вы тоже говоря о выгоде массивом относительно формы как бы предполагаете что будет и не массив
короче не будем воду толочь.
челу группировка [f] если это все, нафиг не впала, ровно как и проверка такая.
приятного дня сударь.

PS хотя насколько я наблюдая вы предпочитаете чтоб последнее слово было за вами )

  Ответить  
 
 автор: confirm   (16.06.2014 в 15:06)   письмо автору
 
   для: moonfox   (16.06.2014 в 14:55)
 

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

А если охота быть последним, да не проблема, можете поставить и точку.

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

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