 |
ช่วยที่ครับ เรื่อง php foreach พึ่งเคยใช้อะครับไม่เข้าใจเลย |
|
 |
|
|
 |
 |
|
ติดมาหลายอาทิตย์แล้วอะครับ
อยากได้แบบนี้อะครับ

อันนี้โค้ดครับ
Code (PHP)
foreach($_POST["date1"] as $val){
foreach($_POST["min1"] as $val1)
foreach($_POST["hour1"] as $vals1)
$vals1.=":";$vals1.="$val1";$vals1.=":00";
echo $vals1."<br>";
foreach($_POST["min2"] as $val2)
foreach($_POST["hour2"] as $vals2)
$vals2.=":";$vals2.="$val2";$vals2.=":00";
echo $vals2."<br>";
$room=$_POST["txtroom"];
$detail=$_POST["txtdetail"];
echo $val."<br>";
$sql_insert = " INSERT INTO `bkkbooking`.`booking` (`m_id` ,`appdate` ,`sdate` ,`edate` ,`stime` ,`etime` ,`r_id` ,`detail` ,`status` )";
$sql_insert.= " VALUES('".$id."','".date("Y-m-d")."','".$val."','".$val."', '".$vals1."','".$vals2."','".$room."','".$detail."','0'); ";
$objQuery = mysql_query($sql_insert) or die(mysql_error());
echo $sql_insert."<br>";
Tag : PHP
|
|
 |
 |
 |
 |
Date :
2013-05-21 11:33:43 |
By :
white31969 |
View :
857 |
Reply :
16 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้เป็นเรื่องของ Time Zone หรือเปล่ืาอ่าาา
|
 |
 |
 |
 |
Date :
2013-05-21 11:37:18 |
By :
tumkung_narakjung |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รูปแบบเป็นแบบนี้อะครับ
ผมก็ไม่รุ้จะใช้วิธีให้เก็บดี

|
 |
 |
 |
 |
Date :
2013-05-21 11:43:37 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Y_Y
|
 |
 |
 |
 |
Date :
2013-05-21 12:48:29 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากรูปในคำถาม เมื่อเลือกเวลา 8:15 แล้วกดส่งข้อมูล
แต่กลับกลายเป็น 9:00 ใช่หรือไม่ครับ?
|
 |
 |
 |
 |
Date :
2013-05-21 13:19:17 |
By :
Naizan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ครับ น่าจะวนLoopผิดอะครับ
|
 |
 |
 |
 |
Date :
2013-05-21 13:20:42 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองดูครับ
foreach($_POST["date1"] as $key=>$val){
$startTime = $_POST["hour1"][$key].':'. $_POST["min1"][$key];
$stopTime = $_POST["hour2"][$key].':'. $_POST["min2"][$key];
//INSERT
}
|
ประวัติการแก้ไข 2013-05-21 13:27:19
 |
 |
 |
 |
Date :
2013-05-21 13:26:57 |
By :
Naizan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองก่อนครับ
|
ประวัติการแก้ไข 2013-05-21 13:33:18
 |
 |
 |
 |
Date :
2013-05-21 13:33:02 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วขอบคุณมากเลยครับ หายเครียดเลย ช่วยอธิบายการทำงานของมันหน่อยได้มั้ยครับ
|
ประวัติการแก้ไข 2013-05-21 13:35:44
 |
 |
 |
 |
Date :
2013-05-21 13:34:27 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถามเพิ่มนิดนึงนะครับ เวลาเชคห้องทำยังไงหรอครับ
คือ 2014-01-23 จองแล้วแต่วันที่ 2014-01-25 ยังไม่จอง อยากให้มันเชคว่าเป็นจ้องแล้วไปเลยอะครับ
อันนี้มันเชคเฉพาะวันที่สุดท้ายอะครับ
Code (PHP)
foreach($_POST["date1"] as $key=>$val){
$stime = $_POST["hour1"][$key].':'. $_POST["min1"][$key];
$etime = $_POST["hour2"][$key].':'. $_POST["min2"][$key];
$room=$_POST['txtroom'];
$strSQL = "SELECT * FROM booking WHERE r_id = '".$room."'
AND
(
(sdate='".$val."') OR ('".$val."'=edate)
)
AND
(
('".$stime."' BETWEEN stime AND etime) OR ('".$etime."' BETWEEN stime AND etime )
OR (stime between '".$stime."' and '".$etime."') OR (etime between '".$stime."' and '".$etime."')
)";
$objQuery = mysql_query($strSQL) or die(mysql_error());
$objResult = mysql_fetch_array($objQuery);
echo $strSQL."<br>";
}
if(!empty($objResult['sdate']))
{
echo "<script>alert('ห้องนี้มีผู้ใช้งานแล้วกรุณาตรวจสอบอีกครั้ง!');history.back();</script>";
}
elseif($stime > $etime){
echo "<script>alert('เวลาเริ่มต้นน้อยกว่าเวลาสิ้นสุด!');history.back();</script>";
}
|
 |
 |
 |
 |
Date :
2013-05-21 15:51:11 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จะใช้ (sdate='".$val."') OR ('".$val."'=edate) ไม่ได้ครับ เพราะเป็นการจองแบบต่อเนื่องใช่รึเปล่าครับ
เช่นวันที่ 23 - 30 ก็แสดงว่าระหว่างนั้นไม่ว่าง
การเช็กระหว่างนั้นก็ต้องใช้ BETWEEN
ให้กลับไปดูกระทู้ก่อนๆ ครับ
|
 |
 |
 |
 |
Date :
2013-05-21 21:46:52 |
By :
Naizan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ ไม่ใช่ต่อเนื่องครับเป็น จองทีละวันครับ เช่น วันที่23 วันที่30 วันที่ 31 วันที่2 เท่ากับ 4วันอะครับ แล้วโค้ดที่โพสมันจะเชคแค่วันสุดท้ายอะครับ เชคแค่วันที่2 ถ้าเปลี่ยนเป็น วันที่23 วันที่30 วันที่ 31 วันที่3 ก็จะจองได้ครับ
|
 |
 |
 |
 |
Date :
2013-05-22 08:33:27 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมเห็นออกแบบฟิลด์ edate ไว้เหมือนกับเป็นการจอง ระหว่าง sdate ถึง edate หรือว่ายกเลิกการจองต่อเนื่องไปแล้ว
ฟิลด์ sdate และ edate จะเป็นค่าเดียวกันทุกครั้ง ใช่รึเปล่าครับ?
-----------------------------------------------------------------
ถ้าใช่ โค๊ดนี้ถูกต้องแล้วครับ แต่ต้องแก้ไขดัดแปลงนิดหน่อย
ต้องเปลี่ยนการตรวจสอบเป็นค่ารวมครับ การเช็กอาร์เรย์แบบที่เขียนจะได้ค่าเฉพาะลูปสุดท้ายครับ
ให้เพิ่ม $check_date เพื่อเก็บค่ารวม เอาไว้เช็กหลังจากตรวจสอบทุกรายการแล้วครับ
Code (PHP)
$check_date = '';
foreach($_POST["date1"] as $key=>$val){
.
.
.
.
if($objResult['sdate']){
$check_date .= $objResult['sdate']. ' เวลา '. $stime .' - '. $etime;
}
}
if($check_date != '')
{
echo "<script>alert('ห้องนี้มีผู้ใช้งานแล้วกรุณาตรวจสอบอีกครั้ง! \n วันและเวลาที่จองแล้ว \n $check_date');history.back();</script>";
}
|
ประวัติการแก้ไข 2013-05-22 09:12:21
 |
 |
 |
 |
Date :
2013-05-22 09:11:28 |
By :
Naizan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่เข้าใจแฮะ
|
 |
 |
 |
 |
Date :
2013-05-22 13:23:49 |
By :
white31969 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|