ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingรบกวนช่วยดู Query Mysql+PHP การคำนวนค่าห้องพักหน่อยครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: รบกวนช่วยดู Query Mysql+PHP การคำนวนค่าห้องพักหน่อยครับ  (อ่าน 10224 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« เมื่อ: 21 สิงหาคม 2011, 22:57:14 »


# ค่าที่ส่งมาเป็นแบบ Array

<td><INPUT TYPE=\"checkbox\" NAME=\"roomNO[$roomID]\"  class=\"click\" value=$rs_roomList[ROOMNO]>$rs_roomList[ROOMNO]
<input type=\"hidden\" name=\"roomTYPE[$roomID]\" value='$rs_roomList[RMTYPE]'>
</td>


//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

foreach($_POST['roomNO'] as $roomID => $roomNO )
{

$roomNO = $roomNO ? 1 : 0;

// คำนวนจำนวน Room Night

$arrival_date = $_POST['ARRIVE']; // we set today as an example
$departure_date =$_POST['DEPART'];
$begin = $arrival_date; // we set today as an example
$end = $departure_date;
$sql = "SELECT DATEDIFF('$end','$begin') AS rmnight ";
$rs = mysql_query($sql);
echo $RmNight = mysql_result($rs,0,'rmnight');
if($RmNight5=='0' and $RmNight2=='0' ) {

}else{



$sql = "SELECT tb_ratesetups.RMTYPE,RMRATE ,season_name,start_season,end_season,tb_rooms.ROOMNO  FROM tb_seasons ";
$sql .= "LEFT JOIN tb_ratesetups ON(tb_ratesetups.season_code=tb_seasons.season_code)";
$sql .= "LEFT JOIN tb_rooms ON(tb_ratesetups.RMTYPE=tb_rooms.RMTYPE)";
$sql .= "WHERE tb_seasons.start_season<='$departure_date' ";
$sql .= "AND tb_seasons.end_season>='$arrival_date' ";
$sql .= "AND tb_ratesetups.RMTYPE='{$_POST[roomTYPE][$roomID]}'  ";
$sql .= "AND tb_rooms.ROOMNO='{$_POST[roomNO][$roomID]}' ";
$sql .= "ORDER BY tb_seasons.start_season ASC ";
//$sql .= "LIMIT 1 ";
//echo $sql;

$result_rate = mysql_query($sql) or die (mysql_error()."Err Can not to result 1") ;
$NRow = mysql_num_rows($result_rate);
if($RmNight!='0'){


$total = 0;

$totalextra_price = 0;

$start_date = $arrival_date;

for($i=0;$i<mysql_num_rows($result_rate);$i++){

$rs_rate = mysql_fetch_array($result_rate) ;

if($i+1==mysql_num_rows($result_rate)){

$end_date = $departure_date;

$add = 0;

}else{

$end_date = $rs_rate['end_season'];

$add = 1;

}


$Snight = 0;

$sql = "SELECT DATEDIFF('$end_date','$start_date')+$add AS snight  ";
//
echo $sql;

$rs = mysql_query($sql);

$Snight = mysql_result($rs,0,'snight');

$sql = "SELECT ADDDATE('".$rs_rate['end_season']."',INTERVAL 1 DAY) AS next_season ";
//echo $sql;

$rs = mysql_query($sql);

$start_date = mysql_result($rs,0,'next_season');



echo "<br>";

//echo
$rs_rate['RMRATE']."<br>";
       echo   $rs_rate['season_name']." <br>";
echo $TOTALRATE += $rs_rate['RMRATE']*$Snight;

//$totalextra_price += ($rs_rate['ExtraBed']*$extra)*$Snight;


} //end Loop Rate


}// loop room
}

// จบการคำนวณเพิ่มราคาห้องพัก  โดยกำหนดอยู่ Loop ของ ROOMNO
echo $SqlQuery_AssignRoom = "INSERT INTO ".TB_ROOMASSIGNS." (RESERVNO,ROOMNO,ARRIVE,DEPART,RMRATE,TOTALRATE,USERID,
ASSIGN_DATE) VALUES ('$RESERVNO','{$_POST[roomNO][$roomID]}' ,'$_POST[ARRIVE] $ChkOutTime','$_POST[DEPART] $ChkOutTime','{$rs_rate[RMRATE][$roomID]}','{$TOTALRATE[$roomID]}','$RSVNUSER',NOW())";
$result=mysql_db_query($dbname,$SqlQuery_AssignRoom) or die(mysql_error()."Error:  Can not save <br>$SqlQuery_AssignRoom<br>\n");

}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ปัญหาของผมคือ การจองห้องพักกรณีที่มีการ คาบเกียวราคาการขาย
ราคาการขายห้องพัก แบ่งออกเป็น 2 ช่วง คือ 01/05/2011 - 30/09/2011 ราคา 1000 บาท  ราคา 01/10/2011 - 31/04/2012 1200 บาท
ปัญหา code ที่เป็นอยู่ต้อนนี้ คือ ผมไม่สามารถแยกการคำนวนออกมาได้ กรณีที่ระบุห้องพัก มา 2 ห้อง ในช่วง วันที่คาบเกียวกัน
เช่น จองวันที่  29/09/2011 - 02/10/2011   ระบุห้องมาสองห้อง โปรแกรมจะ Loop ออกมาผิดพลาดครับ

