Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   PHP и элементы формы (https://javascript.ru/forum/server/6565-php-i-ehlementy-formy.html)

faiq 05.12.2009 22:30

PHP и элементы формы
 
Здраствуйте,
Моя проблема заключается в следующем:например в php если мы хотим чтобы текствое поле ввода продолжало отображать введённую в неё информацию после нажатия на submit кнопку,мы можем просто написать код вида: <input class="text" name="balance" type="text" size="15"
value="<?php echo $balance; ?>" /> ,но как добится того же в случае с выпадающим списком вида:
<SELECT name="time[]" id="time" size=1 onChange="listchange()">
<OPTION value="">Select...</OPTION>
<OPTION value="0.3">3</OPTION>
<OPTION value="0.5">6</OPTION>
<OPTION value="0.75">9</OPTION>
<OPTION value="1">12</OPTION>
<OPTION value="1.5">18</OPTION>
<OPTION value="2">24</OPTION>
<OPTION value="3">36</OPTION>
</SELECT>

Gvozd 05.12.2009 22:50

Цитата:

Сообщение от faiq
<input class="text" name="balance" type="text" size="15"
value="<?php echo $balance; ?>" />

за register_globals надо уже давно отрывать руки
забедьте о нем, и пишите правильно, с отключенным register_globals :
<?php echo $_REQUEST['balance']; ?>

Если бы вы изначально так делали, то у вас не возник бы вопрос, так как он прояснялся одной простой функцией:
var_dump($_REQUEST);

в ней вы увидите массив $_REQUEST['time'], в котором содержатся только выбранные пункты, в индексах начиная с нулевого
то есть если выбран один пункт, то и и нндекс будет только нулевой

Tim 06.12.2009 07:04

Цитата:

за register_globals надо уже давно отрывать руки
Надо, но не факт что в этом случае. Возможно faiq просто не указал кусок кода $balance = $_GET['balance']; ну или $balance = $_POST['balance'];

name="time[]" - вот это лишнее, исполюзуйте просто time, как сказал Gvozd элемент там всего один. Создавать для него массив совсем не зачем. Если бы это был список множественного выбора - тогда да.

Для сохранения выбора SELECT можно написать функцию:

function selected($value) {
    if ($value == $_GET['time']) {
        echo 'selected';
    }
}


и вставлять её в каждый OPTION

А ещё лучше загнать весь тег SELECT в строку и производить поиск и замену (str_replace)

Код:

<OPTION value="1" <?php selected(1); ?>>12</OPTION>
<OPTION value="1.5"  <?php selected(1.5); ?>>18</OPTION>

Наверняка в zend framework есть какое нибудь решение, но с ним я не знаком.


Часовой пояс GMT +3, время: 12:02.