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

HTML+CSS+JavaScript

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

 

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

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

тема: checkbox??
 
 автор: alex boxgorn   (14.06.2008 в 20:14)   письмо автору
 
 

каким образом работает checkbox с переменными? Не могу сообразить. Ни как флаг не устанавливается в зависимости от значения переменной $albom.
Т.е. есть форма в которой присутствует checkbox и выставляется значение из переменной $albom.
<input type="checkbox" name="albom" value="$albom">фотоальбом

необходимо из checkbox забрать значение после нажатия кнопки из $_POST[albom].

   
 
 автор: sim5   (14.06.2008 в 20:22)   письмо автору
 
   для: alex boxgorn   (14.06.2008 в 20:14)
 

Ничего не понятно, вы о чем? Если вы получаете не то значение, которое определено РНР-перменной $albom, то значит вы не верно выводите checkbox в браузер. Нужно:

<?php
//либо
echo "<input type=\"checkbox\" name=\"albom\" value=\"$albom\">";
?>
//любо
<input type="checkbox" name="albom" value="<?php =$albom?>">

А получить, при отмеченном checkbox, его значание, какие могут быть проблемы?

   
 
 автор: Alex Boxgorn   (14.06.2008 в 20:35)   письмо автору
 
   для: sim5   (14.06.2008 в 20:22)
 

В том то и дело, что ничего не выходит. А от checkbox мы получаем 0 или 1? или fales или true?
Почему-то галочка не выводится при $albom=1.
Значит value не достаточно, чтобы в форме по умолчанию флаг поднять если $albom=1 ?

   
 
 автор: sim5   (15.06.2008 в 04:10)   письмо автору
 
   для: Alex Boxgorn   (14.06.2008 в 20:35)
 


<form action="" method="post">
<input type="checkbox" name="as1" value="1"><br>
<input type="checkbox" name="as2" value=""><br>
<input type="checkbox" name="as3"><br>
<input type="submit" value="Send">
</form>
<?
echo "<pre>";
print_r($_POST);
echo 
"</pre>";
?>
//это то, что получим при отмеченных:
Array
(
    [as1] => 1
    [as2] => 
    [as3] => on
)

Вы уверены, что ваша $albom равна чему-то?

PS. Почему-то галочка не выводится при $albom=1. Вы просмотрите HTML код формы своей, сдается, что у вас в ней бардак.

   
 
 автор: alex boxgorn   (15.06.2008 в 07:46)   письмо автору
 
   для: sim5   (15.06.2008 в 04:10)
 

Я попробовал ваш пример протестировать. Все равно все флаги сброшены. Т.е. галочка не стоит в первом checkbox-е (as1), хотя value=1.

   
 
 автор: sim5   (15.06.2008 в 07:51)   письмо автору
 
   для: alex boxgorn   (15.06.2008 в 07:46)
 

У вас что, эксклюзивная сборка браузер+РНР? Покажите ваш РНР-код, которым вы отдаете форму в браузер, или результирующий HTML-код формы.

   
 
 автор: Alex Boxgorn   (15.06.2008 в 08:18)   письмо автору
 
   для: sim5   (15.06.2008 в 07:51)
 

сипользовал вот это в файл rr.php
<form action="" method="post"> 
<input type="checkbox" name="as1" value="1"><br> 
<input type="checkbox" name="as2" value=""><br> 
<input type="checkbox" name="as3"><br> 
<input type="submit" value="Send"> 
</form> 
<? 
echo "<pre>"
print_r($_POST); 
echo 
"</pre>"
?> 
//это то, что получим при отмеченных: 
Array 

    [as1] => 1 
    [as2] =>  
    [as3] => on 

Получил HTML код
<form action="" method="post"> 
<input type="checkbox" name="as1" value="1"><br> 
<input type="checkbox" name="as2" value=""><br> 
<input type="checkbox" name="as3"><br> 
<input type="submit" value="Send"> 
</form> 
<pre>Array
(
)
</pre> 
//это то, что получим при отмеченных: 
Array 

    [as1] => 1 
    [as2] =>  
    [as3] => on 

Проверял этот код на нормальном хостинге АГАВА

   
 
 автор: sim5   (15.06.2008 в 08:45)   письмо автору
 
   для: Alex Boxgorn   (15.06.2008 в 08:18)
 

Значит так. Галочек РНР вообще никаких не видит, он видит только переданные переменные и их значения. Увидит он их только в том случае, если чекбокс будет выбран. Выбор не зависит от РНР, то есть то, что вы говорите постоянно - "не видно галочки", означет, что вы не верно трактуете свою проблему. У вас просто не принимаются данные переданные методом POST.
Выполните это, отметив чекбокс:

<form action="" method="post">  
<input type="checkbox" name="as1" onclick="alert(this.value)" value="1">  
<input type="submit" value="Send">  
</form>  
<?  
echo "<pre>";  
print_r(get_defined_vars()); 
echo 
"</pre>";  
?>

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

   
 
 автор: PAT   (15.06.2008 в 08:53)   письмо автору
 
   для: alex boxgorn   (15.06.2008 в 07:46)
 

Хе-хе...
Состояние чекбокса от содержимого VALUE никак НЕ ЗАВИСИТ.
Чтобы чекбокс был помеченным, вам надо прописать в нем атрибут CHECKED.

   
 
 автор: sim5   (15.06.2008 в 09:10)   письмо автору
 
   для: PAT   (15.06.2008 в 08:53)
 

