对于Ex-
如果用户在文本框中输入,如
bookno-101totalbook-2
收据编号-500总记录-2
优惠券-700 totalcoup-2
然后输出如下表所示。
在此表中,优惠券编号总是唯一的。收据编号为两次bcoz,每张收据分配两张优惠券
对于Ex-
书籍收据优惠券
101 500-700
101 500-701
101-501-702
101-501-703
102-502-704
102-502-705
102-503-706
102-503-707
现在第二次输入时
图书编码=800book_no2=802
receiptcode=1600Temp_receipt=1602
couponcode=1800
Temp_coon=1802
然后生成低于的输出
图书收据优惠券801-1601 1801801-1601-1802801-1602-1803801-1602-1804802-1603-1805802-1603-1806802-1604-1807802-1604-1808
我尝试了以下代码,但无法正常工作。
<?php
if(isset($_POST['save']))
{
$bookcode = $_POST['bookcode'];
$book_no2 = $_POST['book_no2'];
$receiptcode = $_POST['receiptcode'];
$receipt_no = $_POST['receipt_no'];
$couponcode = $_POST['couponcode'];
$coupon = $_POST['coupon'];
$Temp_receipt = $receiptcode + $receipt_no;
$Temp_coupon = $couponcode + $coupon;
for($row1=$bookcode+1;$row1<=$bookcode+$book_no2;$row1++)
{
for($row=$receiptcode+1;$row<=$Temp_receipt;$row++)
{
$query = $database->getRow("SELECT MAX(receipt_no) AS max1 FROM scheme_master;");
if($query['max1']=='')
{
$largestNumber = $receiptcode;
$top = $largestNumber + 1;
}
else
{
$largestNumber = $query['max1'];
$top = $largestNumber + 1;
}
$Pric = "";
$loopCount = 0;
for($row2=$couponcode+1;$row2<=$Temp_coupon;$row2++)
{
$query = $database->getRow("SELECT MAX(coupon) AS max2 FROM scheme_master;");
if($query['max2']=='')
{
$largestcoupon = $couponcode;
$coup = $largestcoupon + 1;
}
else
{
$largestcoupon = $query['max2'];
$coup = $largestcoupon + 1;
}
$value = $loopCount++ + 1;
$code = '- mths';
$Pric=$value.$code;
$insertrow = $database->insertRow("INSERT INTO scheme_master (book_no2,receipt_no,coupon)
VALUES (:book_no2,:receipt_no,:coupon)",
array(':receipt_no'=>$top,':book_no2'=>$row1,':coupon'=>$coup));
}
}
}
$_SESSION['message'] = "Books Created Successfully";
}
?>
我得到的输出如下表所示
书籍收据优惠券
101-501-701
101-502-702
102-501-701
102-502-702
每次使用循环时,它都会重置回输入的值(例如,coupon_no)
应该使用bookno
、couponno
和receiptno
的值作为起点,使用totalbook
、totalcoup
和totalrec
的值作为循环条件。随走随增:
<?php
$bookno= $_POST['bookcode'];
$totalbook= $_POST['book_no2'];
$receiptno = $_POST['receiptcode'];
$totalrec= $_POST['receipt_no'];
$couponno= $_POST['couponcode'];
$totalcoup= $_POST['coupon'];
for ($book_counter=1; $book_counter<=$totalbook; $book_counter++)
{
for($rec_counter=1; $rec_counter<=$totalrec; $rec_counter++)
{
for($coup_counter=1; $coup_counter<=$totalcoup; $coup_counter++)
{
$insertrow = $database->insertRow(
"INSERT INTO scheme_master (book_no2,receipt_no,coupon) VALUES (:book_no2,:receipt_no,:coupon)",
array(':receipt_no'=>$receiptno,':book_no2'=>$bookno,':coupon'=>$couponno));
$couponno++;
}
$receiptno++;
}
$bookno++;
}
?>
NB这还没有经过测试,但它应该会让你走上正确的路径
编辑的代码(带有关于未使用变量的注释)
<?php
if (isset($_POST['save']))
{
/*
* No checking for validity of values
*/
$bookcode = $_POST['bookcode'];
$book_no2 = $_POST['book_no2'];
$receiptcode = $_POST['receiptcode'];
$receipt_no = $_POST['receipt_no'];
$couponcode = $_POST['couponcode'];
$coupon = $_POST['coupon'];
$Temp_receipt = $receiptcode + $receipt_no;
$Temp_coupon = $couponcode + $coupon;
for ($row1 = $bookcode + 1; $row1 <= $bookcode + $book_no2; $row1++) // what happens if $bookcode or $book_no2 are negative? Why start at +1 instead of what user entered?
{
for ($row = $receiptcode + 1; $row <= $Temp_receipt; $row++) // what happens if $receiptcode or $receipt_no are negative? Why start at +1 instead of what user entered?
{
/*
* Each run of this query will slow down this whole code
*/
$query1 = $database -> getRow("SELECT if (receipt_no is null, 1,MAX(receipt_no)+1) AS max1 FROM scheme_master;");
$top = $query1['max1'];
/*
* Initialised but $Pric is never used apart from an assignment
*/
$Pric = "";
$loopCount = 0; // initialised and updated but not used anywhere in this code
for ($row2 = $couponcode + 1; $row2 <= $Temp_coupon; $row2++) // what happens if $couponcode or $coupon are negative? Why start at +1 instead of what user entered
{
/*
* Each run of this query will slow down this whole code
*/
$query2 = $database -> getRow("SELECT if (coupon is null, 1, MAX(coupon)+1) AS max2 FROM scheme_master;");
$coup = $query2['max2'];
/*
* $value is never used
*/
$value = $loopCount+=2; // the same as $value=$loopCount++ +1; No idea why it's here as it is not used at all in this code
/*
* These values are never used
*/
$code = '- mths'; //unused. As it never changes, should be initialised earlier
$Pric = $value.$code; //unused
$insertrow = $database -> insertRow("INSERT INTO scheme_master (book_no2,receipt_no,coupon) VALUES (:book_no2,:receipt_no,:coupon)", array(':receipt_no' => $top, ':book_no2' => $row1, ':coupon' => $coup));
}
}
}
$_SESSION['message'] = "Books Created Successfully";
}
?>