выбраны оба checkbox

chaynik

Новичок
выбраны оба checkbox

Задача в том, чтобы при выборе первого checkbox писалось "Вы выбрали значение 1"
при выборе второго -- "Вы выбрали значение 2" ну и при выборе третьего - "Вы выбрали значение 3"
Но если выбраны два или три чтобы не писалось "Вы выбрали значение 1"
"Вы выбрали значение 2"
"Вы выбрали значение 3" а вот так "Вы выбрали значение 1, значени 2, значение 3" общий кусок "Вы выбрали " дублировать не нужно. Люди как это делается....ну ничерта не получается...

вот мой код
<form action="<?php echo $_SERVER['REQUEST_URI']?>" method="post">
<input type=checkbox name="chek[]" value="chek1"> значение 1
<input type=checkbox name="chek[]" value="chek2"> значение 2
<input type=checkbox name="chek[]" value="chek3"> значение 3

<input type="submit" name="submit" value="Выбрали">
<? if($submit)
{$sel_chek=$_POST['chek'];
for($i=0;$i<count($sel_chek);$i++)
{
if ($sel_chek[$i]=='chek1'){echo "Вы выбрали значение 1";}
else if ($sel_chek[$i]=='chek2'){echo "Вы выбрали значение 2"; }
else if ($sel_chek[$i]=='chek3'){echo "Вы выбрали значение 3";}
}
}?>

</form>
 

Фанат

oncle terrible
Команда форума
вообще-то, чекбокс - это не радиобатон.
может, стоит посмотреть синтаксис в учебнике html перед использованием?
 

chaynik

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

kruglov

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

chaynik

Новичок
хорошо код должен выдавать следующие сообщения
при выборе одного из чекбоксов сообщение соот-ее выбранному
"Вы выбрали значение 1(2)(3)"
первого и второго (или третьего) -
"Вы выбрали значение 1"
"Вы выбрали значение 2(3)"
при выборе второго и третьего
"Вы выбрали значение 2, значение 3"
при выборе всех троих
"Вы выбрали значение 1"
"Вы выбрали значение 2, значение 3"
Вот так....
Т.е. сообщ-ие для первого чекбокса остаётся неизменным
 

Gorynych

Посетитель PHP-Клуба
chaynik

1) код должен выдавать "Вы выбрали" если вообще что-то выбрано, т.е. в массиве $_POST['chek'] есть элементы
PHP:
if ( isset($_POST['check']) && sizeof($_POST['check']) ) {
    echo "Вы выбрали ";
}
$sel_chek=$_POST['check'];
2) так как значений может быть выбрано более одного, нужен разделитель. Начальное значение разделителя - пусто "", как только найдено хотя бы одно выбранное значеие, значение разделителя меняется на ", "
PHP:
$sep = "";
$pos = strlen("check");
foreach($sel_check as $k => $v) {
	echo $sep."значение ".substr($v, $pos);
	$sep = ", ";
}
 

chaynik

Новичок
а если бы сообщение для первого чекбокса не начиналось с надписи "Вы выбрали", а только для второго и третьего как тогда быть
 

Gorynych

Посетитель PHP-Клуба
chaynik
...а если бы для каждого выбора сообщение было бы уникальным?

собственно, я хотел Вам сказать только о том, что

1) факт выбора хотя бы одного checkbox'а из группы - это наличие элементов в массиве

2) при перечислении заранее неизвестного количества элементов, от одного и более, стоит использовать переменную-разделитель, изначально (на первом шаге цикла) пустую

а количество "а если бы" тут может быть очень большим

-~{}~ 19.02.07 15:50:

Dovg

а что означает существование $_POST['check'][1]? Думаете, это значит, что пользователь отметил второй чекбокс? Не-а, в данном случае это значит только то, что пользователь отметил более одного чекбокса :)
 

Dovg

Продвинутый новичок
Gorynych
Ошибся...
Но у него еще имя есть, которое, судя по первому посту, уникальное
 

chaynik

Новичок
Вообще-то если я правильно поняла, то код такой, но он не работает
<input type="submit" name="submit" value="Выбрали">
<? if($submit)
{

if ( isset($_POST['check']) && sizeof($_POST['check']) ) {
echo "Вы выбрали ";
}
$sel_chek=$_POST['check'];


$sep = "";
$pos = strlen("check");
foreach($sel_check as $k => $v) {
echo $sep."значение ".substr($v, $pos);
$sep = ", "; }

}?>

</form>
 

AmdY

Пью пиво
Команда форума
во первых
----------------
<input type=checkbox name="chek[1]" value="chek"> значение 1
<input type=checkbox name="chek[2]" value="chek"> значение 2
<input type=checkbox name="chek[3]" value="chek"> значение 3
---------------------------------------------------------------------------------
во вторых
----------------
if(isset($_POST['submit']) && $_POST['submit'])
--------------------------------------------------------------------------------
в третьих
------------------------------
foreach($_POST['chek'] as $k => $v) {
echo $sep."значение " . $k;
$sep = ", ";
}
 

hermit_refined

Отшельник
уважаемая chaynik!
мне кажется, всем будет только лучше, если вы сначала всякие книжки почитаете.
с теми знаниями, что у вас сейчас есть, вы шагу самостоятельно ступить не сможете.
 

AmdY

Пью пиво
Команда форума
а лучше мануал покурить, а то в книжках типа РНР за 24 часа, такое понаписали...
когда вижу if($submit) у меня разгоряется жажда крови, уроды, они ещё за это и деньги получают.
 

Akick

Новичок
Автор оригинала: AmdY
а лучше мануал покурить, а то в книжках типа РНР за 24 часа, такое понаписали...
когда вижу if($submit) у меня разгоряется жажда крови, уроды, они ещё за это и деньги получают.
Если бы только в книжках (((
 

chaynik

Новичок
Спасибо всем конечно за помощь, но проблема не решилась...
Эту задачку можно решить разными способами и изначально я дала слишком простой пример и немного не так сформулировала, тут не так всё просто...
допустим вот так
<input type=checkbox name="chek[]" value="chek1"> правильный ответ
<input type=checkbox name="chek[]" value="chek2"> значение 2- не являются правильными
<input type=checkbox name="chek[]" value="chek3"> значение 3 - не являются правильными
Так что код
foreach($_POST['chek'] as $k => $v) {
echo $sep."значение " . $k;
$sep = ", ";
}
Здесь не подойдёт, тут надо либо переменную передавать и запоминать в цикле либо ещё как-то, крутиться в голове, но всё не то...
 

Alexander Coral

Новичок
Автор оригинала: chaynik
Спасибо всем конечно за помощь, но проблема не решилась...
Данный код работает на 100%:
PHP:
<?php

if (isset($_POST['check'])) {

    echo "Вы выбрали ";
    $sel_check = $_POST['check'];
    $sep = "";
    $pos = strlen('check');

    foreach($sel_check as $k => $v) {
        echo $sep."значение ".substr($v, $pos);
        $sep = ", ";
    }
   
}
else {
    echo "Вы ничего не выбрали";
}

?>
<form action="" method="post">
<input type=checkbox name="check[]" value="check1"> значение 1
<input type=checkbox name="check[]" value="check2"> значение 2
<input type=checkbox name="check[]" value="check3"> значение 3
<input type="submit" name="submit" value="Выбрали">
</form>
 
Сверху