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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список с множественным выбором 
:(
    Опции темы
IEZ
  Дата 10.4.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Приветствую Всех!
Для добавления какой-либо записи в таблицу MySQL
использую форму одним из элементов которой является
список с множественным выбором. К примеру:
Цитата
<select name="mount[]" size=12 multiple>
<option value=1>январь</option>
<option value=2>февраль</option>
<option value=3>март</option>
<option value=4>апрель</option>
<option value=5>май</option>
.......
</select>

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


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
PARROT
Дата 10.4.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Помоему выбор из select придет так:
name=value
То есть в базу будет записываться значение по имени.
А не проще тогда написать так:

<select name="mount" size=12 multiple>
<option value=январь>январь</option>
<option value=февраль>февраль</option>
<option value=март>март</option>
<option value=апрель>апрель</option>
<option value=май>май</option>
.......
</select>
У меня так работало.
Записать:
Код

mysql_query("insert into table values('','$mount')");


Редактировать:

Код

mysql_query ("UPDATE table SET `mount`='$mount'");


Тоесть в базу будет писаться так:
`1`, `январь`
`2`, `декабрь`

немного не дочитала

Это сообщение отредактировал(а) PARROT - 10.4.2005, 14:27


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IEZ
Дата 10.4.2005, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PARROT
При множественном выборе в списке, в сценарий передается параметр в форме:
имя=значение&имя=значение...&имя=значение
Добавлено @ 14:23
А возможно ли для этого списка применить табличный параметр SET?


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 10.4.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



IEZ, юзай тип столбца set ( http://dev.mysql.com/doc/mysql/ru/set.html ).
Как он работает я до конца не разобрался. Если кто сможет объяснить на пальцах буду благодарен. Насколько я понял, там побитовое назначение значения, или что-то в этом роде.

При выводе будешь получать значения разделенные через запятую. Делаешь explode на полученное значение а потом в цикле прогоняешь options селетка и делаешь выбранные опции selected.
Добавлено @ 14:46
А, все, я понял. Вставляешь тоже через запятую нужные тебе значения.
Добавлено @ 14:49
Код

if(isset($_POST['mount'])) {
    // если форма отправлена, вставляем выбранные значения в столбец типа set через запятую.
    $sql = 'insert into tbl_name (id, mount) values (NULL, "'.implode(',' $_POST['mount']).'")';
    mysql_query($sql);
}



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 10.4.2005, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Соответственно форма выглядит так:
Код

<form method="post">

    <select name="mount[]" size=12 multiple>
        <option value=январь>январь</option>
        <option value=февраль>февраль</option>
        <option value=март>март</option>
        <option value=апрель>апрель</option>
        <option value=май>май</option>...
    </select>
    <input type="submit" name="s" value="l">
</form>

Добавлено @ 14:50
А поле set так
Код

set('январь', 'февраль', 'март', 'апрель', 'май',...)



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IEZ
Дата 10.4.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



IZ@TOP Вставлять я в SET научился, а именно:
Код

$query = "UPDATE menu SET id_status='0,1,2,3,4' WHERE id_menu=".$_POST['id_menu'];

А как вот вытащить '0,1,2,3,4' по отдельности для формирования SELECT не понимаю пока как сделать.
Добавлено @ 14:54
Цитата(IZ @ 10.4.2005, 14:49)
set('январь', 'февраль', 'март', 'апрель', 'май',...)

Вот как эту запись разодрать на элементы для if хотя бы.


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 10.4.2005, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



IEZ, надеюсь что так будет понятно:

Код

<?php

$mountresult    = 'январь,февраль,апрель'; // Это было выбрано из базы
$mountset    = array_flip(explode(',', $mountresult)); // ключи на значения а значение на ключи
$mount    = array('январь', 'февраль', 'март', 'апрель', 'май'); // Массив options'ов

?>

<form method="post">

    <select name="mount[]" size=12 multiple>
<?
while($m = array_shift($mount)) {
    if(isset($mountset[$m])) { // Если есть в массиве с выборки из бд ключ со значением оптионса, выводим его как selected
        echo "<option value=\"{$m}\" selected>{$m}</option>";
    } else {
        echo "<option value=\"{$m}\">{$m}</option>";
    }
}

?>
    </select>
    <input type="submit" name="s" value="l">
</form>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IEZ
Дата 10.4.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, пойду пробовать.


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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