Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> checkbox как записать в базу множественый выбор, как записать все выбраные checkbox-ы  
V
    Опции темы
Цербер
Дата 19.12.2007, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Всем доброе время суток.
вопрос звучит так:
у меня есть форма с checkbox-ами делаю множественный выбор но в базу сохраняется только один из них последний выбранный.
Код

foreach ( $_POST['med'] as $k=>$v)
{
    print_r($k.$v);
}
показывает все выбранные значения а в базу добавляет тока одно.
и вторая часть вопроса как потом изменить запись в поле UPDATE-ом ?
делаю тоже foreach И заппрос на обновление в базу но он не обновляет=(
ну вот такая проблемка у меня  smile за ответы всех заранее благодарю!
PM MAIL ICQ   Вверх
onsql
Дата 19.12.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 3.12.2007

Репутация: нет
Всего: 3



В html у тебя ведь примерно так?
Код

<input type="checkbox" name="med[]" value="1" />
<input type="checkbox" name="med[]" value="2" />
<input type="checkbox" name="med[]" value="3" />

PM MAIL   Вверх
Цербер
Дата 19.12.2007, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Код

<input type='checkbox'name='med[]' value='1'>1
<input type='checkbox'name='med[]' value='2'>2
<input type='checkbox'name='med[]' value='3'>3

foreach ( $_POST['med'] as $k=>$v)
{
    
}
$sql_med="UPDATE `medical` SET `med`='$v' WHERE login='{$_SESSION['username']}'";
if(!empty($v)) return $result3=mysql_query($sql_med)or die ($sql_med." ".mysql_error());



Это сообщение отредактировал(а) Цербер - 19.12.2007, 00:45
PM MAIL ICQ   Вверх
onsql
Дата 19.12.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 3.12.2007

Репутация: нет
Всего: 3



Мда... Ну последнее значение ты туда записываешь потому что именно оно лежит в переменной $v после выполнения цикла. А вот если например выбрали 2 и 3 то что же должно попасть в поле med в таблице medical по твоей задумке?
Может быть ты путаешь UPDATE и INSERT?
PM MAIL   Вверх
skyboy
Дата 19.12.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



читаешь данніе из массива в цикле.
записіваешь в БД вне цикла.
естественно, запись происходит однократно. 
где аномалия?
PM MAIL   Вверх
Цербер
Дата 19.12.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



вот и я о том же как мне сделать так что бы в таблицу записывался множественный выбор и при обновлении запись изменялась! smile 
PM MAIL ICQ   Вверх
Feldmarschall
Дата 19.12.2007, 00:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Цербер,  давай-ка ты забудешь на время про форму с множественным выбором.

И попробуешь сначала написать несколько запросов подряд в скрипте.
которые делают то, что тебе нужно.
А то, во-первых, окруюающим непонятно, чего ты хочешь, а во-вторых - ты сам слабо понимаешь, где у тебя связь между чекбоксами, запросами и базой данных.

PM   Вверх
Цербер
Дата 19.12.2007, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



если без формы просто запросы на update и insert то так всё работает. а вот связать чекбокс и запросы не додумкаю никак. smile 
PM MAIL ICQ   Вверх
Feldmarschall
Дата 19.12.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



отлично.
вот и напиши эти запросы здесь.
отдельно на update и отдельно - на insert

чтобы окружающие могли понять, наконец - что тебе надо.

к тому же я сомневаюсь, что "просто запросы" у тебя работают. 
как правильно заметил onsql, запрос
$sql_med="UPDATE `medical` SET `med`='$v' WHERE login='{$_SESSION['username']}'";
для множественного выбора выглядит странновато.
и ты, возможно, путаешь update и insert 

Это сообщение отредактировал(а) Feldmarschall - 19.12.2007, 01:04
PM   Вверх
onsql
Дата 19.12.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 3.12.2007

Репутация: нет
Всего: 3



Ну так приведи пример этих работающих запросов, угадать то сложно.
PM MAIL   Вверх
Цербер
Дата 19.12.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



это запрос на INSERT, запрос сам работает, но добавляет тока последий выбраный checkbox, а в планах что бы добовлялись все выбранные.
Код

html - код
<input type="checkbox"name="med[]" value="a">a
<input type="checkbox"name="med[]" value="b">b
<input type="checkbox"name="med[]" value="c">c

php - код
foreach ($_POST['med'] as $med)
{
    
}
$result=mysql_query("INSERT INTO medical (med) VALUES ('{$med}'");


Это запрос на UPDATE. вот он вообще не работает, даже при единичном выборе checkboxa, все остальные запросы срабатывают в форме и обновляют другие записи в таблице а вот checkbox менятся не хочет.
Код

html- код
<input type='checkbox'name='med[]' value='d'> d
<input type='checkbox'name='med[]' value='e'> e
<input type='checkbox'name='med[]' value='f'> f
php - код
$sql_med="UPDATE `medical` SET `med`='$med' WHERE login='{$_SESSION['username']}'";
if(!empty($med)) return $result3=mysql_query($sql_med)or die ($sql_med." ".mysql_error());



я думаю что всё связано с foreach тока как додумать это тему понять не могу!жду вашей помощи! smile 
PM MAIL ICQ   Вверх
Feldmarschall
Дата 19.12.2007, 19:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Цитата(Цербер @  19.12.2007,  18:19 Найти цитируемый пост)
запрос сам работает, но добавляет тока последий выбраный checkbox


может быть, стоит поместить его внутрь цикла?

другое дело - непонятно, какой смысл вставлять в таблицу medical только поле med, без других полей.

Цитата(Цербер @  19.12.2007,  18:19 Найти цитируемый пост)
запрос на UPDATE. вот он вообще не работает, даже при единичном выборе checkboxa

Что значит - "не работает"? Не выполняется? не обновляет? обновляет, но не то?

Цитата(Цербер @  19.12.2007,  18:19 Найти цитируемый пост)
   smile 

Ты можешь хотеть пример хоть до пенсии. 
но пока ты человеческим языком не объяснишь, что тебе надо, пример ты получишь врядли.

Насколько я могу судить по твоим примерам, ты очень слобо сбее представляешь свою базу данных, и что от неё хочешь получить. 
тебе надо забыть про множественные селекты, про формы и про PHP
и разобраться с базой данных сначала. какие данные ты в ней хранишь, как хранишь, и какими запросами обрабатываешь.
PM   Вверх
Цербер
Дата 19.12.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Цитата

может быть, стоит поместить его внутрь цикла?

если можно покажи как ?

Цитата

Что значит - "не работает"? Не выполняется? не обновляет? обновляет, но не то?

он не обновляет хотя ошибки не выдаёт.
PM MAIL ICQ   Вверх
Feldmarschall
Дата 19.12.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Цитата(Цербер @  19.12.2007,  22:23 Найти цитируемый пост)
если можно покажи как ?

переместить на две строчки выше.

но я совсем не уверен, что этот запрос делает что-то полезное.

Цитата(Цербер @  19.12.2007,  22:23 Найти цитируемый пост)
он не обновляет хотя ошибки не выдаёт. 


Ну выведи его хоть на экран-то. Глазами посмотри - что за запрос ты в базу пишешь. Соответствует ли он твои ожиданиям. Если они есть у тебя - эти ожидания.
PM   Вверх
onsql
Дата 19.12.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 3.12.2007

Репутация: нет
Всего: 3



Вот например в тупую с инсертом.
Код


html - код
<input type="checkbox"name="med[]" value="a">a
<input type="checkbox"name="med[]" value="b">b
<input type="checkbox"name="med[]" value="c">c

php - код
foreach ($_POST['med'] as $med)
{
$result=mysql_query("INSERT INTO medical (med) VALUES ('".mysql_real_escape_string($med)."')");    
}


Но поскольку ты тщательно скрываешь информацию о том, какого результата ты хочешь добиться, то и угадать нужную команду весьма сложно. В случае же с update, по прежнему непонятно что ты хочешь сказать. Хочешь все выбраные значения в поле med забить? Или всё таки несколько строк обновить? Какова вообще структура таблицы medical? Без этого сложно сказать что либо...
PM MAIL   Вверх
Цербер
Дата 19.12.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



неа не пашет вот это.
Код

php - код
foreach ($_POST['med'] as $med)
{
$result=mysql_query("INSERT INTO medical (med) VALUES ('".mysql_real_escape_string($med)."')");    

}

не работает.
если кто нить сталкивался с проблемой похожей оставьте здесь пример!
задача скрипта.
при регистрации пользователь отмечает в чекбоксе свои интересы все отмеченые галочками заносятся в базу, далее после того как юзер зарегился у него свой кабинет с его инфой он хочет обновить свои интересы и опять нажимает на галочки после чего скрипт обновляет его данные!
вот чего я добиваюсь!надеюсь в этот раз все меня поняли smile 

Код

foreach ($_POST['med'] as $med)
{
    $result=mysql_query("INSERT INTO medical (med) VALUES ('{$med}'");
}//так тоже не работает- вообще не записывает в базу ни одного элемента.


Код

if(!empty($_POST['med'])) 
{

foreach ($_POST['med'] as $checkbox)
{
    $sql_med=("Update `medical` set `med` = '$checkbox' where login='{$_SESSION['username']}'");
     mysql_query($sql_med);   
}
}//так тоже не обновляет


Это сообщение отредактировал(а) Цербер - 19.12.2007, 23:45
PM MAIL ICQ   Вверх
onsql
Дата 19.12.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 3.12.2007

Репутация: нет
Всего: 3



А если так поменять, не возникнет ли при выбранных галочка печать про mysql_query() failed?

Код

foreach ($_POST['med'] as $med)
{
  $result=mysql_query("INSERT INTO medical (med) VALUES ('".mysql_real_escape_string($med)."')");
  if (false === $result)
     die('mysql_query() failed: '.mysql_error());
}


Цитата

задача скрипта.
при регистрации пользователь отмечает в чекбоксе свои интересы все отмеченые галочками заносятся в базу...


Ну круто. И как ты предполагаешь хранить в базе несколько интересов? Приведи пример?
PM MAIL   Вверх
Цербер
Дата 20.12.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



Цитата

И как ты предполагаешь хранить в базе несколько интересов? Приведи пример?

как обычный текст... или так нельзя?
or die и mysql_error всё я это пробовал!
мускул ошибки не выдаёт=(

PM MAIL ICQ   Вверх
onsql
Дата 20.12.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 3.12.2007

Репутация: нет
Всего: 3



Но ведь чудес не бывет? 
Либо $_POST['med'] пусто и в цикл foreach ты не попадаешь - это легко посмотреть, поставив печать внутрь цикла. 
Либо ты попадаешь в цикл и происходит ошибка в insert - тогда должен срабатывать die() и скрипт прерываться (может у тебя php ошибки в лог пишутся и ты их на экране не видишь).
Либо ты попадаешь в цикл и ошибки при выполнении insert не происходит - тогда ты должен видеть новые строки в базе.
Либо тот код, который ты запускаешь, отличается от того что ты написал в форуме.

PM MAIL   Вверх
Цербер
Дата 21.12.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 21.11.2007

Репутация: нет
Всего: 1



короче всё с чекбохами разобрался. всем спасибо!
чекбоксы это связываемая таблица! а я просто не знал об этом=) 
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1519 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.