Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как PHP обрабатывает переменную multiple name из HTML формы?
 
 автор: danga   (27.09.2013 в 21:00)   письмо автору
 
 

Здравствуйте!
Помогите пожалуйста, кто сталкивался с подобной задачей.
Есть HTML форма, в которой предусмотрен выбор из списка одновременно нескольких стран при нажатии клавиши "Ctrl".

<form method="post" action="script.php">
(Hold down the "Ctrl" key as you click to select multiple options) <br>
<select multiple name="country" size="6">
<option value="lv">Lithuania
<option value="lt">Latvia
<option value="ee">Estonia
<option value="fn"> Finland
<option value="se"> Sweden
<option value="others"> Other
</select>
</form>

Есть обработчик PHP script.php

<?php
$country = $_POST["country"];
echo " country:" , $country;
?>

В таком виде он естесственно выводит только одну страну, даже если были выбраны несколько, т.к. в переменную передалось только одно значение. А как сделать, чтобы передавалось и выводилось сразу несколько значений?
Заранее спасибо,
.Danga

  Ответить  
 
 автор: confirm   (27.09.2013 в 21:15)   письмо автору
 
   для: danga   (27.09.2013 в 21:00)
 

<select multiple name="country[]" size="6">


И для просмотра элементов массива - print_r($country), а вывод на экран это уже либо цикл, либо преобразование массива в строку.

А echo " country:" , $country; выдаст Array.

  Ответить  
 
 автор: magic   (28.09.2013 в 00:31)   письмо автору
 
   для: danga   (27.09.2013 в 21:00)
 

Вот так подойдет:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
(Hold down the "Ctrl" key as you click to select multiple options) <br>
    <select multiple name="country[]" size="6">
        <option value="lv">Lithuania
        <option value="lt">Latvia 
        <option value="ee">Estonia 
        <option value="fn"> Finland 
        <option value="se"> Sweden 
        <option value="others"> Other
    </select>
    <input type="submit" value="Отправить" name="send">
</form>
<?php 
$country 
$_POST["country"];
foreach (
$country as $value
{
    echo 
"country: ".$value."<br>";
}
?>

  Ответить  
 
 автор: danga   (28.09.2013 в 23:59)   письмо автору
 
   для: magic   (28.09.2013 в 00:31)
 

Спасибо большое!
Да, так получается вывести все выбраенные страны.
Но честно говоря, задача стоит шире. Это только кусок большой формы, которую заполняет пользователь при регистрации. Введенная информация обрабатывается скриптом Script.pнр, где я проверяю корректность ввода ( в том числе в целях безопасности). Дальше идет обработка средсвами SQL. Задумано, чтобы пользователи могли выбирать инфу по критериям из базы.
Так я бытаюсь усовершенствавать свой статический HTML сайт, который уже довольно успешный. Это мой первый опыт в подобных преобразованиях.
Со скриптом Script.php все понятно. Но мне не нравится, что по оператору echo сообщение об ошибках вводимой пользоватем регистрационной инфе выводится на новую станицу в браузере. Не знаю как сделать, чтобы это сообщение публиковалось на той же станице, где форма регистрации. Помогите пожалуйста...
Danga

  Ответить  
 
 автор: confirm   (29.09.2013 в 04:20)   письмо автору
 
   для: danga   (28.09.2013 в 23:59)
 

Прием и обработка данных формы, включая и набор данных из списка, это одно. А возврат об ошибках это другое.
Если проблема с приемом данных решена, то чтобы сделать прием данных и возврат возможных ошибок при их приеме, диалогом не перегружающим текущую страницу, для этого нужно использовать Ajaxj - технология, которая включает и клиентские скрипты JS, и специальный объект, который для этого использует браузер.
Пройдите в этот раздел, посмотрите вопросы об Ajax. Почитайте в сети об этом.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования