У меня на сайте есть несколько checkbox. Вот форма где они размещены: HTML: <form name='form1' method='post' action='add_ogo.php'> <input type="checkbox" name="options" value="повна комплектація" /> повна комплектація <input type="checkbox" name="options" value="шкіра" />шкіра <input type="checkbox" name="options" value="кондиціонер" />кондиціонер <input type="checkbox" name="options" value="клімат контроль" />клімат контроль <br> <input type='submit' name='submit' id='submit' value='Додати оголошення'> </form> И файл обработчик: PHP: if (isset($_POST['options'])){$options = $_POST['options'];} $result = mysql_query ("INSERT INTO avto (options) VALUES ('$options')"); if ($result == 'true') {echo "<p>ваше оголошення додане </p>";} else {echo "<p>ваше оголошення не додане</p>";} Так вот у меня в базу добавляется только последний из выбранных. Например если я выбрал второй и третий checkbox то добавляется только третий. Как сделать что бы добавились оба. Заранее спасибо.
ну дык постом тебе массив приходит(несколько значений) и обрабатывай их по отдельности(узнай размер массива), фильтруй значения, объединяй и пиши в бд.
name у любых двух эл-тов должен быть разным вариант1: пронумеровать вручную options1 , options2 и т.д вариант2: кидать данные в массив. в данном случае name может быть одинаковым и иметь вид options[] в массив $_POST в ячейку options прийдёт массив c указанными данными чтобы лучше иметь представление как всё содержится закомментируйте инсёрт в базу и добавьте var_dump("$_POST"); массив прийдёт только в указанном мною втором варианте , а в данном случае $_POST['options'] каждый раз перезаписывается выбранным эл-том доходя до последнего что и возвращает
Попробовал этот вариант в форме: HTML: <form name='form1' method='post' action='add_ogo.php'> <input type="checkbox" name="options[]" value="повна комплектація" /> повна комплектація <input type="checkbox" name="options[]" value="шкіра" />шкіра <input type="checkbox" name="options[]" value="кондиціонер" />кондиціонер <input type="checkbox" name="options[]" value="клімат контроль" />клімат контроль <br> <input type='submit' name='submit' id='submit' value='Додати оголошення'> </form> В обработчике все также оставил: PHP: if (isset($_POST['options'])){$options = $_POST['options'];} $result = mysql_query ("INSERT INTO avto (options) VALUES ('$options')"); if ($result == 'true') {echo "<p>ваше оголошення додане </p>";} else {echo "<p>ваше оголошення не додане</p>";} Теперь в базу заносится только одно слово Array. При использовании var_dump("$_POST"); как Вы советовали выводит string(5)"Array". Что я не так сделал подскажите пожалуйста? Буду очень признателен Вам за помощью
HTML: <form name='form1' method='post' action='add_ogo.php'> <input type="checkbox" name="options[]" value="повна комплектація" /> повна комплектація <input type="checkbox" name="options[]" value="шкіра" />шкіра <input type="checkbox" name="options[]" value="кондиціонер" />кондиціонер <input type="checkbox" name="options[]" value="клімат контроль" />клімат контроль <br> PHP: <?php if (isset($_POST['options'])) { $options = mysql_real_escape_string(implode(', ',$_POST['options'])); $query = "INSERT INTO avto (options) VALUES ('$options')"; die("запрос : ".$query); /*$result = mysql_query ($query); if ($result) { echo "<p>ваше оголошення додане </p>"; } else { echo "<p>ваше оголошення не додане</p>"; }*/ } else { echo "чек боксы не отмечены"; }
гуглить , гуглить и ещё раз гуглить! каждое неизвестное слово я 4 раза повторил слово "массив" , а вы не попытались узнать что это и с чем его едят =) http://php.su/learnphp/datatypes/?array делайте как показал Alex_pac , в бд внесутся через запятую порядковые номера отмеченных инпутов (отсчёт с 0, про это написано в описании массивов) в последовательности в которой они были в хтмл (ф-ция implode в примере) можете использовать это при выводе и можете дальше обрабатывать ф-цией explode () разбив строку на номера инпутов.