[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Условие для Мультиселекта
Slavok47
Здравствуйте! Подскажите как реализовать такое:
Имеетря элемент селект со множественным выбором, задача сделать так чтобы при последуючем фходе в форму, в элементе били выбранны те опшины которые сохранились, для обычного селекта я сделал так:
if ($i <= 5)  {
$sel='';
if ($row['id'] == $usares['usa_prem'])
$sel=' selected';
$usaprem.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usaprem']."</option>";
}

где в
if ($row['id'] == $usares['usa_prem'])

сравниваются значения, и если они равны то подставляется selected к опшину, а из мультиселекта значения в БД записываются как 1,2,3.... значит selected должен подставится к 1,2 и 3 опшину, собственно в этом и проблема, помогите пожалуйста решить ее.
Спасибо!



Спустя 2 часа, 14 минут, 16 секунд (21.06.2010 - 10:53) KaFe написал(а):
в чем проблема, в том что он ставит 1,2,3 или не ставит???

Спустя 25 минут, 25 секунд (21.06.2010 - 11:18) Slavok47 написал(а):
Проблема: не знаю как сделать условие не для одного выбора, а множества, которые в БД хранятся как 1,2,3...

Спустя 1 день, 58 минут, 28 секунд (22.06.2010 - 12:17) Slavok47 написал(а):
Вобщем вот что я натворил:
$ces = explode(",", $usares['usa_prem']);      
if ($i <= 5) {
$max = 5;
for ($t=0; $t < $max; $t)
{
$sel='';
if (in_array($t,$ces))
$sel=' selected';
$usaprem.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usaprem']."</option>";
}}

но есть проблема, всего 5 опшинов, но сейчас они продублировались 5 раз, стало 25, в чем ошибка?

Спустя 16 минут (22.06.2010 - 12:33) tomash написал(а):
for ($t=0; $t < $max; $t++)

Спустя 2 минуты, 41 секунда (22.06.2010 - 12:35) Slavok47 написал(а):
tomashя знаю что этот цикл дублирует, вопрос как это исправить

Спустя 4 минуты, 19 секунд (22.06.2010 - 12:40) tomash написал(а):
Slavok47
Я же написал, вы не инкриминируете $t, она у Вас всегда < 5

Спустя 3 часа, 40 минут, 15 секунд (22.06.2010 - 16:20) Slavok47 написал(а):
Цитата (tomash @ 22.06.2010 - 09:33)
for ($t=0; $t < $max; $t++)

Все равно дублируются

Спустя 3 минуты, 54 секунды (22.06.2010 - 16:24) tomash написал(а):
А как Вы их выводите?

Спустя 2 минуты, 37 секунд (22.06.2010 - 16:26) Slavok47 написал(а):
Опшины?
$usaprem.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usaprem']."</option>";

Спустя 11 минут, 52 секунды (22.06.2010 - 16:38) tomash написал(а):
Можно посмотреть весь код?

Спустя 1 час, 53 минуты, 22 секунды (22.06.2010 - 18:32) Slavok47 написал(а):
да собственно кроме запроса в БД больше и нет ни чего

Спустя 38 минут, 30 секунд (22.06.2010 - 19:10) tomash написал(а):
Покажите как вы запрос делаете и результаты достаете оттуда! Весь код

Спустя 11 минут, 19 секунд (22.06.2010 - 19:21) Slavok47 написал(а):
$usares = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "sword WHERE user_id = '$user_id'" );

$usabbres = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "usa");
$i = 1;
while ($row = $db->fetch_array($usabbres) )
{
$ces = explode(",", $usares['usa_prem']);
if ($i <= 5) {
$max = 5;
for ($t=0; $t < $max; $t)
{
$sel='';
if (in_array($t,$ces))
$sel=' selected';
$usaprem.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usaprem']."</option>";
}}}

Спустя 1 минута, 40 секунд (22.06.2010 - 19:23) tomash написал(а):
Slavok47
Так и думал! У Вас вывод в двух циклах

while()
{
for()
{
$usaprem.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usaprem']."</option>";
}
}

Спустя 15 минут, 7 секунд (22.06.2010 - 19:38) Slavok47 написал(а):
и что нужно переделать?

Спустя 1 час, 49 минут, 21 секунда (22.06.2010 - 21:27) tomash написал(а):
Slavok47
Нужно убрать один цикл

Спустя 5 минут, 40 секунд (22.06.2010 - 21:33) Slavok47 написал(а):
вопрос какой,
while ($row = $db->fetch_array($usabbres) )

выводит все данные для для элементов

Спустя 3 минуты, 5 секунд (22.06.2010 - 21:36) tomash написал(а):
Убери цикл for()

Спустя 5 минут, 2 секунды (22.06.2010 - 21:41) Slavok47 написал(а):
убрать его не проблема, тогда все отображается нормально, но как тогда подругому решить задачу? для обычного селекта я сделал так:
     if ($i <= 4)  {
$sel='';
if ($row['id'] == $usares['usa_pl'])
$sel=' selected';
$usapl.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usapl']."</option>";
}

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

Спустя 1 час, 27 минут, 24 секунды (22.06.2010 - 23:09) tomash написал(а):
У Вас как храняться данные о выбраных опциях, я бы сделал строкой, например

id sel
1 1,3,7

$res = mysql_qeury('SELECT * FROM table WHERE = '.$id);
$row = mysql_fetch_assocc($res);
$sel ='';
$selection = explode(',' , $row['sel']);
for ($i = 0, $i<count($selection), $i++)
{
$sel = (in_array($i, $selection)?' selected':'';
$usapl.= "<option id=\"$row[usaplid]\" value=\"$row[id]\"{$sel}>".$row['usapl']."</option>";
}



тип такого? я правильно понял?

Спустя 8 часов, 9 минут, 52 секунды (23.06.2010 - 07:19) Slavok47 написал(а):
блин, ни чего не понял

Спустя 2 часа, 50 минут, 25 секунд (23.06.2010 - 10:09) tomash написал(а):
Slavok47
Как у Вас данные храняться?

Спустя 18 минут, 54 секунды (23.06.2010 - 10:28) Slavok47 написал(а):
в одной ячейке в формате 1,2,3 и тд

Спустя 18 минут (23.06.2010 - 10:46) tomash написал(а):
Так а в чем проблема то? Не могу понять.

Спустя 7 часов, 53 минуты, 49 секунд (23.06.2010 - 18:40) Slavok47 написал(а):
не понятно что такое .$id и то что тут один запрос, а у меня 2 используется, для сравнения значений, тоесть в одной таблице(A) хранятся значения и названия опшинов, во второй(Б) значения которые сохранились, если значение какой то ячейки из Б = id строки из А, то подставляем selected

Спустя 18 минут, 38 секунд (23.06.2010 - 18:58) tomash написал(а):
Slavok47
А зачем тебе хранить все в разных таблицах? Можно структуру БД увидеть?

Спустя 33 минуты, 26 секунд (23.06.2010 - 19:32) Slavok47 написал(а):
Цитата (tomash @ 23.06.2010 - 15:58)
Slavok47
А зачем тебе хранить все в разных таблицах?

потому что если в одной, она будет огромной
Быстрый ответ:

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