Как внести в массив $_POST "ТЕКСТ" из формы? В нижеприведенном примере в массив $_POST вводится только два значения - [D1] => ЗНАЧЕНИЕ и [B1] => Submit _________________________________________ <?php echo "<pre>"; print_r($_POST); ?> <form method="POST" action = "echo.php"> <p><select size="1" name="D1"> <option value="ЗНАЧЕНИЕ">ТЕКСТ</option> </select><input type="submit" value="Submit" name="B1"></p> </form>
Полностью согласен К массиву $_POST присваиваются значения также, как и к остальным массивам Все зависит от того, откуда они берутся при выводе этой формы Если у Вас форма не собирается динамически, получая все "ЗНАЧЕНИЕ" и "ТЕКСТ" для формы к примеру из базы, тогда просто создайте массив... Код (Text): $array['ЗНАЧЕНИЕ'] = "ТЕКСТ"; После получения выбранного "ЗНАЧЕНИЕ" из формы, присваиваете к массиву $_POST соответсвующий выбранному "ТЕКСТ" Код (Text): $_POST['text'] = $array[$D1]; P.S. А вобще, на будущее, если задаете вопрос, старайтесь наиболее точно его формулировать и описывать, что и откуда берете. Многие телепатией не страдают, а додумывать за Вас им просто влом
В РНР да, а чел спрашивает про HTML а точнее про форму (причём спрашивает явно не вежливо, по этому и отвечать я не буду)
Эм...не понял мысль Он спросил, как к $_POST добавить "ТЕКСТ" с каким пор в HTML массив $_POST есть %)))))
Прошу прощения за нечеткое оформление вопроса. Постораюсь обьяснить поточнее.. Насколько я знаю, когда HTML формы передаются сценарию PHP для обработки - автоматически создается массив $_POST[] (или $_GET. Смотря каким методом пользовались.) который содержит данные обрабатываемой формы в виде массива. После выполнения нижеописанного сценария массив $_POST выдает два элемента - Код (Text): [D1] => THE_VALUE и Код (Text): [B1] => Submit В браузере видно следующее: _________________________ Array ( [D1] => THE_VALUE [B1] => Submit ) и внизу сама форма - DropDown-Box с текстом "THE_TEXT" и кнопка "Submit". _________________________ Суть вопроса: Как видно из кода, HTML тег HTML: "<option value="THE_VALUE">THE_TEXT</option>" содержит два текстовых значения : "THE_VALUE" и "THE_TEXT" Но в массив попадает тольно один из них. Это - "THE_VALUE" Вопрос: Как сделать так, чтобы в массив $_POST вместе с "THE_VALUE" и "Submit" попала и "THE_TEXT"? Или как читать значение "THE_TEXT" из формы в массив $_POST? Это код файла: echo.php PHP: <?php echo "<pre>"; print_r($_POST); // выводит содержимое массива $_POST на обозрение. ?> // Форма из которой берется массив $_POST <form method="POST" action = "echo.php"> <p><select size="1" name="D1"> <option value="THE_VALUE">THE_TEXT</option> </select><input type="submit" value="Submit" name="B1"></p> </form>
Никак. Если есть такая необходимость, то можно дополнительно создавать hidden поле с нужным значением.
Как создать hidden поля для DropDown-Box? в этом случае скрытое значение из hidden поля попадет в массив $_POST автоматически вместе с двумя другими (THE_VALUE и Submit)?
никак не могу понять, зачем это нужно... напишите на месте THE_VALUE THE_TEXT. Не поменяйте местами, а именно напишите. Получится THE_VELUE == THE_TEXT пользователю формы ведь всё равно, что там за value="", а вы получаете желанное.
[js]<script type="text/javascript"> function setHiddenValue() { var v = this.options[this.selectedIndex].value; $('optionText').setAttribute('value', v); } function $(obj) { return ((document.getElementById(obj)) ? document.getElementById(obj) : false); } document.onload = function() { $('optionSelect').onchange = setHiddenValue; } </script>[/js] HTML: <form method="post"> <select id="optionSelect"> <option value="OptionValue1">OptionText1<option> <option value="OptionValue2" selected="selected">OptionText2<option> <option value="OptionValue3">OptionText3<option> </select> <input type="hidden" id="optionText" name="optionTextValue" value="" /> <input type="submit" value="Submit" /> </form> Как то так.
THE_TEXT: Это - имя продукта, THE_VALUE: Это цена продукта. После нажатия кнопки нужно определить какой же именно THE_TEXT выбрал пользователь, чтобы узнать который THE_VALUE соответствует ему. Это нужно для того чтобы после выбора THE_TEXT отобразить THE_VALUE в другой форме "Form".
THE_TEXT: Это - имя продукта, THE_VALUE: Это цена продукта. После нажатия кнопки нужно определить какой же именно THE_TEXT выбрал пользователь, чтобы узнать который THE_VALUE соответствует ему. Это нужно для того чтобы после выбора пользователем опции THE_TEXT и нажатия кнопки отобразить и THE_TEXT и THE_VALUE в другой форме "Form".
HTML: <option value="THE_TEXT:THE_VALUE">THE_TEXT</option> PHP: <? $what = explode(":", $_POST['D1']); ?> З.Ы. ОМГ, что я пишу...
Если данные обрабатываются посредством PHP, то самый правильный метод это передавать не ЦЕНУ и НАЗВАНИЕ продукта, а ИДЕНТИФИКАТОР продукта И затем пересчет вести согласно данным из БД. Смешивать логику, отображение и контроллеры нельзя. Хотя процедурно это очень сложно, но нужно стараться этого избегать.
Эм... создайте базу в которой будут перечислены все продукты и их цены, продукт ведь не один и цены у них разные... php сам будет динамически создавать форму с продуктами перечисленными в базе и Вы всегда имея название продукта можете получить его цену А лучший вариант, как уже сказали... передавать его идентификатор и по нему выводить название с ценой товара. И расширять возможности проще будет... если нужно будет разделить товары на категории, типы и тд А по Вашей логике, получается гибрид какой-то... Вы не хотите полность использовать HTML, создавая каждую страницу ручками, но в тоже время и позволять PHP выполнять его работу Зачем Вам вобще тогда пхп? Проще после нажатия кнопки отправлять на заранее подготовленную страницу
Этот метод чтения значений в массив помог. Спасибо. Сначала пишем в массив $_POST обе значения ="THE_TEXT:THE_VALUE" разделяя их знаком ":" потом читаем уже имеюшееся значение "THE_TEXT:THE_VALUE" из массива $_POST с помощю функции explode разделяем THE_TEXT и THE_VALUE от знака ":". PHP: <? $what = explode(":", $_POST['D1']); ?> и вносим отделенные значения в новый массив $what. После этого можно пользоватся с значениями THE_TEXT и THE_VALUE по отдельности.
Вот что у меня получилось... PHP: <?php echo "<form method=Post>"; echo "<select size=1 name=D1[]>"; global $D1, $THESECONDVALUE, $PRODNAME; $THEFILE = "1.txt"; $THEARRAY = file($THEFILE); $LINESCOUNT = count($THEARRAY); $THESECONDVALUE = explode(":", $D1[0]); $ONSTARTVALUE = explode ("|", $THEARRAY[0]); for ($VIEWLINES = 0; $VIEWLINES < $LINESCOUNT; $VIEWLINES++) { $THEFIELDS = explode ("|", $THEARRAY[$VIEWLINES]); $PRODNAME = $THEFIELDS[0]; $PRODPRICE = $THEFIELDS[1]; echo "<option value='$PRODPRICE : $PRODNAME'>$PRODNAME</option>"; } if($THESECONDVALUE[1]) { echo "<option selected='$THESECONDVALUE[0]' value='$PRODPRICE : $PRODNAME'>$THESECONDVALUE[1]</option>"; } if($THESECONDVALUE[0]) { echo "<input type='text' value = $THESECONDVALUE[0]>"; } else { echo "<input type='text' value = $ONSTARTVALUE[1]>"; } ?> спасибо за помощь.
Дело в том, что данный скрипт читает не из базы данных а из файла. Нужно так чтобы когда пользователь выберает один из опций, после нажатия на кнопку в соседней форме (input text) отоброжалось значение которое присвоено выбранной опции. Но при этом не изменялась выбранная опция.
Осталась только одна маленькая проблема. После нажатия Enter в списке опций появляетсе еще одна - с тем же именем который был выбран. Скажем если выберается опция "Mainboard1" то список становится таким: Mainboard1 Mainboard2 Mainboard3 Mainboard1 // внизу появилась еще одна опция "Mainboard1" это из-за Код (Text): echo "<option selected='$THESECONDVALUE[0]' value='$PRODPRICE : $PRODNAME'>$THESECONDVALUE[1]</option>"; Как вы думаете возможно ли сделать так чтобы последняя опция не появилась в списке? Или нужно использовать Javascript...
Внесите в цикл: PHP: if($THESECONDVALUE[1]) { echo "<option selected='$THESECONDVALUE[0]' value='$PRODPRICE : $PRODNAME'>$THESECONDVALUE[1]</option>"; } К тому же не PHP: selected='$THESECONDVALUE[0]' а PHP: selected="selected"