[英]PHP code to get selected text of a combo box
我有一个名为“Make”的组合框。 在那个组合框中,我正在加载车辆制造商名称。 当我单击“搜索”按钮时,我想显示选定的制造商名称。 下面是我的 HTML 代码的一部分。
<label for="Manufacturer"> Manufacturer : </label>
<select id="cmbMake" name="Make" >
<option value="0">Select Manufacturer</option>
<option value="1">--Any--</option>
<option value="2">Toyota</option>
<option value="3">Nissan</option>
</select>
<input type="submit" name="search" value="Search"/>
以下是到目前为止我已经完成的 PHP 代码。
<?php
if(isset($_POST['search']))
{
$maker = mysql_real_escape_string($_POST['Make']);
echo $maker;
}
?>
如果我从组合框中选择 Toyota 并按 SEARCH 按钮,我得到的答案为 '2' 。 这意味着它给了我“丰田”的价值。 但我想显示“丰田”这个名字。 我怎样才能做到这一点? 请帮帮我....
试试这个。 您将在 $_POST['Make'] 中获得选择框值,名称将在 $_POST['selected_text'] 中获得
<form method="POST" >
<label for="Manufacturer"> Manufacturer : </label>
<select id="cmbMake" name="Make" onchange="document.getElementById('selected_text').value=this.options[this.selectedIndex].text">
<option value="0">Select Manufacturer</option>
<option value="1">--Any--</option>
<option value="2">Toyota</option>
<option value="3">Nissan</option>
</select>
<input type="hidden" name="selected_text" id="selected_text" value="" />
<input type="submit" name="search" value="Search"/>
</form>
<?php
if(isset($_POST['search']))
{
$makerValue = $_POST['Make']; // make value
$maker = mysql_real_escape_string($_POST['selected_text']); // get the selected text
echo $maker;
}
?>
将您想发送给 PHP 的任何内容放在value
属性中。
<select id="cmbMake" name="Make" >
<option value="">Select Manufacturer</option>
<option value="--Any--">--Any--</option>
<option value="Toyota">Toyota</option>
<option value="Nissan">Nissan</option>
</select>
您也可以省略value
属性。 它默认使用文本。
如果您不想更改 HTML,可以在 PHP 中放置一个数组来转换值:
$makes = array(2 => 'Toyota',
3 => 'Nissan');
$maker = $makes[$_POST['Make']];
您可以通过创建新数组来实现此目的:
<?php
$array = array(1 => "Toyota", 2 => "Nissan", 3 => "BMW");
if (isset ($_POST['search'])) {
$maker = mysql_real_escape_string($_POST['Make']);
echo $array[$maker];
}
?>
更改您的选择框选项值:
<select id="cmbMake" name="Make" >
<option value="">Select Manufacturer</option>
<option value="Any">--Any--</option>
<option value="Toyota">Toyota</option>
<option value="Nissan">Nissan</option>
</select>
您无法在 php 中获取所选选项的文本。 它只会给出所选选项的值。
编辑:
<select id="cmbMake" name="Make" >
<option value="0">Select Manufacturer</option>
<option value="1_Any">--Any--</option>
<option value="2_Toyota">Toyota</option>
<option value="3_Nissan">Nissan</option>
</select>
在 php 文件中:
$maker = mysql_real_escape_string($_POST['Make']);
$maker = explode("_",$maker);
echo $maker[1]; //give the Toyota
echo $maker[0]; //give the key 2
如果你从数据库中获取它然后
<select id="cmbMake" name="Make" >
<option value="">Select Manufacturer</option>
<?php $s2="select * from <tablename>";
$q2=mysql_query($s2);
while($rw2=mysql_fetch_array($q2)) {
?>
<option value="<?php echo $rw2['id']; ?>"><?php echo $rw2['carname']; ?></option><?php } ?>
</select>
当用户选择其中一个时,您可以创建一个 jQuery onChange 事件以从组合框中获取文本:
<script>
$( "select" )
.change(function () {
var str = "";
$( "select option:selected" ).each(function() {
str += $( this ).text() + " ";
});
$('#EvaluationName').val(str);
})
.change();
</script>
当您选择一个选项时,它会将文本保存在输入隐藏中
<input type="hidden" id="EvaluationName" name="EvaluationName" value="<?= $Evaluation ?>" />
之后,当你提交表单时,只需赶上输入的值
$Evaluation = $_REQUEST['EvaluationName'];
然后您可以对文本进行任何您想要的操作,例如将其保存在会话变量中并将其发送到其他页面。 等等。
我同意 Ajeesh,但有更简单的方法可以做到这一点......
if ($maker == "2") { }
要么
if ($maker == 2) { }
为什么我不返回“Toyota”值? 因为选择框中的“Toyota”选项已经返回“2”,这表示选择框中所选的制造商将是丰田。
用户如何知道该值是否等于选择框中的 Toyota 选择? 在我的示例代码的括号之间,您可以放置$maker = "Toyota"
然后echo $maker
,或者创建一个新字符串,如下所示: $maketwo = "Toyota"
然后您可以echo $makertwo
(我更喜欢创建一个新字符串,而不是覆盖$maker
的原始值。)
如果用户选择“Nissan”,示例代码是否也会处理这个问题......? 是的,也不是。 “Toyota”将返回值“2”,而“Nissan”将返回值“3”。 示例代码当前查找的设定值为“2”,表示如果用户选择“Nissan”,表示值为“3”,然后按“搜索”,示例代码将不会被执行。 您可以轻松更改代码以检查值“3”或值“1”,代表“--Any--”。
如果用户在选择框设置为“选择制造商”时单击“搜索”会怎样? 我怎样才能阻止他们这样做? 为了防止他们继续进行,将示例代码的设置值更改为“0”,并且在括号之间,您可以放置您的代码,然后添加return;
,它终止函数/语句中任何进一步代码的所有执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.