จะแสดงผลออกมาแบบนี้
A6 ราคา 4,500 กับ 6,500
B10 ราคา 1,000 กับ 1,700

จองมา 3 วัน
Low Season
9000
INSERT INTO tb_roomassigns (RESERVNO,ROOMNO,ARRIVE,DEPART,RMRATE,TOTALRATE,USERID, ASSIGN_DATE) VALUES ('11000001','A6' ,'2011-09-29 12:00:00','2011-10-02 12:00:00','4500.00','9000','admin',NOW())
Hight Season
15500
INSERT INTO tb_roomassigns (RESERVNO,ROOMNO,ARRIVE,DEPART,RMRATE,TOTALRATE,USERID, ASSIGN_DATE) VALUES ('11000001','A6' ,'2011-09-29 12:00:00','2011-10-02 12:00:00','6500.00','15500','admin',NOW())3
Low Season
17500
INSERT INTO tb_roomassigns (RESERVNO,ROOMNO,ARRIVE,DEPART,RMRATE,TOTALRATE,USERID, ASSIGN_DATE) VALUES ('11000001','B10' ,'2011-09-29 12:00:00','2011-10-02 12:00:00','1000.00','17500','admin',NOW())
Hight Season
19200
INSERT INTO tb_roomassigns (RESERVNO,ROOMNO,ARRIVE,DEPART,RMRATE,TOTALRATE,USERID, ASSIGN_DATE) VALUES ('11000001','B10' ,'2011-09-29 12:00:00','2011-10-02 12:00:00','1700.00','19200','admin',NOW())


โปรแกรมจะ Loop เพิ่มมาเรียๆๆ รบกวนช่วยดูหน่อยครับ
บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
picharnan
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 90
ออฟไลน์ ออฟไลน์

กระทู้: 1,399



ดูรายละเอียด
« ตอบ #1 เมื่อ: 21 สิงหาคม 2011, 23:21:02 »

 Shocked Shocked เห็นแล้วเครียด  ความพยายามผมคงไม่มากพอที่จะช่วยอ่ะครับ รอผู้กล้าคนต่อไปครับ
บันทึกการเข้า
ball6847
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 212
ออฟไลน์ ออฟไลน์

กระทู้: 4,152



ดูรายละเอียด
« ตอบ #2 เมื่อ: 21 สิงหาคม 2011, 23:59:30 »

งงกะตัวหนังสือ ไม่รู้ไหนโค้ดไหนคำถาม

ครอบใส่ code หน่อยก็ดีนะคับ
บันทึกการเข้า

Azinexii
คนรักเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 172



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 22 สิงหาคม 2011, 00:04:55 »

echo $TOTALRATE += $rs_rate['RMRATE']*$Snight; << นี้หรอ แล้วจะถามอะไร
บันทึกการเข้า

deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 22 สิงหาคม 2011, 10:34:16 »

งงกะตัวหนังสือ ไม่รู้ไหนโค้ดไหนคำถาม

ครอบใส่ code หน่อยก็ดีนะคับ


$arrival_date = $_POST['ARRIVE']; // we set today as an example
$departure_date =$_POST['DEPART'];
$begin = $arrival_date; // we set today as an example
$end = $departure_date;
$sql = "SELECT DATEDIFF('$end','$begin') AS rmnight ";
$rs = mysql_query($sql);
echo $RmNight = mysql_result($rs,0,'rmnight');
if($RmNight5=='0' and $RmNight2=='0' ) {

}else{

$sql = "SELECT tb_ratesetups.RMTYPE,RMRATE ,season_name,start_season,end_season,tb_rooms.ROOMNO  FROM tb_seasons ";
$sql .= "LEFT JOIN tb_ratesetups ON(tb_ratesetups.season_code=tb_seasons.season_code)";
$sql .= "LEFT JOIN tb_rooms ON(tb_ratesetups.RMTYPE=tb_rooms.RMTYPE)";
$sql .= "WHERE tb_seasons.start_season<='$departure_date' ";
$sql .= "AND tb_seasons.end_season>='$arrival_date' ";
$sql .= "AND tb_ratesetups.RMTYPE='{$_POST[roomTYPE][$roomID]}'  ";
$sql .= "AND tb_rooms.ROOMNO='{$_POST[roomNO][$roomID]}' ";
$sql .= "ORDER BY tb_seasons.start_season ASC ";
//$sql .= "LIMIT 1 ";
//echo $sql;

$result_rate = mysql_query($sql) or die (mysql_error()."Err Can not to result 1") ;
$NRow = mysql_num_rows($result_rate);
if($RmNight!='0'){
$total = 0;
$totalextra_price = 0;
$start_date = $arrival_date;
for($i=0;$i<mysql_num_rows($result_rate);$i++){
$rs_rate = mysql_fetch_array($result_rate) ;
if($i+1==mysql_num_rows($result_rate)){
$end_date = $departure_date;
$add = 0;
}else{
$end_date = $rs_rate['end_season'];
$add = 1;
}
$Snight = 0;
$sql = "SELECT DATEDIFF('$end_date','$start_date')+$add AS snight  ";

//echo $sql;
$rs = mysql_query($sql);
$Snight = mysql_result($rs,0,'snight');
$sql = "SELECT ADDDATE('".$rs_rate['end_season']."',INTERVAL 1 DAY) AS next_season ";
//echo $sql;
$rs = mysql_query($sql);
$start_date = mysql_result($rs,0,'next_season');
echo "<br>";

//echo $rs_rate['RMRATE']."<br>";
echo   $rs_rate['season_name']." <br>";
echo $TOTALRATE += $rs_rate['RMRATE']*$Snight;

} //end Loop Rate
}// loop room
}
ส่วนนี้ครับ ที่ code ผิดอยู่ครับ
ปัญหาคือ ช่วงคาบเกี่ยวราคากัน เช่น
มีค่าห้องราคา  1000 บาท  2 วัน 1200 บาท 2 วัน
โปรแกรมจำทำการคำนวนแล้วเอามาบวกกัน   จะแสดงผลออกมา   4400 บาท  ถ้าถ้าระบุห้องพักมา 2 ห้อง  ส่วนของ code นี้จะทำการ sum มาเรียๆๆ ไม่แสดงราคาที่คำนวนตามห้องพัก 
บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
pomchai
สมุนแก๊งเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 839



ดูรายละเอียด
« ตอบ #5 เมื่อ: 23 สิงหาคม 2011, 09:31:11 »

ขอผ่านครับ Tongue
บันทึกการเข้า
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 103
ออฟไลน์ ออฟไลน์

กระทู้: 1,308



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 24 สิงหาคม 2011, 13:24:06 »

จะบอกด้วยว่า โค้ดวนมากเลย

เอา solution ไปละกัน โค้ดขี้เกียจดูไม่รู้วางไว้ยังไง

ก่อนอื่น แยกวันจองเริ่มถึงจบ ให้ได้สองส่วน แต่ละส่วนมีกี่วันจากนั้นก็คูณกันคิดแต่ละเรตออกมา แล้วบวกกันตอนท้าย
เวลาเก็บก็เก็บปกติก็ได้ หรือจะแยกเป็น 2 ช่วงก็ได้  แนะนำให้ใช้ mktime ด้วย
« แก้ไขครั้งสุดท้าย: 24 สิงหาคม 2011, 13:27:41 โดย kobkung » บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 24 สิงหาคม 2011, 15:40:48 »

จะบอกด้วยว่า โค้ดวนมากเลย

เอา solution ไปละกัน โค้ดขี้เกียจดูไม่รู้วางไว้ยังไง

ก่อนอื่น แยกวันจองเริ่มถึงจบ ให้ได้สองส่วน แต่ละส่วนมีกี่วันจากนั้นก็คูณกันคิดแต่ละเรตออกมา แล้วบวกกันตอนท้าย
เวลาเก็บก็เก็บปกติก็ได้ หรือจะแยกเป็น 2 ช่วงก็ได้  แนะนำให้ใช้ mktime ด้วย

จริงแล้วปัญหาของผม  โปรแกรมมันวนซ้ำแบบที่คุณเข้าใจนั้นแหละครับ
แต่ในกรณีที่ ห้องพักห้องเดียวคำนวนออกมาถูกต้องครับ
แต่ถ้าส่งข้อมูล 2 ห้องจะคำนวนผิด

หลักการทำงานของโปรแกรม ที่ทำอาจจะเขียนอยากไปหน่อยแต่ให้ความสดวกกับผู้ใช้งานงาน
 1. เลือกวันที่ทีต้องการเข้าพัก 
โปรแกรมก็จะเลือกห้องที่ว่างมาให้เลยโดยแยกตาม  Room Type
2. หลักจากกรอกเข้ามูลเรียบร้อยแล้ว โปรแกรมจะบันทึกข้อมูลห้องที่เลือก  (สามารถเลือกได้มากว่า 1 ห้อง)
ในการบันทึกข้อมูล โปรแกรมจะทำการบันทึกข้อมูลการจองห้องพัก โดยคำนวน ราคาห้องพัก จาก ตารางราคาขายที่กำหนดไว้
ซึ่งต้อนนี้โปรแกรมก็คำนวนได้ปกติ แต่ปัญหาตอนที่มา 2 ห้องนี้แหละครับ


 ปล. โปรแกรมนี้พัฒนาให้กับโครงการหลวงไม่ได้เพื่อขายหรือเพื่อประโยชน์ส่วนตัว ได้ทั้งสิน 
ผมไม่เก่งผมเพราะผมไม่ใช้โปรแกรมเมอร์ และไม่ได้เรียน วิทยศวะคอมด้วย แค่อยากใช้ความรู้อันน้อยนิดที่สะสมมา
ตอบแทนพระคุณแผ่นดินไทยแค่นั้นเองครับ  บ้างครั้งอาจจะอธิบายคนอ่านอจาจะไม่เข้าใจต้องขออภัยด้วยครับผมเรียนมาน้อยครับ
http://royalproject.siamedu.net    
User= demo Password  = demo
ทดลองดูได้ครับ ถ้าหากไม่เข้าใจ 

ขอบคุณทุกท่านที่ช่วยตอบ เป็นหนทางให้ผมได้ทำงานได้เร็วขึ้น
« แก้ไขครั้งสุดท้าย: 24 สิงหาคม 2011, 15:47:17 โดย deknakhon » บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
krusnai
Newbie
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 66



ดูรายละเอียด
« ตอบ #8 เมื่อ: 24 สิงหาคม 2011, 17:45:30 »

ผมลองเข้าไป test แล้ว  คือ ลองจองแบบ บุคคลดู มันบังคับจองห้อง เดียวเลยไม่รู้ว่า ต้องไปทำยังไงถึงจะเลือก 2 ห้องได้จะได้เห็นอาการ
ถ้ายังไง จะตามเข้ามาดูเรืื่่อยๆๆนะครับ ผมเคยทำระบบโรงแรมน่าจะพอถูไถ ช่วยๆกัน ^^ สู้ๆครับ
บันทึกการเข้า
deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 25 สิงหาคม 2011, 10:09:50 »

ผมลองเข้าไป test แล้ว  คือ ลองจองแบบ บุคคลดู มันบังคับจองห้อง เดียวเลยไม่รู้ว่า ต้องไปทำยังไงถึงจะเลือก 2 ห้องได้จะได้เห็นอาการ
ถ้ายังไง จะตามเข้ามาดูเรืื่่อยๆๆนะครับ ผมเคยทำระบบโรงแรมน่าจะพอถูไถ ช่วยๆกัน ^^ สู้ๆครับ

ต้องจองแบบ
 1.จองห้องพัก (บริษัท)   ครับ จะให้จองมากกว่า 1 ห้องครับ
บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 25 สิงหาคม 2011, 21:34:38 »

ผมลองเข้าไป test แล้ว  คือ ลองจองแบบ บุคคลดู มันบังคับจองห้อง เดียวเลยไม่รู้ว่า ต้องไปทำยังไงถึงจะเลือก 2 ห้องได้จะได้เห็นอาการ
ถ้ายังไง จะตามเข้ามาดูเรืื่่อยๆๆนะครับ ผมเคยทำระบบโรงแรมน่าจะพอถูไถ ช่วยๆกัน ^^ สู้ๆครับ


ผลลัพธ์  ของการคำนวนราคาจากการจองห้องพักเดียวที่ คาบเกียวกัน

