[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблемка с <select>
stasuss
приветствую all

вопрос качается html форм, так что думаю не ошибся разделом форума

в скрипте генерирую списочек с атрибутом miltiselect. у некоторых опций ставлю атрибут Selected в скрипте, так что в htmlстраницы они так и прописаны. все отображается как надо.

НО должна быть возможность выбрать другие значения и засабмитить их на сервер. а у меня сабмитятся те опции который имеют атрибут selected. бесполезно выбирать другие.

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



Спустя 16 часов, 20 минут, 5 секунд (18.04.2012 - 07:38) stasuss написал(а):
блииин.. неужели никто с этим не сталкивался?(((

Спустя 2 минуты, 29 секунд (18.04.2012 - 07:41) redreem написал(а):
покажи код.

Спустя 47 минут, 44 секунды (18.04.2012 - 08:28) stasuss написал(а):
вот скрипт
<select size="7" multiple name="role[]">
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_reg)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_reg ?>"><?php printMLText("role_reg"); ?></option>
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_help)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_help ?>"><?php printMLText("role_help"); ?></option>
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_guest)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_guest ?>"><?php printMLText("role_guest"); ?></option>
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_head)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_head ?>"><?php printMLText("role_head"); ?></option>
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_perf)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_perf ?>"><?php printMLText("role_perf"); ?></option>
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_cont)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_cont ?>"><?php printMLText("role_cont"); ?></option>
<option <?php
if (($currUser->getRole()&DMS_Core_User::role_admin)) echo 'selected="selected"' ?> value="<?php echo DMS_Core_User::role_admin ?>"><?php printMLText("role_admin"); ?></option>
</select>


на выходе примерно такое

<select size="7" multiple name="role[]">
<option
value="1">Регистратор</option>
<option
value="2">Помошник</option>
<option
selected="selected" value="4">Гость</option>
<option
value="8">Руководитель</option>
<option
value="16">Исполнитель</option>
<option
value="32">Контроллер</option>
<option
value="64">Админ</option>
</select>


а вот форма

<form action="../op/op.UsrMgr.php" method="post" enctype="multipart/form-data" name="form7" onsubmit="return checkForm('7');">
<!-- тут много инфы про пользователя, в том числе и список с ролями-->
<input type="Submit" value="Сохранить">
</form>


ява-скрипт просто проверяет некоторые поля на заполненность, список он не трогает..

извиняюсь что так длинно получилось)

Спустя 1 час, 16 минут, 47 секунд (18.04.2012 - 09:45) ИНСИ написал(а):
stasuss покажите php код, который обрабатывает форму. Имею в виду тот кусок, который принимает значение role.

Спустя 23 минуты, 5 секунд (18.04.2012 - 10:08) stasuss написал(а):
ааа... да дело не в нем. если создать юзера (при создании форма без предустановленых опций) то все окей

а вообще вот он

        $role=0;
foreach ($_POST["role"] as $r){
$role|=(int)$r;
}

Спустя 11 минут, 38 секунд (18.04.2012 - 10:20) redreem написал(а):
Цитата
selected="selected"


:o

достаточно просто

 <option selected value="4">Гость</option>


может в этом дело

Спустя 8 минут, 51 секунда (18.04.2012 - 10:29) glock18 написал(а):
Цитата (redreem @ 18.04.2012 - 08:20)
может в этом дело

ни разу не так

Цитата (redreem @ 18.04.2012 - 08:20)
selected="selected"

это как раз xml-валидная запись, в отличие от простого selected

Спустя 40 секунд (18.04.2012 - 10:29) stasuss написал(а):
Цитата (redreem @ 18.04.2012 - 08:20)
Цитата
selected="selected"

достаточно просто
 <option selected value="4">Гость</option>

может в этом дело

сначала написал именно короткую форму.. пока лазил по инету заметил что пишут длинно иногда.. но в моем случае эти два варианта работают одинаково.

Спустя 49 секунд (18.04.2012 - 10:30) glock18 написал(а):
stasuss
у вас, вероятнее всего, логика обработки перепутана. скорее всего дефолтные значения выставляются до записи, и, вероятно, переписывают пришедшие на сервер

Спустя 7 минут, 22 секунды (18.04.2012 - 10:37) stasuss написал(а):
Цитата (glock18 @ 18.04.2012 - 08:30)
stasuss
у вас, вероятнее всего, логика обработки перепутана. скорее всего дефолтные значения выставляются до записи, и, вероятно, переписывают пришедшие на сервер

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

и как с этим бороться не скажите? мне на ум приходит яваскрипт..

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

ЗЫ проверял в 9 експлорере, в последнем хроме и фаерфоксе. везде одинаково.. ведь не должно так быть блин... или должно?

ЗЫЫ посмотрел на заголовки. оказывается высылается на сервер все верно!!! а почему тогда у пхп скрипта в $_POST["role"] лежат старые значения??? Помогите нубу((((((

Спустя 50 минут, 13 секунд (18.04.2012 - 11:28) ИНСИ написал(а):
stasuss Попробуйте в обработчике вставить:
exit(print_r($_POST['role']));

Если данные приходят верно, значит ваша обработка работает неверно.

Спустя 5 минут, 2 секунды (18.04.2012 - 11:33) ИНСИ написал(а):
Цитата
$role|=(int)$r;

Было бы интересно узнать, что вы хотите тут сделать?

Спустя 1 час, 2 минуты, 28 секунд (18.04.2012 - 12:35) stasuss написал(а):
Цитата (INSIDIOUS @ 18.04.2012 - 09:33)
Цитата
$role|=(int)$r;

Было бы интересно узнать, что вы хотите тут сделать?

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

Спустя 4 минуты, 59 секунд (18.04.2012 - 12:40) glock18 написал(а):
stasuss
ну, вы покажите скрипт. надеюсь, он небольшой. интересует

1. выставление дефолтных значений
2. запись в базу
3. обработка POST

UPD:
4. их порядок

Спустя 13 минут, 44 секунды (18.04.2012 - 12:54) stasuss написал(а):
блин оно по разным скриптам разбито.. у меня используется что то типа модели модель-контроллер-представление...

ну вообщем то ладно. попробую внимательно потупить над каждой строчечкой...

всем спасибо. убедили что таки глюк у меня в скрипте) да и сам я убедился посмотрев заголовки
Быстрый ответ:

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