Имеетря элемент селект со множественным выбором, задача сделать так чтобы при последуючем фходе в форму, в элементе били выбранны те опшины которые сохранились, для обычного селекта я сделал так:
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 написал(а):
Вобщем вот что я натворил:
но есть проблема, всего 5 опшинов, но сейчас они продублировались 5 раз, стало 25, в чем ошибка?
$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
Я же написал, вы не инкриминируете $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
тип такого? я правильно понял?
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 А зачем тебе хранить все в разных таблицах? |
потому что если в одной, она будет огромной