รบกวนช่วยดู Query Mysql+PHP การคำนวนค่าห้องพักหน่อยครับ

เริ่มโดย deknakhon, 21 สิงหาคม 2011, 22:57:14

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

deknakhon


# ค่าที่ส่งมาเป็นแบบ 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

 :o :o เห็นแล้วเครียด  ความพยายามผมคงไม่มากพอที่จะช่วยอ่ะครับ รอผู้กล้าคนต่อไปครับ

ball6847

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

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

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

Azinexii

[direct=http://www.maphuket.com]เที่ยวภูเก็ต ทัวร์ภูเก็ต[/direct]
[direct=http://www.phuketacar.com]เช่ารถภูเก็ต เช่ารถสนามบินภูเก็ต ราคาถูก Phuket airport car rental[/direct]
[direct=http://www.phuketnext.com]รับทำเว็บไซต์ภูเก็ต[/direct]
[direct=http://www.jobandaman.com]หางานภูเก็ต[/direct]

deknakhon

อ้างถึงจาก: ball6847 ใน 21 สิงหาคม 2011, 23:59:30
งงกะตัวหนังสือ ไม่รู้ไหนโค้ดไหนคำถาม

ครอบใส่ 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


kobkung

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

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

ก่อนอื่น แยกวันจองเริ่มถึงจบ ให้ได้สองส่วน แต่ละส่วนมีกี่วันจากนั้นก็คูณกันคิดแต่ละเรตออกมา แล้วบวกกันตอนท้าย
เวลาเก็บก็เก็บปกติก็ได้ หรือจะแยกเป็น 2 ช่วงก็ได้  แนะนำให้ใช้ mktime ด้วย
เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
[direct=http://www.smilephp.com]Smilephp.com[/direct] รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262
[direct=http://www.sellerorder.com ระบบหลังบ้าน จัดการ Order ขายของ  ช่วงนี้หาคนทดสอบฟรี ขอได้ตามเมลในเว็บ[/direct]
งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ

deknakhon

อ้างถึงจาก: kobkung ใน 24 สิงหาคม 2011, 13:24:06
จะบอกด้วยว่า โค้ดวนมากเลย

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

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

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

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


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

ขอบคุณทุกท่านที่ช่วยตอบ เป็นหนทางให้ผมได้ทำงานได้เร็วขึ้น
รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์

krusnai

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

deknakhon

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

ต้องจองแบบ
1.จองห้องพัก (บริษัท)   ครับ จะให้จองมากกว่า 1 ห้องครับ
รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์

deknakhon

อ้างถึงจาก: krusnai ใน 24 สิงหาคม 2011, 17:45:30
ผมลองเข้าไป 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

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

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

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

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

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
[direct=http://www.smilephp.com]Smilephp.com[/direct] รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262
[direct=http://www.sellerorder.com ระบบหลังบ้าน จัดการ Order ขายของ  ช่วงนี้หาคนทดสอบฟรี ขอได้ตามเมลในเว็บ[/direct]
งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ

deknakhon

อ้างถึงจาก: kobkung ใน 26 สิงหาคม 2011, 12:40:37
ผมยังงกับสิ่งที่ต้องการ ตามความเข้าใจ

คุณคำนวณราคาห้องทั้งหมดได้แล้วเป็น 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

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

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

http://www.krabiholiday.com/booking.php?hotel_id=318
[direct=http://www.thailandadviser.com]Thailand Hotels[/direct] [direct=http://www.krabiholiday.com]Krabi Hotels[/direct] [direct=http://www.chiangmaibooking.com]Chiang Mai Hotels[/direct]

deknakhon

อ้างถึงจาก: Infinity ใน 31 สิงหาคม 2011, 12:44:45
เก็บ $TOTALRATE ลง array ได้ไหมครับ

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

http://www.krabiholiday.com/booking.php?hotel_id=318
ต้อนนี้สามารถใช้งานได้แล้วนะครับ
ขอบคุณทุกท่านครับ
รับพัฒนาโปรแกรม PHP Mysql
รับออกแบบระบบโปรแกรม
รับวางระบบเครือข่ายคอมพิวเตอร์