Здравствуйте.
Сижу, туплю над казалось бы простейшей задачей.
<form action="" method="post">
.......
<label><input type="checkbox" name="upakovka" value="Упаковка нужна" /> Упаковать товар</label>
<label><input type="checkbox" name="dostavka" value="Доставка нужна" /> Доставить до двери</label>
.......
</form>
Получается, что при отправке формы, не важно, чекнуты ли чекбоксы, или нет, всё равно в $_POST['upakovka'] передаётся "Упаковка нужна", и в доставке тоже.
А нужно, чтобы если чекбокс не отмечен, ничего не передавалось.
Что я делаю не так? Спасибо.
Не могу воспроизвести вашу проблему. Хотя код почти такой же, я только value на 1 поменял:
<form action="" method="post">
<label>
<input type="checkbox" name="upakovka" value="1">
Упаковать товар
</label>
<label>
<input type="checkbox" name="dostavka" value="1">
Доставить до двери
</label>
<input type="submit" value="Send">
</form>
<?php
if ($_POST) {
var_dump($_POST);
}
if (isset($_POST['upakovka'])) {
var_dump($_POST['upakovka']);
}
Еще есть такой способ:
<input type="hidden" name="foo" value="0">
<input type="checkbox" name="foo" value="1">
Вы не должны использовать ничего в полях типа "чекбокс" в качестве значения. А если вы хотите чтобы поле было отмечено по умолчанию, используйте слово "checked". В любом случае, когда кто-то поставит/уберет галочку на вашем чекбоксе, значение "checked" появится/исчезнет там автоматически. А рядом (когда уже закрыли тэг) вы можете подписать что хотите Упаковка, Доставка и т.п.
<label><input type="checkbox" name="delivery" checked /> Доставка</label>
А при отправке через "POST" вам нужно лишь проверить наличие переменной
if ( isset($_POST['delivery']) == true ) {
echo "Покупатель заказал доставку";
}
Продвижение своими сайтами как стратегия роста и независимости