Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > แนะนำการ Query ข้อมูลส่วนนี้ให้หน่อยคับ มีการ join table ด้วยคับเกี่ยวกับการจองห้องพัก มีโค้ดให้ดูคับ



 

แนะนำการ Query ข้อมูลส่วนนี้ให้หน่อยคับ มีการ join table ด้วยคับเกี่ยวกับการจองห้องพัก มีโค้ดให้ดูคับ

 



Topic : 052827



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์




จะอธิบายยังไงดี คือว่า เก็บประเภทห้อง แล้วก้อชื่อห้อง เช่น tblRoom มี 2 ฟิว Roon_ID,RoomType_ID มันติดปัญหาตรงที่ว่า Room_ID มันเก็บหมายเลยห้อง เช่น 516,517,518,519 ส่วน RoomType_ID จะเก็บ ประเภทห้อง เช่น 3,4,5,6 เวลาจองห้องพักมันก้อวิ่งไปที่ RoomType_ID ถ้ามีการจองแล้วมันก้อบอกว่าห้องไม่ว่าง ทั้งๆที่ว่างอยู่อีกหลายห้องแต่มันเป็น RoomType_ID เดียวกัน เช่น

Room_ID RoomType_ID
516 3
517 3
518 3
519 3

จะquery ยังไงดีคับ ผมมีโค้ดให้ดู

// ตรวจสอบห้องที่ว่าง ก่อนที่จะ Insert ลงตาราง Booking
// 1. Select tblTempRoom จะได้ ชนิดห้องพัก และจำนวนห้องที่จอง มีหลาย Row
$query_rcsTR = "SELECT * FROM tblTempRoom WHERE Session_ID = '".session_id()."'";
$rcsTR = mysql_query($query_rcsTR, $conn) or die(mysql_error());

while($row_rcsTR = mysql_fetch_assoc($rcsTR)){ // ชนิดห้องพักที่ n
$rt = $row_rcsTR['RoomType_ID'];
// 3. หาหมายเลขห้องที่ไม่ว่างก่อน จะได้หมายเลขห้องที่ว่าง เป็น Array ตามจำนวน NoRoom ที่ต้องการจอง
$query_rcsBR = "SELECT tblRoom.Room_ID FROM tblRoom, tblBooking, tblBookingRoom WHERE tblBookingRoom.Book_ID = tblBooking.Book_ID AND tblRoom.Room_ID = tblBookingRoom.Room_ID AND tblRoom.RoomType_ID = ".$row_rcsTR['RoomType_ID']." AND (B_CheckIn BETWEEN '".$ch_chkIn."' AND '".$ch_chkOut."') OR (B_CheckOut BETWEEN '".$ch_chkIn."' AND '".$ch_chkOut."') AND (B_Status = 'ค้างค่ามัดจำ' OR B_Status = 'ชำระแล้ว') GROUP BY tblRoom.Room_ID" ;

$rcsBR = mysql_query($query_rcsBR, $conn) or die(mysql_error());
$i = 1;
while($row_rcsBR = mysql_fetch_assoc($rcsBR)){
$arr_br[$i] = $row_rcsBR["Room_ID"];
$i++;
}
// หาห้องที่ว่าง
$query_rcsR = "SELECT Room_ID FROM tblRoom WHERE RoomType_ID = ".$row_rcsTR['RoomType_ID'];
for($i=$i-1;$i>=1;$i--){
$query_rcsR .= " AND Room_ID != '".$arr_br[$i]."'";
}
$query_rcsR .= " LIMIT 0,".$row_rcsTR['TR_NoRoom'];
$rcsR = mysql_query($query_rcsR, $conn) or die(mysql_error());
$totalRows_rcsR = mysql_num_rows($rcsR);
if($totalRows_rcsR < $row_rcsTR['TR_NoRoom']){ // จำนวนห้องที่ว่าง ไม่พอจำนวนห้องที่จอง
// echo "ขออภัยจำนวนห้องที่ท่านจองชนิด...ว่างเพียง....ห้อง";
// วนลูปตรวจสอบให้ครบทุกชนิด แล้วแจ้ง Error ทีเดียว
$arr_error[$rt] = $totalRows_rcsR;
}else{ // เก็บหมายเลขห้องที่ว่างใส่ในตัวแปรก่อน
$j = 1;
while($row_rcsR = mysql_fetch_assoc($rcsR)){
$arr_room[$rt][$j] = $row_rcsR["Room_ID"];
$j++;
}
} // จำนวนห้องที่ว่าง ไม่พอจำนวนห้องที่จอง
}

