2013-07-19 2 views
0

Я в основном пытаюсь написать PHP-скрипт, который отобразит сообщение, когда в раскрывающемся списке выбран определенный параметр/значение.Как связать выпадающий список HTML

Вот HTML для некоторого разъяснения

<select name="month"> 
<option value="0">0</option> 
<option value="1">January</option> 
<option value="2">Febuary</option> 
<option value="3">March</option> 
<option value="4">April</option> 
</select> 

В принципе, я хочу, чтобы PHP скрипт, чтобы напечатать заявление, когда вариант, скажем, первый вариант (январь), выбран.

+0

Это лучше сделать на стороне клиента, так что вы должны искать яваскрипта решения – jh314

ответ

1

Это, вероятно, сделать лучше на стороне клиента, но так как вы хотели бы сделать это с PHP, вот простое решение с использованием ассоциативных массивов:

somefile.php:

<?php 
$months = array(1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 
    6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 
    12 => 'December'); 

if(isset($_POST['sb'])){ 

$input = $_POST['month']; 
echo "You selected ".$months[$input]; 

} 
?> 
<form action="" method="post"> 
<select name="month"> 
<option value="1">January</option> 
<option value="2">Febuary</option> 
<option value="3">March</option> 
<option value="4">April</option> 
<option value="5">May</option> 
<option value="6">June</option> 
<option value="7">July</option> 
<option value="8">August</option> 
<option value="9">September</option> 
<option value="10">October</option> 
<option value="11">November</option> 
<option value="12">December</option> 

</select> 
<input type="submit" name="sb"/> 
</form> 

И если вы хотите создать свое меню динамически, вы могли бы сделать что-то вроде этого:

<?php 
$curr_month = date("m"); 
$month = array (1=>"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 
$select = "<select name=\"month\">\n"; 
foreach ($month as $key => $val) { 
    $select .= "\t<option val=\"".$key."\""; 
    if ($key == $curr_month) { 
     $select .= " selected=\"selected\">".$val."</option>\n"; 
    } else { 
     $select .= ">".$val."</option>\n"; 
    } 
} 
$select .= "</select>"; 
echo $select; 
?> 

Надеется, что это помогает!

2

Если вы хотите, чтобы действие выполнялось при изменении выбора, вам необходимо решение на стороне клиента, например javascript, желательно jQuery.

PHP не может делать то, что вы просите, он может что-то сделать при отправке формы, но не при изменении выбора.

http://api.jquery.com/change/

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 

$(document).ready(function(){ 
    $("select").on("change", function(){ 
     alert("The value is " + $(this).val()); 
    }); 
}); 

Это даст сигнал, когда ваш выбор изменяется.

+0

OP требуется РНР скрипт не Js –

+3

OP может понадобиться , но они не могут быть. * Если выбрана опция ....., это невозможно сделать с помощью PHP. Это можно сделать, когда форма * отправлена ​​*, но не при выборе выпадающего списка. –

+1

Обратите внимание, что сервер не должен видеть отображаемое сообщение, тогда как _client_ делает. – Phas1c

-1

Если ваш HTML выглядит следующим образом:

<form action="index.php" method="POST"> 
    <select name="month"> 
    <option value="0">0</option> 
    <option value="1">January</option> 
    <option value="2">Febuary</option> 
    <option value="3">March</option> 
    <option value="4">April</option> 
    </select> 
    <input type="submit" value="Select"> 
</form> 

Затем в index.php:

echo "You selected " . $_POST['month']; 
+0

Это не сработает. Нет кнопки отправки, и она не будет делать то, что запросил ОП, что есть * on select * not * on submit * –

+1

Спасибо, исправлена ​​ошибка. – luttkens

0

Это не то, что можно сделать с PHP. PHP выполняется на стороне сервера, то есть он предоставляет статическую страницу после завершения всей обработки на стороне сервера. Чтобы что-то изменить, он должен быть отправлен обратно на сервер и повторно отправлен.

Javascript - это то, что вы хотите использовать здесь. Проверьте трек Codecademy jQuery, это действительно полезно для выяснения того, как делать работу на стороне клиента так, как вы хотите. http://www.codecademy.com/tracks/jquery

В принципе, вы хотите иметь атрибут onchange="function()" для выбора, который вызовет функцию javascript для отображения сообщения в отдельной области.

Например (не совсем то, что вы хотите, но иллюстрирует принцип:

<script type="text/javascript"> 
    var changed = function() { 
     alert("Value of select is now: " + event.target.value); 
    }; 
</script> 

<form action="index.php" method="POST"> 
    <select name="month" onchange="changed()"> 
    <option value="0">0</option> 
    <option value="1">January</option> 
    <option value="2">Febuary</option> 
    <option value="3">March</option> 
    <option value="4">April</option> 
    </select> 
</form> 
Смежные вопросы