โค๊ด:
Night For Season One SELECT DATEDIFF('2011-09-30','2011-09-30')+1 AS snight 
Night For Season Two SELECT ADDDATE('2011-09-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 4500.00
Low Season
Total Rate 4,500.00
########################################################
Night For Season One SELECT DATEDIFF('2011-10-02','2011-10-01')+0 AS snight
Night For Season Two SELECT ADDDATE('2012-04-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 6500.00
Hight Season
Total Rate 11,000.00
########################################################


ผลลัพธ์  การจอง 2 ห้อง

โค๊ด:
Night For Season One SELECT DATEDIFF('2011-09-30','2011-09-30')+1 AS snight 
Night For Season Two SELECT ADDDATE('2011-09-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 4500.00
Low Season
Total Rate 4,500.00
########################################################
Night For Season One SELECT DATEDIFF('2011-10-02','2011-10-01')+0 AS snight
Night For Season Two SELECT ADDDATE('2012-04-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 6500.00
Hight Season
Total Rate 11,000.00
########################################################
Night For Season One SELECT DATEDIFF('2011-09-30','2011-09-30')+1 AS snight
Night For Season Two SELECT ADDDATE('2011-09-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 1000.00
Low Season
Total Rate 12,000.00
########################################################
Night For Season One SELECT DATEDIFF('2011-10-02','2011-10-01')+0 AS snight
Night For Season Two SELECT ADDDATE('2012-04-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 1700.00
Hight Season
Total Rate 13,700.00
########################################################

ปัญหาคือ Loop ผมมันไม่ยอมหยุดเป็น ห้องๆๆ เอา สองมารวมกันนะครับ 
ถ้ายิ่งหลายๆๆ ห้องยิ่งรวมไปเรียๆๆ ครับ
ขอบควารู้หน่อยครับ ถือว่าให้เป็นวิทยาทานนะครับ
บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 103
ออฟไลน์ ออฟไลน์

กระทู้: 1,308



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 26 สิงหาคม 2011, 12:40:37 »

ผมยังงกับสิ่งที่ต้องการ ตามความเข้าใจ

คุณคำนวณราคาห้องทั้งหมดได้แล้วเป็น total ไม่ว่าจองกี่ห้องก็ตาม
ที่ต้องการคือ ราคารวมของแต่ละห้องหรือเปล่า
ถ้าใช่ loop ตามรหัสห้อง สร้าง subtotal ให้เป็น array หรือ query ลองใช้พวก group by ดู
ควรแยกราคาที่ไม่เท่ากันให้เห็นด้วย ต่อให้ห้องเดิม แต่คนช่วง คนละราคา ควรแยก record ในบิลให้ลูกค้าทราบว่าวันที่นี้ถึงวันที่นี้ ราคาเท่าไหร่ แต่ละช่วงเท่าไหร่

สำคัญอยู่ที่การวางเบส งานโรงแรมเบสต้องวางเีนียน บางโรงแรมนอกจาก high season , low บางทีก็มีวันหยุดราคาไม่เท่ากัน
เสา อาทิตย์อีกราคาด้วย เสาร์ของ high ก็ไม่เท่ากับ low

ของโครงการหลวง ถ้าอยากให้ช่วยดู ลองส่ง ftp กับ phpmyadmin ให้ผม เดี๋ยวแก้ให้ฟรีเลย

บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 30 สิงหาคม 2011, 23:26:06 »

ผมยังงกับสิ่งที่ต้องการ ตามความเข้าใจ

คุณคำนวณราคาห้องทั้งหมดได้แล้วเป็น total ไม่ว่าจองกี่ห้องก็ตาม
ที่ต้องการคือ ราคารวมของแต่ละห้องหรือเปล่า
ถ้าใช่ loop ตามรหัสห้อง สร้าง subtotal ให้เป็น array หรือ query ลองใช้พวก group by ดู
ควรแยกราคาที่ไม่เท่ากันให้เห็นด้วย ต่อให้ห้องเดิม แต่คนช่วง คนละราคา ควรแยก record ในบิลให้ลูกค้าทราบว่าวันที่นี้ถึงวันที่นี้ ราคาเท่าไหร่ แต่ละช่วงเท่าไหร่

สำคัญอยู่ที่การวางเบส งานโรงแรมเบสต้องวางเีนียน บางโรงแรมนอกจาก high season , low บางทีก็มีวันหยุดราคาไม่เท่ากัน
เสา อาทิตย์อีกราคาด้วย เสาร์ของ high ก็ไม่เท่ากับ low

ของโครงการหลวง ถ้าอยากให้ช่วยดู ลองส่ง ftp กับ phpmyadmin ให้ผม เดี๋ยวแก้ให้ฟรีเลย




Night Season One SELECT DATEDIFF('2011-09-30','2011-09-29')+1 AS snight 2
2 Night Season Two SELECT ADDDATE('2011-09-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 4500.00
Low Season
Total Rate 9,000.00
########################################################
Night Season One SELECT DATEDIFF('2011-10-05','2011-10-01')+0 AS snight 4
4 Night Season Two SELECT ADDDATE('2012-04-30',INTERVAL 1 DAY) AS next_season
########################################################
Room Rate 6500.00
Hight Season
Total Rate 26,000.00

ผมสามารถคำนวนแยก  ราคาเป็นช่วง 2 ช่วงได้แล้ว  ผมควรเขียน Code เพิ่มยังไงครับ
ให้สามารถ นำผลลัพมาบวกกัน

โค๊ด:
$total = 0;
$totalextra_price = 0;
$start_date = $arrival_date;

for($i=0;$i<mysql_num_rows($result_rate);$i++){
$rs_rate = mysql_fetch_array($result_rate) ;
if($i+1==mysql_num_rows($result_rate)){
$end_date = $departure_date;
$add = 0;
}else{
$end_date = $rs_rate['end_season'];
$add = 1;
}

//หาจำนวนวันเข้าพัก
$Snight = 0;
$sql = "SELECT DATEDIFF('$end_date','$start_date')+$add AS snight ";
$rs = mysql_query($sql);
                $Snight = mysql_result($rs,0,'snight');  //  เก็บจำนวนวันเข้าพักลงตัวแปร


$sql = "SELECT ADDDATE('".$rs_rate['end_season']."',INTERVAL 1 DAY) AS next_season ";
$rs = mysql_query($sql);
$start_date = mysql_result($rs,0,'next_season');


                $TOTALRATE = $rs_rate['RMRATE']*$Snight;  //เก็บข้อมูลค่าห้องพักลงตัวแปร หลังจาก นำมา X กับ วันเข้าพักแล้ว  โดยแยกตามช่วงเข้าพักที่คาบเกี่ยว


อันนี้ไม่มีการขายแบบ  ราคาเสาร์อาทิตย์
ตัวอย่างตาราง  Rate Setup
โค๊ด:
CREATE TABLE `tb_ratesetups` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `season_code` varchar(5) NOT NULL,
  `RMTYPE` varchar(6) NOT NULL,
  `RMRATE` decimal(10,2) NOT NULL,
  `AdultABF` decimal(10,2) DEFAULT NULL,
  `ChildABF` decimal(10,0) DEFAULT NULL,
  `ExtraBed` decimal(10,2) DEFAULT NULL,
  `USERID` varchar(32) NOT NULL,
  `RATE_SETUPDATE` datetime NOT NULL,
  `RATEUPDATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `season_code` (`season_code`,`RMTYPE`,`RMRATE`,`ExtraBed`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

--
-- dump ตาราง `tb_ratesetups`
--

INSERT INTO `tb_ratesetups` VALUES (1, 'LOA', 'SRBA', 4500.00, 120.00, 60, 300.00, 'admin', '2011-08-20 13:13:51', '2011-08-20 13:15:57');
INSERT INTO `tb_ratesetups` VALUES (2, 'HIA', 'SRBA', 6500.00, 120.00, 60, 300.00, 'admin', '2011-08-20 13:13:51', '2011-08-20 13:16:01');
INSERT INTO `tb_ratesetups` VALUES (3, 'LOA', 'SRBR', 2500.00, 120.00, 60, 300.00, 'admin', '2011-08-20 13:14:34', '0000-00-00 00:00:00');
INSERT INTO `tb_ratesetups` VALUES (4, 'HIA', 'SRBR', 2500.00, 120.00, 60, 300.00, 'admin', '2011-08-20 13:14:34', '0000-00-00 00:00:00');
INSERT INTO `tb_ratesetups` VALUES (5, 'LOA', 'SRBB', 1000.00, 120.00, 60, 300.00, 'admin', '2011-08-20 13:15:22', '0000-00-00 00:00:00');
INSERT INTO `tb_ratesetups` VALUES (6, 'HIA', 'SRBB', 1700.00, 120.00, 60, 300.00, 'admin', '2011-08-20 13:15:22', '0000-00-00 00:00:00');
INSERT INTO `tb_ratesetups` VALUES (7, 'LOB', 'SRBB', 1000.00, 120.00, 60, 300.00, 'admin', '2011-08-21 10:28:01', '0000-00-00 00:00:00');
INSERT INTO `tb_ratesetups` VALUES (8, 'LOB', 'SRBR', 2500.00, 120.00, 60, 300.00, 'admin', '2011-08-21 10:30:19', '0000-00-00 00:00:00');
INSERT INTO `tb_ratesetups` VALUES (9, 'LOB', 'SRBA', 4500.00, 120.00, 60, 300.00, 'admin', '2011-08-21 10:31:17', '0000-00-00 00:00:00');

บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
Infinity
คนรักเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 139



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 31 สิงหาคม 2011, 12:44:45 »

เก็บ $TOTALRATE ลง array ได้ไหมครับ

แล้วค่อยเอาไปลูปบวกราคากันอีกที

http://www.krabiholiday.com/booking.php?hotel_id=318
บันทึกการเข้า

deknakhon
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 31 สิงหาคม 2011, 21:47:21 »

เก็บ $TOTALRATE ลง array ได้ไหมครับ

แล้วค่อยเอาไปลูปบวกราคากันอีกที

http://www.krabiholiday.com/booking.php?hotel_id=318
ต้อนนี้สามารถใช้งานได้แล้วนะครับ
ขอบคุณทุกท่านครับ
บันทึกการเข้า

รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์
หน้า: [1]   ขึ้นบน
พิมพ์