PHP规范化,如何创建适当的循环?
我尝试将我的表预订分为3个表以实现规范化。 嗯,当我尝试为多个预订生成1个bookingID时,我遇到了问题。 我对循环感到困惑 场景:客户预订了两个展位,A01和A02(A01从第1天预订到第3天,而A02从第1天预订到第2天)。 系统将处理预订,它应该为A01和A02生成2个预订ID,并为A01_D1、A01_D2、A01_D3(携带预订ID A01)和A02_D1、A02_D2(携带预订ID A02)生成预订日程ID。我应该如何循环并获得以下结果 我的编码PHP规范化,如何创建适当的循环?,php,mysql,foreach,sizeof,explode,Php,Mysql,Foreach,Sizeof,Explode,我尝试将我的表预订分为3个表以实现规范化。 嗯,当我尝试为多个预订生成1个bookingID时,我遇到了问题。 我对循环感到困惑 场景:客户预订了两个展位,A01和A02(A01从第1天预订到第3天,而A02从第1天预订到第2天)。 系统将处理预订,它应该为A01和A02生成2个预订ID,并为A01_D1、A01_D2、A01_D3(携带预订ID A01)和A02_D1、A02_D2(携带预订ID A02)生成预订日程ID。我应该如何循环并获得以下结果 我的编码 <?php incl
<?php
include('db.php');
// check array and insert parrentBookingID
// check submitted totalDay
if (isset($_POST['submit']) && isset($_POST['totalDay'])) {
//check day exist or not
$cDay=$_POST['totalDay'];
for ($i=1; $i<=sizeof($cDay); $i++) { //check array size
$temp=0;
foreach ($cDay as $dy) {
$checkDay = $dy;
$checkDay = explode(" ", $checkDay);
echo $checkDay[0]; // boothAlias
echo $checkDay[1]; // boothID
echo $checkDay[2]; // day
$checkDayResult = mysql_query(
"SELECT * FROM bookingDetail WHERE boothID='$checkDay[1]'
and day='$checkDay[2]' and username='$user'"
);
$num_rows_check = mysql_num_rows($checkDayResult);
if ($num_rows_check) {
echo "Exist";
$temp += 1;
} else {
$temp += 0;
}
}
} //FOR LOOP CHECK ARRAY SIZE
echo "temp".$temp;
if ($temp != 0) {
echo "Please try again";
} else {
// insert parentBookingID
$parent = mysql_query(
"INSERT into booking (custNo,eventID,dateBook)
VALUES ('$userID','$event',NOW())"
);
$parentBookID = mysql_insert_id();
// End check array and insert parrentBookingID
// check booth, create bookingDetailID
$booth = $_POST['totalDay'];
//for loop check array size for check repeat booth.
for ($j=1; $j <= sizeof($booth); $j++) {
$current = explode (" ", $booth);
} // end for loop check repeat loop.
// end check booth.
$totalDay = $_POST['totalDay'];
$allBooth = "";
foreach ($totalDay as $d) {
echo $d;
$bookingInfo = $d;
$bookingInfo = explode(" ", $bookingInfo);
echo $bookingInfo[0]; // boothAlias
echo $bookingInfo[1]; // boothID
echo $bookingInfo[2]; // day
$result = mysql_query(
"SELECT * FROM bookingDetail WHERE
boothID='$bookingInfo[1]' and day='$bookingInfo[2]'
and username='$user'"
);
$num_rows = mysql_num_rows($result);
if ($num_rows) {
echo "Exist";
} else {
$str = "INSERT INTO bookingDetail
(username, custNo, eventID, date, day,
boothAlias, boothID, parentBookID) VALUES ('$user',
'$userID','$event',NOW(),'$bookingInfo[2]',
'$bookingInfo[0]','$bookingInfo[1]','$parentBookID');";
$res = mysql_query($str);
if ($res) {
echo 'Success';
} else {
echo 'Failure';
}
$allBooth = substr($allBooth, 0, -2);
echo "<p>Booth(s): <strong>$allBooth</strong>
<strong>$user</strong> <strong>$event</strong>
<strong>$userID</strong></p>\r\n";
}
}
} // close check $temp
header("refresh:5;url=mybooking.php");
echo "<img src='loading16.gif' style='margin-top:8px; float:left'/>";
echo 'You\'ll be redirected in about 5 secs. If not, click
<a href="mybooking.php">here</a>.';
} else {
echo "You do not make any booking";
header("refresh:5;url=booking2.php");
echo "<img src='loading16.gif' style='margin-top:8px; float:left'/>";
echo 'You\'ll be redirected in about 5 secs. If not, click
<a href="booking2.php">here</a>.';
}
请将代码包装在大约80个字符之后。在许多语言中,这是一个推荐的标准,必须水平滚动是相当不愉快的。@mike,我知道的没错!我试着尽可能地重新格式化它。。但是那家伙用标签代替空格,所以花了很长时间!现在我已经厌倦了格式化,甚至都不想去读了。我用的是回车和空格,哈哈。我怎么知道我应该用制表符或空格@。@对不起