我道歉,因为我相信我的问题可能会让人感到困惑。
我有三个不同的PHP文件。第一个询问您需要多少种不同的产品(1-20),其中变量称为$quantity
。从下拉框中选择一个数字后,您将进入下一个自动生成$quantity
行数的表的PHP页面,每行中都有一个从数据库中填充的下拉框。还有另一列有数量空文本框。
以下是代码:
<?php
$quantity = "";
$i = 1;
if (isset($_POST['quantity'])) {
$quantity= $_POST['quantity'];
$var = "";
while($row = mysqli_fetch_array($result1)){
$var = $var . "<option>" . $row['product_name'] . "</option>";
}
echo "<left><table border='1' width='1%'><tr><td><center>Product</td><td>Quantity</center></td></tr>";
while ($i <= $quantity){
echo "<tr><td><select name='product[]' size='1'>";
echo $var;
echo "</select></td><td><input name='quant[]' size='5' /></td></tr>";
$i++;
}
echo "</table></left>";
}
?>
输入每个产品及其所需数量后,用户单击“提交”并将其转到最终的PHP页面。此PHP页面应该是一个包含所有客户信息及其选定产品和数量的确认页面。但是,我的代码只从第二个PHP页面中打印出表中的最新产品和数量。例如,如果表是:
Product Quantity
Bed 1
Chair 2
Couch 3
我的确认页打印出一行表,其中只包含Couch
的信息,而不是包含所有这三种产品的多行。这是我最后一个PHP页面的代码:
<body>
<?php
$curTime= "";
$customerbox= "";
$region= "";
$products = $_POST['product']; //I changed this (edit 2)
$quants = $_POST['quant']; //I changed this (edit 2)
if (isset($_POST['curTime'])) $curTime= $_POST['curTime'];
if (isset($_POST['customerbox']))$customerbox= $_POST['customerbox'];
if (isset($_POST['region']))$region= $_POST['region'];
if (isset($_POST['product']))$product= $_POST['product'];
if (isset($_POST['quant']))$quant= $_POST['quant'];
$error= false;
$done=false;
if ((isset($curTime) && empty($curTime))) {
print "Please enter the date.<br/>";
$error = true;
}
if (!isset($_POST['customerbox'])) {
print "Please select your customer.<br/>";
$error = true;
}
if (!isset($_POST['region'])){
print "Please select your region.<br/>";
$error = true;
}
if (!isset($_POST['product'])){
print "Please select your product.<br/>";
$error = true;
}
if ((isset($quant) && empty($quant))){
print "Please enter the quantity.<br/>";
$error = true;
}
else{
$error = true;
$done = true;
}
for ($i =0; $i < count($products); $i++){
echo $products[$i]; //I changed this
echo $quants[$i]; //I changed this
}
?>
<br>
<table style= border-collapse:collapse width="1%"border="2" align="center" <?php if (!$done){ echo "hidden";}?>
<tr>
<th>Date</th>
<th>Customer</th>
<th>Region</th>
<th>Product</th>
<th>Quantity</th>
</tr>
<tr>
<td><center><?php print $curTime?></td></center>
<td><center><?php print $customerbox?></td></center>
<td><center><?php print $region?></td></center>
<td><center><?php print $product?></td></center>
<td><center><?php print $quant?></td><center>
</tr>
</table>
</body>
我相信这个问题正在发生,因为当我创建包含$quantity
行的表时,它会不断命名每个下拉框$product
,因此它将最后一个值设为$product
并打印这一点。
是否有打印出各自数量的所有产品?
提前谢谢!
答案 0 :(得分:2)
对于您的产品和数量下拉框,您应该使用name="product[]"
和name="quant[]"
。
这将发送一个数组而不是一个值作为$_POST
变量,然后您可以使用
$products = $_POST[product];
$quants = $_POST[quant];
for ($i =0; $i < count($products); $i++){
echo $products[$i]; //echo one product
echo $quants[$i]; //echo one quantity
//etc..
}