使用php插入drop select表单元素
我正试图用php创建一个下拉框,从填充有状态名称的数组中提取状态。我用.php扩展名保存了文件,并添加了代码,试图从我正在创建的数组中创建一个下拉菜单。由于某些原因,下拉菜单不起作用使用php插入drop select表单元素,php,html,Php,Html,我正试图用php创建一个下拉框,从填充有状态名称的数组中提取状态。我用.php扩展名保存了文件,并添加了代码,试图从我正在创建的数组中创建一个下拉菜单。由于某些原因,下拉菜单不起作用 <!DOCTYPE html> <html> <head> <style> </style> <script type="text/javascript"> //
<!DOCTYPE html>
<html>
<head>
<style>
</style>
<script type="text/javascript">
//create function to be called upon submission
function verify(event) {
var hasError = false;
var check1=document.getElementById("saws").value;
var check2=document.getElementById("pliers").value;
var check3=document.getElementById("planers").value;
var ok = [];
ok[0] = check1.search(/^$|\d+/);
ok[1] = check2.search(/^$|\d+/);
ok[2] = check3.search(/^$|\d+/);
for (i = 0; i < ok.length; i++) {
if (ok[i] !== 0) {
hasError = true;
alert("Invalid input.");
event.preventDefault();
}
}
if (hasError) return false;
else return true;
}
</script>
<title>l6p2</title>
<meta charset="UTF-8" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
</head>
<body>
<h1>Lab 6, part 2 </h1>
<form action = "/formtest.php" method="post" onsubmit= "return verify(event)">
<table>
<thead>
<tr>
<th>Item</th>
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody id="tbody">
<tr>
<td>Saw</td>
<td>$15.99</td>
<td><input type="text" name="saws" id="saws" size="2" /></td>
</tr>
<tr>
<td>Pliers</td>
<td>$12.99</td>
<td><input type="text" name="pliers" id="pliers" size="2" /></td>
</tr>
<tr>
<td>Planer</td>
<td>$79.99</td>
<td><input type="text" name="planers" id="planers" size="2" /></td>
</tr>
</tbody>
</table>
<p>
<label> First Name:
<input type="text" name="fname" size ="30" />
</label>
<br />
<br />
<label> Last Name:
<input type="text" name="lname" size ="30" />
</label>
<br />
<br />
<label> Shipping Address:
<input type="text" name="address" size ="30" />
</label>
<br />
<br />
<label> City:
<input type="text" name="csz" size ="30" />
</label>
<br />
<br />
<?php
$states = array('Alabama','Alaska','Arizona','California','Florida','Georgia');
echo '<label> State:';
echo '<select name="state">';
for ($i = 0; $i < count($states); $i++) {
echo '<option>' . $states[$i] . '</option>';
}
echo '</select>';
echo '</label>';
?>
</p>
<h3>Payment Method</h3>
<p>
<label>
<input type="radio" name="payment" value="visa" checked = "checked" />
Visa
</label>
<label>
<input type="radio" name="payment" value="mc" />
Master Card
</label>
<label>
<input type="radio" name="payment" value="amex" />
American Express
</label>
<br />
</p>
<p>
<input type="Submit" value="Submit Order" />
</p>
</form>
<h3>Links</h3>
<a href="index.html">Home</a>
</body>
</html>
//创建提交时要调用的函数
功能验证(事件){
var hasError=false;
var check1=document.getElementById(“saws”).value;
var check2=document.getElementById(“钳子”).value;
var check3=document.getElementById(“planers”).value;
var ok=[];
确定[0]=check1.search(/^$|\d+/);
确定[1]=check2.search(/^$|\d+/);
确定[2]=check3.search(/^$|\d+/);
对于(i=0;i
姓氏:
送货地址:
城市:
付款方式
签证
万事达卡
美国运通
链接
这是工作不正常的部件:
<?php
$states = array('Alabama','Alaska','Arizona','California','Florida','Georgia');
echo '<label> State:';
echo '<select name="state">';
for ($i = 0; $i < count($states); $i++) {
echo '<option>' . $states[$i] . '</option>';
}
echo '</select>';
echo '</label>';
?>
我认为问题在于循环的计数,您需要知道数组的长度,因此请尝试使用sizeof($states)
for ($i = 0; $i < sizeof($states); $i++) {
for($i=0;$i
另一件事:你必须在“选项”上加上一些值才能在后端得到它。如下所示:
echo '<option value="'.$states[$i].'">' . $states[$i] . '</option>';
echo'.$states[$i].';
最后一点:您不需要将“select”放在“label”中。您可以使用标签上的“for”属性来引用select id。
以下是所有代码:
<?php
$states = array('Alabama','Alaska','Arizona','California','Florida','Georgia');
echo '<label for="state"> State: </label>';
echo '<select name="state" id="state">';
for ($i = 0; $i < sizeof($states); $i++) {
echo '<option value="'.$states[$i].'">' . $states[$i] .
'</option>';
}
echo '</select>';
?>
祝你好运。在这种情况下,只需使用一个简单的foreach:
foreach ($states as $state) {
echo '<option value="'.$state.'">' . $state . '</option>';
}
foreach($states为$state){
回显“.$state.”;
}
你的数组是基本的,不需要任何特殊的魔法就可以工作。
sizeof
是count
的别名,所以这一部分没有什么区别。虽然使用foreach
可以代替计数器工作。是的,你说得对:)。我认为问题确实在于选项的值。不幸的是,我最终得到了这个d显示:状态:';echo“带单引号和句点的空下拉列表”;echo“”;?>它的工作原理是什么?而不是显示:“State:DROP DOWN WITH STATES HERE”我得到:“State:';echo“DROP DOWN”读作“'.$STATES[i]”;;echo“”;?>