这是我第一次使用“for”循环,我真的不明白它是如何工作的。当我尝试运行它时,我收到一个错误,上面写着“未定义的索引....”注意:未定义的索引:SupplierName1。请帮助我如何定义它。感谢。
if(isset($_POST['submit'])) {
$amt = $_POST['total'];
echo "<pre>"; print_r($_POST); echo "</pre>";
if($amt > 0) {
$qry = "INSERT INTO supplier(SupplierName, SupplierCompanyAddress, SupplierContactNo) VALUES "; // Split the mysql_query
for($i=1; $i<=$amt; $i++) {
$qry .= "('".$_POST["SupplierName$i"]."', '".$_POST["SupplierCompanyAddress$i"]."', '".$_POST["SupplierContactNo$i"]."', NOW()), "; // loop the mysql_query values to avoid more server loding time
}
$qry = substr($qry, 0, strlen($qry)-2);
$insert = mysql_query($qry); // Execute the mysql_query
}
// Redirect for each cases
if($insert) {
$msg = '<script type="text/javascript">window.location.href = "?view&result=added";</script>';
}
else {
$msg = '<script type="text/javascript">alert("Server Error, Kindly Try Again");</script>';
}
}
以下是结果
Array
(
[SupplierName1] => lloooo
[SupplierCompanyAddress1] => oo
[SupplierContactNo1] => ooo
[SupplierName2] => mm
[SupplierCompanyAddress2] => mm
[SupplierContactNo2] => mm
[total] => 2
[submit] => Add
)
忘记提及此表单可以一次添加多个数据/记录。
以下是固定版本(已解决)
if(isset($_POST['submit'])) {
$amt = $_POST['total'];
//echo "<pre>"; print_r($_POST); echo "</pre>";
if($amt > 0) {
for($i=1; $i<=$amt; $i++) {
$qry = "INSERT INTO supplier(SupplierName, SupplierCompanyAddress, SupplierContactNo) VALUES "; // Split the mysql_query
$qry .= " ( '".$_POST["SupplierName$i"]."' , '".$_POST["SupplierCompanyAddress$i"]."', '".$_POST["SupplierContactNo$i"]."') "; // loop the mysql_query values to avoid more server loding time
//$qry = substr($qry, 0, strlen($qry)-2);
//echo $qry;//
mysql_query($qry) or die(mysql_error());
header('location:view_supplier_for_manager.php');
//echo "ok";
}else {
echo "fail";
}// Execute the mysql_query
}
}
// Redirect for each cases
//if($insert) {
//$msg = '<script type="text/javascript">window.location.href = "?view&result=added";</script>';
}*/
}
}
}
?>
答案 0 :(得分:0)
for-loop期望&#39;指数&#39;符合$amt
值。换句话说,如果您提交的表单有一个输入字段:
<input type="text" name="amt" value="4"/>
那么它应该有4组这样的字段:
<input type="text" name="SupplierName1"/>
<input type="text" name="SupplierCompanyAddress1"/>
<input type="text" name="SupplierContactNo1"/>
...
<input type="text" name="SupplierName4"/>
<input type="text" name="SupplierCompanyAddress4"/>
<input type="text" name="SupplierContactNo4"/>
您看到的错误显然是因为缺少第一组。在循环中:
$qry .= "('".$_POST["SupplierName$i"]."',
'".$_POST["SupplierCompanyAddress$i"]."',
'".$_POST["SupplierContactNo$i"]."', NOW()), ";
params扩展到:
$qry .= "('".$_POST["SupplierName1"]."',
'".$_POST["SupplierCompanyAddress1"]."',
'".$_POST["SupplierContactNo1"]."', NOW()), ";
然后2,3 ......直到$amt
。如果$amt
等于1,则需要第一组。尝试打开浏览器开发工具(usu。F12),看看究竟提交了哪些参数。