[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: CheckBox с одинаковым name
ХищныйЗверек
Помогите пожалуйста! Уже два дня мучаюсь. Ситуация такая:
Есть несколько чек боксов, необходимо отправить в БД значения всех выделеных чекбоксов. Что необходимо прописать в РНР файле?
Вот приблизительное содержание формы:
<td>
<p><input type="CHECKBOX" name="type[1]" value="Торговое помещение"/>Торговое помещение<br>
<input type="checkbox" name="type[2]" value=" Офис" selected/>Офис<br>
<input type="checkbox" name="type[3]" value=" Склад"/>Склад<br>
<input type="checkbox" name="type[4]" value=" Здание"/>Здание</p>
</td>

А вот что прописано в РНР скрипте:
$type=$_POST["type"];
$c=0;
$where='';
foreach ($type as $cid) {
echo "INSERT INTO predlozh (type) values ('".$type."')";



Спустя 2 минуты, 12 секунд (1.08.2012 - 18:05) inpost написал(а):
что значит "отправить в БД"? БД имеет операторы: добавление записей, обновление записей, удаление записей, копирование записей.
Ты же пишешь foreach($type as $cid) {...
что значит $cid в твоём примере, и почему в скрипте ты используешь $type?

Спустя 1 минута, 44 секунды (1.08.2012 - 18:07) ХищныйЗверек написал(а):
Отправить - значит добавить в одну ячейку данные с отмеченых checkbox.
Скрипт писали до меня, не могу с ним никак разобраться

Спустя 2 минуты, 31 секунда (1.08.2012 - 18:09) inpost написал(а):
БД = таблица, у неё есть строки и колонки. В ней нельзя добавлять хаотично 1 ячейку вообще.
________________
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|X|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|

Иксом я отменил, что такое ЯЧЕЙКА.

При этом данных много, а ячейка одна, как быть?

Спустя 6 минут, 14 секунд (1.08.2012 - 18:16) ХищныйЗверек написал(а):
Смотрите, ситуация такая:
В базу данных, в одну ячейку необходимо занести данные об объекте недвижимости, а именно чем он является (Офис, либо Офис/склад, либо Офис, склад, здание), причем чем является объект - выбирается в checkbox и должно заноситься в ОДНУ ячейку, чтобы не было путаницы. Т.е.
Объект 1 | Офис;
Объект 2 | офис, здание;
И т.д.

Как обрабатывать массив таких checkbox и, при отметке нескольких "впихивать" их в БД в одну ячейку?

Спустя 11 минут, 3 секунды (1.08.2012 - 18:27) inpost написал(а):
Мало того, что мы до этого видели ошибки скрипта, на данный момент появляется новая ошибка - логическое мышление.
Итак, чтобы решить эту задачу необходимо прочитать следующее:
1) Как работает foreach, как работать с данными при каждой инерции цикла и что попадает в переменную под именем $cid, потому что именно эту переменную внутри foreach и надо использовать, а не $type.
2) Как записать в БД. Для этого нужна функция mysql_query, аргументом в функцию мы передаём запись.
3) Неправильная логика построения баз данных, объект №1, объект№2 - это таблица №1. Офис, здание - это вторая таблица, которая должна хранить информацию объектов. Чтобы понять то, что я говорю тебе необходимо почитать про первые 3 НОРМАЛЬНЫХ формы Баз Данных. Гуглится очень просто, но материала много, на страниц 10, так что надо внимательно это изучить, чтобы не делать тот ужас, что хочешь сделать сейчас!

В твоём скрипте вместо того, чтобы записать данные в БД ты их просто выводишь на экран через echo.

Спустя 4 минуты, 45 секунд (1.08.2012 - 18:31) ХищныйЗверек написал(а):
Хорошо, если опустить сам скрипт, как обработать такой массив? В частности, я писал такой код:
$type=$_POST["type"];
$result=mysql_query("INSERT INTO tablica (type) VALUES ('".$type."','");
Но тогда он выводит мне в бд надпись "Массив" (array)...

Спустя 1 минута, 3 секунды (1.08.2012 - 18:33) kamanch написал(а):
Для свойств объекта отдельныую таблицу заведи.
objects
o_id | o_name
1 Объект 1
2 Объект 2



property:
p_id | o_id | p_name
1 1 Здание
2 1 Офис
3 2 Склад

Спустя 1 минута, 19 секунд (1.08.2012 - 18:34) kamanch написал(а):
inpost
Ладно, домучивай уже smile.gif

Спустя 2 минуты, 10 секунд (1.08.2012 - 18:36) inpost написал(а):
ХищныйЗверек
А ты не читаешь вообще, что я тебе выше написал? Я не думаю, что за эти 2 минуты ты смог прочитать материала на 3 пункта и на 1 день в целом?

Спустя 2 часа, 9 минут, 11 секунд (1.08.2012 - 20:45) ХищныйЗверек написал(а):
Получился такой код, но он возвращает непонятное значение (от 0 до 3) в БД в зависимости от колличества выбранных checkbox-ов.

if(isset($_POST["type"])) {
foreach($_POST["type"] as $value=>$type);}
$result=mysql_query("INSERT INTO tablica (type) VALUES ('".$type."'')");

Спустя 2 минуты, 13 секунд (1.08.2012 - 20:47) inpost написал(а):
Ты понимаешь, зачем ты используешь foreach вообще? И что конкретно данный цикл делает?

Спустя 3 минуты, 34 секунды (1.08.2012 - 20:51) ХищныйЗверек написал(а):
Если не ошибаюсь: при проходе каждого элемента массива в переменную $key помещается индекс этого элемента, а в переменную $value – его значение.

Спустя 7 минут, 45 секунд (1.08.2012 - 20:59) inpost написал(а):
ХищныйЗверек
Нет, $value тут ни при чём. С левой стороны key, с правой - значение:
$_POST['type'] as $k=>$v

При этом это действует в области фигурных скобок. Открыл фигурные скобки, внутри них существует и $k и $v, там же идёт итерация цикла и с каждым элементом массива работаешь в каждой итерации.
1 итерация цикла = 1 элемент массива... и так далее.

Спустя 53 минуты (1.08.2012 - 21:52) Guest написал(а):
Цитата (inpost @ 1.08.2012 - 21:59)

инерция цикла

В смысле итерация цикла или это на сленге так называют?

Спустя 5 минут, 43 секунды (1.08.2012 - 21:57) inpost написал(а):
Guest
Подправил.

Спустя 5 дней, 17 часов, 15 минут, 5 секунд (7.08.2012 - 15:13) ХищныйЗверек написал(а):
Разобрался сам, тема закрыта, отдельное спасибо пользователю Inpost


_____________
Вот закончу работу, а завтра...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.