if(isset($arr_error)){
echo "ขออภัย\n";
while (list($key, $val) = each($arr_error)) {
$query_rcsRT = "SELECT RT_Name FROM tblRoomType WHERE RoomType_ID=".$key;
$rcsRT = mysql_query($query_rcsRT, $conn) or die(mysql_error());
$row_rcsRT = mysql_fetch_assoc($rcsRT);
if($val == 0){
echo "ห้องพักแบบ ".$row_rcsRT['RT_Name']." ไม่มีห้องว่าง\n";
}else{
echo "ห้องพักแบบ ".$row_rcsRT['RT_Name']." มีห้องว่าง $val ห้อง\n";
}
}
exit;
}else{
// เตรียมข้อมูล สำหรับ Insert



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-08 13:22:40 By : cmdping View : 1148 Reply : 3
 

 

No. 1



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


ผมเขียน PHP ไม่เป็นครับ
แต่ที่อยากบอกคือ ถ้าเกี่ยวกับ Code ให้ใส่กรอบแบบนี้จะอ่านง่ายกว่าครับ

Code (PHP)
$query_rcsTR = "SELECT * FROM tblTempRoom WHERE Session_ID = '".session_id()."'";
$rcsTR = mysql_query($query_rcsTR, $conn) or die(mysql_error());


แล้วก็น่าจะบอกว่า คำสั่งบรรทัดไหน ที่คิดว่ามีปัญหา
สิ่งที่ต้องการคืออะไร
และสิ่งที่เป็นอยู่ตอนนี้คืออะไร
แล้วเดี๋ยวจะมีเทพมาตอบให้








แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-08 13:36:05 By : หางอึ่ง
 


 

No. 2



โพสกระทู้ ( 130 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : หางอึ่ง เมื่อวันที่ 2010-12-08 13:36:05
รายละเอียดของการตอบ ::
ขอโทษด้วยคับที่ทำให้อ่านยาก


ตอนนี้มันเช็คได้ปกติ แต่มันจะเช็คแค่ RoomType_ID เท่านั้น อยากให้มันเช็ค Room_ID ด้วยว่ายังว่างอยู่กี่ห้อง

Code (PHP)
// ตรวจสอบห้องที่ว่าง ก่อนที่จะ Insert ลงตาราง Booking
// 1. Select tblTempRoom จะได้ ชนิดห้องพัก และจำนวนห้องที่จอง มีหลาย Row
$query_rcsTR = "SELECT * FROM tblTempRoom WHERE Session_ID = '".session_id()."'";
$rcsTR = mysql_query($query_rcsTR, $conn) or die(mysql_error());
	
while($row_rcsTR = mysql_fetch_assoc($rcsTR)){ // ชนิดห้องพักที่ n
	$rt = $row_rcsTR['RoomType_ID'];
	// 3. หาหมายเลขห้องที่ไม่ว่างก่อน จะได้หมายเลขห้องที่ว่าง เป็น Array ตามจำนวน NoRoom ที่ต้องการจอง
	$query_rcsBR = "SELECT tblRoom.Room_ID FROM tblRoom, tblBooking, tblBookingRoom WHERE tblBookingRoom.Book_ID = tblBooking.Book_ID AND tblRoom.Room_ID = tblBookingRoom.Room_ID AND tblRoom.RoomType_ID = ".$row_rcsTR['RoomType_ID']." AND (B_CheckIn BETWEEN '".$ch_chkIn."' AND '".$ch_chkOut."') OR (B_CheckOut BETWEEN '".$ch_chkIn."' AND '".$ch_chkOut."') AND (B_Status = 'ค้างค่ามัดจำ' OR B_Status = 'ชำระแล้ว') GROUP BY tblRoom.Room_ID" ; 

$rcsBR = mysql_query($query_rcsBR, $conn) or die(mysql_error());
	$i = 1;
	while($row_rcsBR = mysql_fetch_assoc($rcsBR)){ 
		$arr_br[$i] = $row_rcsBR["Room_ID"];
		$i++;
	}
	// หาห้องที่ว่าง		
	$query_rcsR = "SELECT Room_ID FROM tblRoom WHERE RoomType_ID = ".$row_rcsTR['RoomType_ID'];		
	for($i=$i-1;$i>=1;$i--){
		$query_rcsR .= " AND Room_ID != '".$arr_br[$i]."'";
	}
	$query_rcsR .= " LIMIT 0,".$row_rcsTR['TR_NoRoom'];
	$rcsR = mysql_query($query_rcsR, $conn) or die(mysql_error());
	$totalRows_rcsR = mysql_num_rows($rcsR);
	if($totalRows_rcsR < $row_rcsTR['TR_NoRoom']){ // จำนวนห้องที่ว่าง ไม่พอจำนวนห้องที่จอง
		// echo "ขออภัยจำนวนห้องที่ท่านจองชนิด...ว่างเพียง....ห้อง";
		// วนลูปตรวจสอบให้ครบทุกชนิด แล้วแจ้ง Error ทีเดียว
		$arr_error[$rt] = $totalRows_rcsR;
	}else{ // เก็บหมายเลขห้องที่ว่างใส่ในตัวแปรก่อน
		$j = 1;
		while($row_rcsR = mysql_fetch_assoc($rcsR)){ 
			$arr_room[$rt][$j] = $row_rcsR["Room_ID"];
			$j++;
		}
	} // จำนวนห้องที่ว่าง ไม่พอจำนวนห้องที่จอง 
} 

if(isset($arr_error)){
	echo "ขออภัย\n";
	while (list($key, $val) = each($arr_error)) {
		$query_rcsRT = "SELECT RT_Name FROM tblRoomType WHERE RoomType_ID=".$key;
		$rcsRT = mysql_query($query_rcsRT, $conn) or die(mysql_error());
		$row_rcsRT = mysql_fetch_assoc($rcsRT);
		if($val == 0){
			echo "ห้องพักแบบ ".$row_rcsRT['RT_Name']." ไม่มีห้องว่าง\n";
		}else{
			echo "ห้องพักแบบ ".$row_rcsRT['RT_Name']." มีห้องว่าง $val ห้อง\n";
		}
	}
	exit;
}else{
	// เตรียมข้อมูล สำหรับ Insert

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-08 13:52:21 By : cmdping
 

 

No. 3



โพสกระทู้ ( 1,035 )
บทความ ( 0 )



สถานะออฟไลน์


เปลียน mysql_fetch_assoc ให้เป็น mysql_fetch_array แล็วก็ if($val > 0)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-08 16:02:19 By : kanchen
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : แนะนำการ Query ข้อมูลส่วนนี้ให้หน่อยคับ มีการ join table ด้วยคับเกี่ยวกับการจองห้องพัก มีโค้ดให้ดูคับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่