Сообщение от kilogram
|
Точно, спс. Немного по поводу кода.
Скажите ,вот когда мы написали "<select name="surname">"
это равносильно мы создали переменную $surname с которой можем делать что угодно? Ещё, немного не понятно, каким образом попадают в глобальный ассрциативный массив REQUEST значения surname(Фамилия) с массива $names? Если да, каким образом?
|
никак они туда не попадают.
щас распишу логику всего твоего скрипта:
1. функция selectItems, в неё передаётся массив всех пунктов списка ($items)+ выбранный (номер по порядку от 0) — $selected (если его нет, то оно равно 0)
function selectItems($items, $selected=0) {
2. Переданный массив $items циклом разбивается на пары: ключ — значение: $k — ключ, $v — значение.
Если текущий ключ равен тому же, что пришло в функцию вторым параметром ($selected), то в переменную $text заносится:
<option selected value='Значение из текущей $k'> значение текущей $v</option>
Если не равен:
<option value='значение текущей $k'> значение текщей $v</option>
ну и возвращается $text.
$text = "";
foreach($items as $k=>$v){
if($k == $selected) $ch = " selected"; else $ch = "";
$text .= "<option$ch value='$k'>$v</option>\n";
}
return $text;
}
3. Создаётся массив с именами и фамилиями.
$names = array(
"Weaving" => "Hugo",
"Goddard" => "Paul",
"Taylor" => "Robert",
);
4. Если по GET или POST на сервер в массиве $_REQUEST пришло surname (т.е. фамилия, заполненная в форме), то $name равна имени из массива $names, где ключ равен пришедшей фамилии surname.
Ну и выводится на экран "Вы выбрали...."
if(isset($_REQUEST['surname'])){
$name = $names[$_REQUEST['surname']];
echo "Вы выбрали: {$_REQUEST['surname']} - {$name} ";
}
?>
А тут форма, отправляющая на эту же страницу ($_SERVER['SCRIPT_NAME'] = текущий адрес скрипта) значения выбранного поля surname (то, что потом принимается в $_REQUEST['surname']).
И с помощью функции selectItems, куда передаётся массив всех имен/фамилий и текущая полученная фамилия (если страница только что открыта — текущей фамилии не будет, и второй параметр в функции станет равен нулю — т.е выбранным окажется первый пункт.
<!-- Форма для выбора имени человека -->
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
Выберите имя:
<select name="surname">
<?=selectItems($names, $_REQUEST['surname'])?>
</select><br>
<input type="submit" value="Узнать фамилию">
</form>
</body></html>