我有一个名为“Make”的组合框。在那个组合框中,我正在加载汽车制造商的名字。当我单击SEARCH按钮时,我想显示所选的制造商名称。以下是我的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;
}
?>
如果我从组合框中选择丰田并按下SEARCH按钮,我的答案为'2'。这意味着它给了我'丰田'的价值。但是我希望显示“丰田”这个名字。我怎样才能做到这一点?请帮帮我......
答案 0 :(得分:6)
试试这个。您将获得$ _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;
}
?>
答案 1 :(得分:4)
在value
属性中将您要发送的内容发送到PHP。
<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']];
答案 2 :(得分:1)
您可以通过创建新阵列来实现此目的:
<?php
$array = array(1 => "Toyota", 2 => "Nissan", 3 => "BMW");
if (isset ($_POST['search'])) {
$maker = mysql_real_escape_string($_POST['Make']);
echo $array[$maker];
}
?>
答案 3 :(得分:1)
如果你从数据库中提取它,那么
<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>
答案 4 :(得分:0)
更改您的选择框选项值:
<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
答案 5 :(得分:0)
您可以创建一个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'];
然后,您可以对文本进行任何处理,例如将其保存在会话变量中并将其发送到其他页面。等
答案 6 :(得分:0)
我同意Ajeesh,但是有更简单的方法可以做到这一点...
if ($maker == "2") { }
或
if ($maker == 2) { }
为什么我不返回“ Toyota”值?因为“选择”框中的“丰田”选择将已经返回“ 2”,这表明选择框中选择的制造商将是丰田。
用户如何知道该值是否等于“选择”框中的Toyota选择?在示例代码的括号之间,您可以先放入$maker = "Toyota"
然后放入echo $maker
,或者创建一个新字符串,如下所示:$maketwo = "Toyota"
然后可以echo $makertwo
(我更喜欢创建一个新字符串,而不是覆盖$maker
的原始值。)
如果用户选择“ Nissan”,示例代码也将解决此问题。是的,没有。 “丰田”将返回值“ 2”,而“日产”将返回值“ 3”。示例代码正在寻找的当前设置值为“ 2”,这意味着如果用户选择代表值“ 3”的“ Nissan”,然后按下“ Search”,则示例代码将不会执行。您可以轻松地更改代码以检查值“ 3”或值“ 1”,即代表“ --Any-”。
如果在选择框设置为“选择制造商”的情况下用户单击“搜索”怎么办?如何防止他们这样做?为了防止它们继续进行,请将示例代码的设置值更改为“ 0”,然后在括号之间放置代码,然后添加return;
,这将终止所有代码的执行。函数/语句中的其他代码。