Есть несколько чек боксов, необходимо отправить в БД значения всех выделеных чекбоксов. Что необходимо прописать в РНР файле?
Вот приблизительное содержание формы:
<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?
Ты же пишешь foreach($type as $cid) {...
что значит $cid в твоём примере, и почему в скрипте ты используешь $type?
Спустя 1 минута, 44 секунды (1.08.2012 - 18:07) ХищныйЗверек написал(а):
Отправить - значит добавить в одну ячейку данные с отмеченых checkbox.
Скрипт писали до меня, не могу с ним никак разобраться
Скрипт писали до меня, не могу с ним никак разобраться
Спустя 2 минуты, 31 секунда (1.08.2012 - 18:09) inpost написал(а):
БД = таблица, у неё есть строки и колонки. В ней нельзя добавлять хаотично 1 ячейку вообще.
________________
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|X|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
Иксом я отменил, что такое ЯЧЕЙКА.
При этом данных много, а ячейка одна, как быть?
________________
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|X|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|
Иксом я отменил, что такое ЯЧЕЙКА.
При этом данных много, а ячейка одна, как быть?
Спустя 6 минут, 14 секунд (1.08.2012 - 18:16) ХищныйЗверек написал(а):
Смотрите, ситуация такая:
В базу данных, в одну ячейку необходимо занести данные об объекте недвижимости, а именно чем он является (Офис, либо Офис/склад, либо Офис, склад, здание), причем чем является объект - выбирается в checkbox и должно заноситься в ОДНУ ячейку, чтобы не было путаницы. Т.е.
Объект 1 | Офис;
Объект 2 | офис, здание;
И т.д.
Как обрабатывать массив таких checkbox и, при отметке нескольких "впихивать" их в БД в одну ячейку?
В базу данных, в одну ячейку необходимо занести данные об объекте недвижимости, а именно чем он является (Офис, либо Офис/склад, либо Офис, склад, здание), причем чем является объект - выбирается в 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.
Итак, чтобы решить эту задачу необходимо прочитать следующее:
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)...
$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
Ладно, домучивай уже
Ладно, домучивай уже

Спустя 2 минуты, 10 секунд (1.08.2012 - 18:36) inpost написал(а):
ХищныйЗверек
А ты не читаешь вообще, что я тебе выше написал? Я не думаю, что за эти 2 минуты ты смог прочитать материала на 3 пункта и на 1 день в целом?
А ты не читаешь вообще, что я тебе выше написал? Я не думаю, что за эти 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."'')");
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 элемент массива... и так далее.
Нет, $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
_____________
Вот закончу работу, а завтра...