0

我基本上是在尝试编写一个 PHP 脚本,当在下拉列表中选择某个选项/值时,它将显示一条消息。

这是用于澄清的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 脚本在选择第一个选项(一月)时打印一条语句。

4

4 回答 4

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());
    });
});

当您的选择更改时,这将产生警报。

于 2013-07-19T20:08:34.543 回答
1

它可能在客户端做得更好,但既然你想用 PHP 来做,这里有一个使用关联数组的简单解决方案:

一些文件.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;
?>

希望这可以帮助!

于 2013-07-19T20:20:40.953 回答
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>
于 2013-07-19T20:21:26.817 回答
-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'];
于 2013-07-19T20:11:36.203 回答