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

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

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

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

กระทู้: 139



ดูรายละเอียด เว็บไซต์
« เมื่อ: 21 พฤษภาคม 2012, 18:59:42 »

เป็นโปรแกรมจองห้องพักนะครับ อันนี้เอามาเฉพาะตารางที่เป็น season มีข้อมูลใน db ดังนี้



ถ้าดึงออกมาให้เห็นกันง่ายๆก็จะออกมาตามนี้




สมมุติว่าลูกค้าจองห้องพักมาวันที่

30 October ถึง 2 November

จะเห็นว่ามันคาบเกี่ยว season กัน ราคาก็ต้องคิดต่างไป

ทีนี้ผมอยากแยก season ให้ออกมาเป็นแบบนี้ครับ


2 Nights (Low)
1 Night (High)


จะเขียนยังไงดีครับ มีวิธี select ตั้งแต่ sql ให้ผลลัพธ์ออกมาแบบนี้เลยไหม

ถ้ามีตัวอย่างด้วยก็ขอบคุณมากเลยครับ
บันทึกการเข้า

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

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

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 21 พฤษภาคม 2012, 20:11:47 »

เป็นโปรแกรมจองห้องพักนะครับ อันนี้เอามาเฉพาะตารางที่เป็น season มีข้อมูลใน db ดังนี้



ถ้าดึงออกมาให้เห็นกันง่ายๆก็จะออกมาตามนี้




สมมุติว่าลูกค้าจองห้องพักมาวันที่

30 October ถึง 2 November

จะเห็นว่ามันคาบเกี่ยว season กัน ราคาก็ต้องคิดต่างไป

ทีนี้ผมอยากแยก season ให้ออกมาเป็นแบบนี้ครับ


2 Nights (Low)
1 Night (High)


จะเขียนยังไงดีครับ มีวิธี select ตั้งแต่ sql ให้ผลลัพธ์ออกมาแบบนี้เลยไหม

ถ้ามีตัวอย่างด้วยก็ขอบคุณมากเลยครับ


ฐานข้อมูบไม่คอยสัมพันธ์ กับระบบเท่าไรนะครับ
ทำงานที่ไหน ฐานข้อมูลคุนๆๆ นะครับ
เดียวผมเขียน Query ให้ครับ
บันทึกการเข้า

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

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

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 21 พฤษภาคม 2012, 20:41:58 »

โค๊ด:
<?
$hostDB = "localhost";
$userDB = "root";   // ใส่ user name
$passwdDB = "";   // ใส่ password
$dbname = "db_lab";   // ชื่อ database

@mysql_connect($hostDB,$userDB,$passwdDB);
@mysql_query("SET NAMES utf8");
mysql_select_db($dbname);

mysql_connect($hostDB,$userDB,$passwdDB) or die (mysql_error()." Cannot  Config Database Server");


echo "วันที่เข้าพัก".$arrival_date='2012-05-11';
echo "<br>";
echo "วันที่สิ้นสุด".$departure_date='2012-05-20';
echo "<br>";
$sql = "SELECT * FROM tb_seasons ";
$sql .= "WHERE tb_seasons.start_season<='$departure_date' ";
$sql .= "AND tb_seasons.end_season>='$arrival_date' ";
$sql .= "ORDER BY tb_seasons.start_season   ASC ";

$result_rate = mysql_query($sql) or die (mysql_error()."Err Can not to result 1") ;
$NRow = mysql_num_rows($result_rate);

$TOTALRATE = 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');
//echo "<br>";
$sql = "SELECT ADDDATE('".$rs_rate['end_season']."',INTERVAL 1 DAY) AS next_season ";
//echo $sql;
//echo "<br>";
$rs = mysql_query($sql);
$start_date = mysql_result($rs,0,'next_season');



