我正在尝试使用php创建一个下拉框,从填充状态名称的数组中提取状态。我已经使用.php扩展名保存了我的文件,并添加了代码以尝试从我正在创建的数组中创建一个下拉菜单。由于某种原因,下拉菜单不起作用。
<!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>
这是无法正常工作的部分:
<?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>';
?>
答案 0 :(得分:1)
在这种情况下使用简单的foreach:
foreach ($states as $state) {
echo '<option value="'.$state.'">' . $state . '</option>';
}
你的数组是基本的,并且不需要任何特殊的魔法来使它工作。
答案 1 :(得分:0)
我认为问题是循环计数,你需要知道数组长度,所以请尝试使用sizeof($ states)。
for ($i = 0; $i < sizeof($states); $i++) {
另一件事:你必须在“选项”上加上一些值才能在后端获得它。像这样:
echo '<option value="'.$states[$i].'">' . $states[$i] . '</option>';
最后一个:你不需要把“选择”放在“标签”里面。您可以使用标签上的“for”属性来引用选择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>';
?>
祝你好运。 :)