Блин, так он не выбирает, а по умочанию хочет. А я думал что он галочку никак не установит. ))

   
 
 автор: Alex Boxgorn   (15.06.2008 в 09:55)   письмо автору
 
   для: sim5   (15.06.2008 в 09:10)
 

Галочки установить могу. Только по умолчанию они не устанавливаются. Приходится делать вот так:
           if($fotonastroy == 0){
            $main .= "<td>&nbsp;&nbsp;<input type=\"checkbox\" name=\"fotonastroy\" value=\"0\">включить";
            }else{$main .= "<td>&nbsp;&nbsp;<input type=\"checkbox\" name=\"fotonastroy\" checked value=\"1\">включить";}
              $main .= "</td></tr>";

В этом случае все галочки выставляются в зависимости от значения $fotonastroy но вот дальше, при любой установке или снятии галочки, все равно возвращается в $_POST[fotonastroy] ноль.
Причем вот такая фиговина работает отменно:
            if($a_hiden == 0){
            $main .= "<input type=\"radio\" name=\"hiden\" checked value=\"0\">Отображать<input type=\"radio\" name=\"hiden\" value=\"1\">Скрыть";
            }else{$main .= "<input type=\"radio\" name=\"hiden\" value=\"0\">Отображать<input type=\"radio\" name=\"hiden\" checked value=\"1\">Скрыть";}

Как же пользоваться checkbox если такие проблемы наворачиваются?

   
 
 автор: PAT   (15.06.2008 в 10:15)   письмо автору
 
   для: Alex Boxgorn   (15.06.2008 в 09:55)
 

Никаких проблем с чекбоксами НИ У КОГО, кроме вас, НИКОГДА НЕ БЫЛО и НЕТ.

Опишите свои "непонятки" РУССКИМИ СЛОВАМИ/ПРЕДЛОЖЕНИЯМИ.

Например, так:
Хочу, чтобы пользователь на странице увидел два (три, четыре...) чекбокса.
И чтобы у одного из них СРАЗУ была видна галочка (или - наоборот, чтобы не было никаких галочек).
Если пользователь по чекбоксам кликать не будет ВОВСЕ, то хочу при сабмите формы поиметь в потоке вывода - ТО-ТО, а вот если кликнет - то ДРУГОЕ...
И т.д....

Напишите, покажите соседу-алкоголику. Если тот поймет СУТЬ того, что вам надо, тогда постите этот вопрос здесь.
А если сосед не поймет, то перепишите ТАК, чтобы даже он понял.

А ваши многочисленные коды с идиотскими слешами от PHP ничего здесь никому не поясняют и пояснить не могут.

   
 
 автор: sim5   (15.06.2008 в 11:34)   письмо автору
 
   для: Alex Boxgorn   (15.06.2008 в 09:55)
 


<?
$main 
.= "<td>&nbsp;&nbsp;<input type=\"checkbox\" name=\"fotonastroy\" 
value=\"
$fotonastroy\">" $sel $fotonastroy "показать" "скрыть";
//выведет чекбокс с необходимым значением и подписью, не надо никакого else 

   
 
 автор: KingLion   (15.06.2008 в 10:51)   письмо автору
 
   для: alex boxgorn   (14.06.2008 в 20:14)
 

По моему тут всё элементарно просто. И выдумывать ничего не надо.
Во-первых, тебе надо установить значение чекбокса по умолчанию в зависимости от переменной $albom. Это делается так:

<input type="checkbox" name="albom" <?= ($albom==1)?"checked":"" ?>>

Если потребуются пояснения то скажи, поясню.

Второе. Тебе надо забрать значение переменной из массива $_POST[] на стороне сервера. Дело в том что если галочка на станице установлена, то соответствующий элемент массива будет создан, в противном случае нет. Следовательно код такой:

<?
if (isset($_POST["albom"]))
// Галочка стоит, выполняем нужные действия
}
else
// В противном случае нет :)
}
?>


Вот вроде так. Попробуй. Должно получиться. Мог где-то ошибиться в синтаксисе, но принцип такой.

   
 
 автор: Alex Boxgorn   (15.06.2008 в 13:22)   письмо автору
 
   для: KingLion   (15.06.2008 в 10:51)
 

Огромное спасибо тебе KingLion !!!
Выручил дружище!!!
Все заработало!! Я же не глупый - все понимаю, когда просто и понятно обьясняют.
:-)
Теперь буду знать как с checkbox-ами правильно работать!!

   
 
 автор: sim5   (15.06.2008 в 13:48)   письмо автору
 
   для: Alex Boxgorn   (15.06.2008 в 13:22)
 

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

   
 
 автор: Alex Boxgorn   (15.06.2008 в 15:05)   письмо автору
 
   для: sim5   (15.06.2008 в 13:48)
 

Не серчай sim5. :-) Как мог объяснил. Не думал, что непонятно будет. Всем огромное спасибо!!!

   
 
 автор: sim5   (15.06.2008 в 15:19)   письмо автору
 
   для: Alex Boxgorn   (15.06.2008 в 15:05)
 

Да мне то собственно все равно, вам ведь нужно, а не мне. Поэтому вам надо объяснять, а не остальным догадываться.

   
Rambler's Top100
вверх

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