Xpoint
   [напомнить пароль]

Передача значения SELECT( из FORM) в скрипт php

Метки: [без меток]
2009-02-06 12:10:53 [обр] ATR[досье]

Доброе время суток!
Возможно вопрос детский, но на третий день разбирательств в php он возник и двухчасовое прыгание по туториалам HTML и php не дало результатов.
Суть вопроса:
есть страничка с combobox и кнопкой submit, простейший вариант.
<form action="contract_list.php" method="POST">
    <select name="chp" size="1">
Пункты выбора заполняются из БД следующим образом:
<option value="<?echo $row->OID?>"><?echo $row->NAME?></option>
на страничку результата методом POST посылается переменная chp со значением поля OID.
Всё это работает замечательно. Но вот вопрос. В заголовке странички результата, хотелось получить значение $row->NAME.

Каким образом его можно передать на страницу результата? Использовать HIDDEN?
Делать ещё один запрос на странице результата, для получения NAME по OID, кажеться не совсем правильным и красивым.

спустя 31 минуту [обр] Thirteensmay(17/157)[досье]
С общей структурно-теоретической точки зрения сделать отдельный запрос какраз правильно, однако естественно это как минимум лишние тормоза, поэтому с практической точки, особенно если страничка небольшая, имя и пр. атрибуты можно передавать дополнительно, главное не злоупотреблять таким подходом. Можно HIDDEN и элементарный однострочный JS на onChange для заполнения, можно имя сконкатенировать с OID в value, а при приеме сплитовать, в общем случае не принципиально, делайте как нравиться.
спустя 24 минуты [обр] NaN[досье]
сообщение промодерировано
Использовать Hidden. Почему бы и нет?
<form onsubmit="func(); return true;">
<select onchange="func()" id='chp'>
...
</select>
<input type='hidden' id='s1' name='s1'></form>
<script>
function func(){
var d=window.document.getElementById('chp').options.length;
for(i=0;i<d;i++)
if(window.document.getElementById('chp').options[i].selected) window.document.getElementById('s1').value=window.document.getElementById('chp').options[i].text;
}
</script>
спустя 1 час 29 минут [обр] Ali(5/5)[досье]
Если информация критическая, то использовать передачу "снаружи" (не важно каким способом) категорически нельзя. Должно работать правило "никогда не доверяй пользовательским данным". Если это значение будет куда-то записываться, а потом показано на странице (без обработок), то это огромнейшая дыра.
Запрос к базе по ключу не будет так уж сильно притормаживать, а возможные проблемы могут омрачить будущее проекта довольно ощутимо.
спустя 2 часа 9 минут [обр] Александр Галкин(112/211)[досье]
ATR[досье]
Делать ещё один запрос — это нормально. На общей производительности он заметно не скажется. Более того, по-хорошему вам нужно при приёме id из формы убедиться, что в базе есть такая запись.
спустя 1 день 21 час [обр] triumvurat[досье]
  1. Если у вас только SELECT с кнопкой, то тут наверно надо GET-запрос юзать. Зачем Вам тут POST?
  2. Все новички стараются уменьшить количество запросов к БД. Приведу цитату самого страшного человека в мире русскоязычного PHP ;) :
Я, мне кажется, где-то лет в 5 или 6 начал понимать, что главное - не количество монеток, а их достоинство. Одна монетка в рубль лучше, чем десять по копейке.
Половина посетителей этого форума по-моему, так и не перешагнула этот возрастной рубеж.
Умрусь, но сделаю все одним запросом! Это же цель жизни и святой грааль программиста.
Идеальный похапе скрипт - это тот, который выводит ВЕСЬ контент, от баннеров до статьи одним запросом. С помощью UNION это сделать вполне реально. Ведь гравная цель похаписта - это не скорость работы сайта, а количество запросов, *
спустя 7 часов [обр] ATR[досье]
Спасибо!
Похоже мысль про HIDDEN была не столь смехотворной, как мне казалось вначале. В тоже время лишний запрос на страничке, которая работает на веб сервере локальной сети и доступ к которой будут иметь человек 10 совершенно не скажется на скорости работы.
Тем не менее все Ваши ответы несомненно явились для меня крайне пользительными. Похоже нужно ещё обратить внимание на JS, думаю это должно неслабо повысить функциональность страничек. Проработав 12 лет БД программистом (отсюда и тяга к минимизации количества запросов) неожиданно обнаружил, что Web программирование тоже увлекательное дело :) .
Powered by POEM™ Engine Copyright © 2002-2005