รบกวนสอบถามปัญหา php ให้แสดงชื่อผู้ที่เข้าพักในล็อคต่างๆ
พอดีต้องการให้ข้อมูลของผู้พักขึ้นมาแสดงในหน้านี้ค่ะ สีเขียวหมายถึงล็อคว่าง
โค้ดตอนนี้มีแค่นี้ค่ะ เพราะลองใส่โค้ดแล้วทำไม่ได้ รบกวนด้วยนะค่ะ
Code (PHP)
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>info</title>
</head>
<body>
<input type="submit" value="สั่งพิมพ์" onclick="window.print();">
<?php
require_once "includes/connect_db.php";
$sql="select * from y_lock ";
$dbquery=mysql_query($sql)or die (mysql_error());
$num_rows=mysql_num_rows($dbquery);
if($num_rows>0){
?>
<center>
<br>
<label><h4>รายงานล็อคนอน ประจำวันที่</label>
<?php
function DateTime()
{
$ThDay = array ( "อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์" );
$ThMonth = array ( "01", "02", "03", "04","05", "06", "07", "08","09", "10", "11", "12" );//เดือน
$a = date( "w" ); // ค่าวันในสัปดาห์ (0-6)
$b = date( "n" )-1; // ค่าเดือน (1-12)
$c = date( "j" ); // ค่าวันที่(1-31)
$d = date( "Y" )+543; // ค่า ค.ศ.บวก 543 ทำให้เป็น ค.ศ.
return "$c-$ThMonth[$b]-$d";
}
echo DateTime(); // พิมพ์วันที่ ?></h4>
</center>
<table width="1024" border="1" cellpadding="0" cellspacing="0" align="center">
<tr height="40">
<td rowspan="2" bgcolor="#999999"><center>ชื่อล็อค</center></td>
<td rowspan="2" bgcolor="#999999"><center>สถานะ</center></td>
<td colspan="6" bgcolor="#0099FF"><center>ผู้ป่วย</center></td>
<td colspan="6" bgcolor="#0099FF"><center>ญาติ</center></td>
</tr>
<TR height="40">
<td bgcolor="#999999"><center>HN ผู้ป่วย</center></td>
<td bgcolor="#999999"><center>ชื่อ - สกุล</center></td>
<td bgcolor="#999999"><center>วันที่เข้าพัก</center></td>
<td bgcolor="#999999"><center>วันที่กลับ</center></td>
<td bgcolor="#999999"><center>เงินมัดจำ</center></td>
<td bgcolor="#999999"><center>ค่าที่พัก</center></td>
<td bgcolor="#999999"><center>เลขประจำตัว ปชช.</center></td>
<td bgcolor="#999999"><center>ชื่อ - สกุล</center></td>
<td bgcolor="#999999"><center>วันที่เข้าพัก</center></td>
<td bgcolor="#999999"><center>วันที่กลับ</center></td>
<td bgcolor="#999999"><center>เงินมัดจำ</center></td>
<td bgcolor="#999999"><center>ค่าที่พัก</center></td>
</TR>
<tr>
<?php
while($result=mysql_fetch_assoc($dbquery)){
echo"<TR>";
echo"<TD><center>".$result['lock_name']."</center></TD>";
?>
<td><center>
<?php
if($result['lock_status']==1){
echo"<IMG SRC='img/bedred.png' width='40' height='40'>"; //ไม่ว่าง
}else{
echo"<A HREF='main_lock.php?lock_id=".$result['lock_name']."'>
<IMG SRC='img/bedgreen.png' width=40 height='40'></A>"; //ว่าง
}
?></center>
</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?php
}
//end While
echo "</Table>";
}else{
}
mysql_close(); // ปิดการเชื่อมต่อ
?>
</body>
</html>
ข้อมูลที่จะดึงมามีจาก 4 Table ดังนี้ค่ะ
- patient ประวัติของผู้ป่วย
- patient_lock ประวัตการเข้าพักของผู้ป่วย เชื่อมกับ patient.pat_hn=patient_lock.patient
- relative ประวัติญาติผู้ป่วย
- relative_lock ประวัติการเข้าพักของญาติ เชื่อมกับ relative.rel_num=relative_lock.rel_num
และมี table y_lock ที่เก็บชื่อล็อคนอน เชื่อมกับ patient_lock และ relative_lock ด้วย lock_nameTag : PHP, MySQL
Date :
2014-12-02 16:05:00
By :
meimeii
View :
857
Reply :
8
ข้อมูลที่ต้องการแสดงไม่ได้อยู่ใน table y_lock ใช่หรือเปล่าครับ
ถ้าใช่ลองใช้ left join เชื่อม table 2 table เข้าด้วยกันครับ
Date :
2014-12-02 17:34:06
By :
zinlucifer
รบกวนเขียน left ให้ดูหน่อยค่ะ พอดีว่าลองเขียนแล้ว มันไม่ได้อะค่ะ
Date :
2014-12-03 11:14:14
By :
meimeii
เอา เทเบิลมาสิครับ พร้อม relatonship ด้วยนะครับ
Date :
2014-12-03 13:09:48
By :
Dragons_first
Date :
2014-12-03 16:11:38
By :
meimeii
relationship น่าจะออกแบบให้มันสัมพันธ์กันง่ายๆกว่านี้หน่อยนะครับ เผื่อกรณี syntax ไม่ครบ
เบื้องต้นลองวางใน phpmyadmin ดูก่อนครับว่ามีอะไรแสดงออกมาบ้าง
Code (SQL)
SELECT * FROM patient INNER JOIN patient_lock ON patient.pat_hn=patient_lock.pat_hn
Date :
2014-12-03 16:46:11
By :
Dragons_first
พอดีว่าเพิ่งหัดเขียนค่ะ เลยงงๆ ยังไม่ค่อยเข้าใจโค๊ด แต่ก็ขอบคุณมากนะค่ะ ที่ช่วยสอน
Date :
2014-12-03 21:57:22
By :
meimeii
ลองทำแล้วค่ะ แต่ไม่ได้
Date :
2014-12-03 22:15:00
By :
meimeii
Code (SQL)
select * from y_lock y
left join (
select * from patient_lock where current_timestamp between pat_checkin and pat_checkout
) pl on pl.lock_name=y.lock_name
left join patient p on p.pt_hn = pl.pat_hn
relative อ่านไม่ค่อยออกครับ ตามประสาตาคนแก่
ทำตัวอยางได้แค่ y_lock , patient, patient_lock
จะแสดง รายการตาม y_lock ที่มีคนเข้าพัก
กำหนดจาก วันที่ ปัจจุบัน อยู่ ระหว่าง patient_lock.pat_checkin และ pat_checkout
สำหรับ ที่ไม่มีคนพัก จะเป็นค่า null
ปล. ถ้าได้แบบนี้จะดีเลยครับ เอาไปลองทดสอบได้ด้วย
Code (SQL)
CREATE TABLE IF NOT EXISTS `ทดสอบภาษาไทย` (
`ไอดี` int(11) NOT NULL,
`เลเวล` int(11) NOT NULL,
`เวลา` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Dumping data for table `ทดสอบภาษาไทย`
--
INSERT INTO `ทดสอบภาษาไทย` (`ไอดี`, `เลเวล`, `เวลา`) VALUES
(1, 1, '2014-10-15'),
(2, 2, '2014-10-14');
ประวัติการแก้ไข 2014-12-04 07:34:37
Date :
2014-12-04 07:30:45
By :
Chaidhanan
Load balance : Server 02