ดึงข้อมูลจากฐานข้อมูล มาโชว์บนปฎิทินกิจกรรม ข้อมูลขึ้นโชว์ไม่ครบ
จะดึงข้อมูลจาก 2 ตารางมาโชว์ในปฎิทินกิจกรรมคะ ให้มันโชว์เป็นชื่อแพทย์ เวลา และความถนัดของแพทย์
แต่มันโชว์แค่ชื่อแพทย์อย่างเดียวคะ ส่วนที่เหลือหนูพยายามทำแล้วแต่ไม่ขึ้น รบกวนพี่ ๆ ช่วยหน่อยนะคะ
อันนี้โค้ดไฟล์ testcell1.php คะ
Code (PHP)
<!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>prac full calendar</title>
<link rel='stylesheet' type='text/css' href='fullcalendar/redmond/theme.css' />
<link rel='stylesheet' type='text/css' href='fullcalendar/fullcalendar.css' />
<script type='text/javascript' src='fullcalendar/jquery/jquery.js'></script>
<script type='text/javascript' src='fullcalendar/jquery/jquery-ui-custom.js'></script>
<script type="text/javascript" src="fullcalendar/fullcalendar.min.js"></script>
<script type="text/javascript">
$(function(){
$('#calendar').fullCalendar({
header: {
left: 'month,agendaWeek,agendaDay',
center: 'title',
right: 'prev,next today'
},
editable: true,
theme:true,
events: "testcell2.php?gData=1",
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
// put your options and callbacks here
});
});
</script>
<style type="text/css">
body{
padding:0px;
margin:0px;
font-size:12px;
font-family:Tahoma, Geneva, sans-serif;
}
#calendar{
width:750px;
margin:auto;
}
</style>
</head>
<body>
<br />
<br />
<div id='calendar'></div>
</body>
</html>
อันนี้โค้ด testcell2.php
Code (PHP)
<?php
header("Content-type:text/json; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
include ("connectb.php");
mysql_connect($hostname, $user, $password) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
mysql_query("SET NAMES UTF8");
if($_GET['gData']){
$event_array=array();
$i_event=0;
$sql="SELECT * FROM workdoc, doctor WHERE date(Day)>='".date("Y-m-d",$_GET['start'])."' AND doctor.IDDoctor = workdoc.IDDoctor OR Aptitude = doctor.IDDoctor ORDER by Work_id ";
$dbquery = mysql_db_query($dbname, $sql);
while($result = mysql_fetch_array($dbquery)){
$event_array[$i_event]['id']=$result['Work_id'];
$event_array[$i_event]['title']=$result['NameDoc'];
$event_array[$i_event]['start']=$result['Day'];
$event_array[$i_event]['time']=$result['Time'];
$event_array[$i_event]['A']=$result['Aptitude'];
$i_event++;
}
echo json_encode($event_array);
exit;
}
?>
รันออกมาแล้วจะได้แบบนี้
ดัดแปลงมาจากอันนี้คะTag : PHP, MySQL
Date :
2014-01-15 23:41:15
By :
niiwzii
View :
5512
Reply :
13
Code (PHP)
echo $sql;
รัน Query นี้ดูว่าตอนที่ก่อนทำการสร้าง JSON ตัว Query มาถูกต้องก่อนหรือไม่
Date :
2014-01-16 09:38:50
By :
mr.win
ถ้า echo ออกมาแล้วไม่ขึ้นอะไรเลยล่ะคะ?
แสดงว่าเขาเขียนคำสั่ง sql ผิดหรอ??
Date :
2014-01-16 09:44:12
By :
MameawKitty
คุณจะต้องเรียกไฟล์ testcell2.php โดยตรงเลยครับ โดยสมมุติค่าตรง $_GET['start'] ดู
Date :
2014-01-16 09:51:01
By :
mr.win
รัน Sql ดูแล้วไม่ขึ้นอะไรเลยคะ ลองเปลี่ยน $_GET['start'] ก็ยังขึ้นแค่ชื่อเหมือนเดิม
Date :
2014-01-16 13:31:58
By :
niiwzii
ไม่แน่ใจว่า ชื่อ Field ตอนที่ใส่ Array ระบุเป็น Case Sensitive เหมือนกับ ชื่อField ที่ได้จากการ Query หรือไม่ครับ ลองตรวจสอบดูครับ
Date :
2014-01-16 16:39:15
By :
badboygap
ในลูป while ลองแสดงข้อมูลด้วยคำสั่งนี้แล้วตัดมาให้ดูสักบรรทัดนะครับ
echo '<pre>' . print_r($result, true) . '</pre><hr>';
Date :
2014-01-16 17:02:40
By :
{Cyberman}
ลองแล้วก็ไม่ขึ้นอะไรเลยคะ จนปัญญาแล้วจริงๆ
Date :
2014-01-16 22:03:23
By :
niiwzii
อย่าเพิ่งจนปัญญาสิครับ
ถ้าไม่มี result ก็แสดงว่า query ไม่ผ่าน
Date :
2014-01-16 22:23:42
By :
{Cyberman}
คือถ้าลองเอา WHERE ออก ก็จะออกแค่ชื่อเหมือนเดิมคะ แต่ออกซ้ำ ๆ กัน หนูเลยไม่รู้จะแก้ตรงไหนแล้ว
Date :
2014-01-16 22:44:31
By :
niiwzii
คำสั่ง SQL ทำงานแปลกไปนะครับ ใช้ AND กับ OR พร้อมกัน โดยไม่มีวงเล็บ น่าจะทำให้ผลลัพธ์ออกมาเพี้ยน
Code (SQL)
$sql="SELECT * FROM workdoc, doctor WHERE date(Day)>='".date("Y-m-d",$_GET['start'])."' AND doctor.IDDoctor = workdoc.IDDoctor OR Aptitude = doctor.IDDoctor ORDER by Work_id ";
ถ้าใช้ AND เป็นหลัก และมีบางเงื่อนไขที่ต้องตรวจสอบมากกว่า 2 ฟิลด์ควรมีวงเล็บด้วย
Code (SQL)
A = 'xxx' AND ( B = 2 OR C = 2)
และข้อสังเกตอีกอย่างคือ มันเป็น INNER JOIN ทำให้บางทีอาจจะไม่เข้าเงื่อนไข
Date :
2014-01-18 09:12:20
By :
{Cyberman}
SQL ผิดครับ 2 Table ต้องใช้การ Join กันครับ ใช้แบบ Code (SQL)
SELECT * FROM workdoc, doctor
ไม่ได้ครับ
ต้องใช้ประมานนี้ครับ
Code (SQL)
select * from workdoc
inner join doctor on doctor.IDDoctor = workdoc.IDDoctor
or workdoc.Aptitude = doctor.IDDoctor
where date(Day)>='".date("Y-m-d",$_GET['start'])."' ;
https://www.thaicreate.com/asp/asp-sel-select-inner-join.html
Date :
2014-04-18 13:41:39
By :
nozejaija
ขอดูฐานข้อมูลหน่อยได้ไหมครับ
Date :
2014-10-12 17:51:54
By :
พรชัย
ตอบความคิดเห็นที่ : 5 เขียนโดย : badboygap เมื่อวันที่ 2014-01-16 16:39:15
รายละเอียดของการตอบ ::
ตาม คอมเม้นท์ 5 แนะนำครับ
คุณไม่สามารถใส่ตัวแปรอื่น ๆ ลงไปแทนได้ ต้องยัดตัวแปรต่อ ๆ กัน ใส่ไปที่ title ครับ
$event_array[$i_event]['title']=$rs['name'].",".$rs['locate'].",".$rs['driver'].",".$rs['typecar'];
หรือลองตามนี้ดู
<?php
header("Content-type:text/json; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
include ("connectb.php");
mysql_connect($hostname, $user, $password) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
mysql_query("SET NAMES UTF8");
if($_GET['gData']){
$event_array=array();
$i_event=0;
$sql="SELECT * FROM workdoc, doctor WHERE date(Day)>='".date("Y-m-d",$_GET['start'])."' AND doctor.IDDoctor = workdoc.IDDoctor OR Aptitude = doctor.IDDoctor ORDER by Work_id ";
$dbquery = mysql_db_query($dbname, $sql);
while($result = mysql_fetch_array($dbquery)){
$event_array[$i_event]['id']=$result['Work_id'];
$event_array[$i_event]['title']=$result['NameDoc']."-".$result['Aptitude'];//แก้เป็นแบบนี้ดูว่าออกไหม
$event_array[$i_event]['start']=$result['Day'];
$event_array[$i_event]['time']=$result['Time'];
//$event_array[$i_event]['A']=$result['Aptitude']; ยกเลิกก่อน
$i_event++;
}
echo json_encode($event_array);
exit;
}
?>
ตัว fullcalendar.css มันเปลี่ยน version ใหม่สามารถใส่ลูกเล่นได้เยอะ แต่ตัวไฟล์ที่ดึงข้อมูล มันคือตัวเดิม ผมก็เคยเจอปัญหาเดียวกันมาก่อน ลองทดสอบดูครับ
ประวัติการแก้ไข 2014-10-13 14:20:06 2014-10-13 14:20:51 2014-10-13 14:22:49
Date :
2014-10-13 14:17:22
By :
apisitp
Load balance : Server 02