//echo "########################################################";
//echo "<br>";
echo "Room Rate ". $rs_rate['RMRATE']."<br>";
echo   $rs_rate['season_name']." $Snight Night<br>";
$TOTALRATE += $rs_rate['RMRATE']*$Snight;
echo "Total Rate ".number_format($TOTALRATE,2);
echo "<br>";


}
?>
SQL
โค๊ด:
CREATE TABLE `tb_seasons` (
`season_id` INT(10) NULL DEFAULT NULL,
`season_name` VARCHAR(50) NULL DEFAULT NULL,
`start_season` DATETIME NOT NULL,
`end_season` DATETIME NOT NULL,
`RMRATE` DECIMAL(10,0) NOT NULL
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

INSERT INTO `tb_seasons` VALUES (1, 'A', '2012-05-01 20:32:31', '2012-05-15 20:32:34', 200);
INSERT INTO `tb_seasons` VALUES (2, 'B', '2012-05-16 20:33:16', '2012-05-30 20:33:26', 300);



หลังการคำนวณ
วันที่เข้าพัก2012-05-11
วันที่สิ้นสุด2012-05-20
Room Rate 200
A 5 Night
Total Rate 1,000.00
Room Rate 300
B 4 Night
Total Rate 2,200.00

ถ้ามีประโยชน์ขอ +1 ด้วยตอบแทน
เขียนให้สดๆๆเลยครับ
« แก้ไขครั้งสุดท้าย: 21 พฤษภาคม 2012, 21:02:10 โดย deknakhon » บันทึกการเข้า

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

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

กระทู้: 139



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 21 พฤษภาคม 2012, 21:51:50 »

+1 ให้ก่อนเลยครับ สำหรับน้ำใจ ขอบคุณมากครับ

ฐานข้อมูลผมแยก season , price , type room ไว้ต่างหากกันน่ะ

จริงๆ แล้วมันควรจะเป็นยังไงเหรอครับ Tongue
บันทึกการเข้า

kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,312



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 21 พฤษภาคม 2012, 23:03:47 »

ถูกแล้ว เพียงแต่ว่าเวลา query ต้อง loop ทีละวัน แยกราคาของแต่ละวันออกมาเลย ว่าแต่ละวันเท่าไหร่
เอามา sum และแสดงในบิลได้ด้วย เวลาแสดงบิลก็ loop ทุกวันเลย

ใน query ใช้ between datestart and dateexpire  โดย and roomtype เข้าไปด้วย table join เฉยๆ
บันทึกการเข้า

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

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

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

กระทู้: 166



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 22 พฤษภาคม 2012, 10:04:34 »

+1 ให้ก่อนเลยครับ สำหรับน้ำใจ ขอบคุณมากครับ

ฐานข้อมูลผมแยก season , price , type room ไว้ต่างหากกันน่ะ

จริงๆ แล้วมันควรจะเป็นยังไงเหรอครับ Tongue

ถ้ามีการถึง ผมใช้ตารางเก็บราคาอีกตารางนะครับ
เก็บ Season_id  | rmtype_code | rmrate
แล้วมา inner join กัน
บันทึกการเข้า

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

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

กระทู้: 1,872



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 22 พฤษภาคม 2012, 10:20:09 »

กำลังทำระบบเดียวกันเลยนะครับเนี้ย แต่ผมทำเป็น service ครับ ตอนนี้ก็กำลังทำตรงนี้อยู่ดีเลยครับ

สำหรับผม ผมใช้วิธีการ join สามตารางเข้าด้วยกันครับ คือ ตารางของ booking, roomtype และ season ครับ แล้วจับมายัดใส่ array แล้วคำนวนเอาครับ ผมจะแยกเป็นวันๆ เอาครับ โดย แต่ละการ booking จะมีตาราง bill ที่เอามาเก็บว่าการ book ครั้งนี้ ยอดเท่าไหร่ ตั้งแต่วันที่เท่าไหร่ถึงวันที่เท่าไหร่ และก็ไป join กับตาราง booking ที่เก็บแต่ละวันอีกทีครับ (booking จะเก็บว่า relate กับ bill ไหน)

จริงๆ ระบบผมทำมันซับซ้อนมากๆ ครับ ผมก็ติดขัดอยู่เรื่อยๆ ต้องใช้เวลาหน่อย แหะๆ

ยังไงถ้ามีปัญหายังไง pm มาหาผมได้ครับ เผื่อจะได้แชร์ความรู้กันครับ
บันทึกการเข้า
Infinity
คนรักเสียว
*

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

กระทู้: 139



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 24 พฤษภาคม 2012, 16:07:17 »

ขอบคุณ deknakhon , kobkung , UnzO มากเลยครับ ตอนนี้ทำได้แล้ว

ตอนนี้มีอีกปัญหาคือวิธีการทำ room available น่ะครับ

จะเก็บออกแบบตารางเก็บข้อมูลกันยังไงดี
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์