 |
ขอช่วยหน่อยค่ะ ต้องการโค้ดแสดงการจอง จากการค้นหาวันที่ ให้ออกมาในรูปแบบตาราง ให้แสดงว่างและไม่ว่างค่ะ |
|
 |
|
|
 |
 |
|

<?php
include 'connect.php';
$arrTime = array('09:00-10:30','10:30-12:00','12:00-13:30','13:30-15:00','15:00-16:30',
'16:30-18:00','18:00-19:30','19:30-21:00','21:00-22:30');
$arrTable = array('A01','A02','A03','A04','A05','B01','B02','B03','B04','B05');
$strTable = '<table class="table table-striped table table-bordered table-hover table-success" border="1"
width="800" align="center"><tr><td>โต๊ะ/เวลา</td>';
foreach($arrTime as $time){//สร้างหัวตาราง
$strTable.='<td>'.$time.'</td>';
}
$strTable.='</tr>';
foreach($arrTable as $tableNum){
$strTable.='<tr><td>'.$tableNum.'</td>';
$sql = "SELECT * FROM tb_booking WHERE table_name ={$tableNum} AND date='{$_POST['date']}' ORDER BY ttime ASC";
$rs = mysqli_query($conn,$sql);
$run = 0;
foreach($arrTime as $time){
if($run && $time == mysql_result($rs,$run,'ttime')){//ถ้ามีการจอง
$strTable.='<td>จองแล้ว</td>';
$run++;
}else{
$strTable.='<td>ว่าง</td>';
}
}//End Foreach
$strTable.='</tr>';
}
echo $strTable, '</table>';
?>
อันนี้เป็นโค้ดที่ทำไว้ค่ะ ลองทำตามที่เค้าสอน ใส่แบบนี้ใน if(mysql_num_rows($rs)>$run && $time == mysql_result($rs,$run,'ttime')) แต่ว่ามันerrorค่ะ
Tag : PHP, MySQL, HTML5, XAMPP
|
|
 |
 |
 |
 |
Date :
2021-03-23 21:21:26 |
By :
kamonporn |
View :
857 |
Reply :
17 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดึงข้อมูลมาจากตารางจองค่ะ ถ้าทำได้ ในตารางตรงวันที่มีข้อมูลจอง ต้องขึ้นว่า "จองแล้ว" ค่ะ ขอช่วยหน่อยนะคะ
|
ประวัติการแก้ไข 2021-03-23 21:28:02
 |
 |
 |
 |
Date :
2021-03-23 21:24:21 |
By :
kamonporn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตามโค้ดที่ส่งมาให้ดู จากที่ดูเบื้องต้น มีการใช้คำสั่งทั้ง mysqli_???() และ mysql_???() เพราะฉนั้นลองปรับให้ตรงกันก่อน เลือกใช้สักรูปแบบ ลองดูว่าหลังจากแก้ไขแล้วยัง error ไหม?
Code
<?php
include 'connect.php';
$arrTime = array('09:00-10:30','10:30-12:00','12:00-13:30','13:30-15:00','15:00-16:30',
'16:30-18:00','18:00-19:30','19:30-21:00','21:00-22:30');
$arrTable = array('A01','A02','A03','A04','A05','B01','B02','B03','B04','B05');
$strTable = '<table class="table table-striped table table-bordered table-hover table-success" border="1"
width="800" align="center"><tr><td>โต๊ะ/เวลา</td>';
foreach($arrTime as $time){//สร้างหัวตาราง
$strTable.='<td>'.$time.'</td>';
}
$strTable.='</tr>';
foreach($arrTable as $tableNum){
$strTable.='<tr><td>'.$tableNum.'</td>';
$sql = "SELECT * FROM tb_booking WHERE table_name ={$tableNum} AND date='{$_POST['date']}' ORDER BY ttime ASC";
$rs = mysqli_query($conn,$sql);
$run = 0;
foreach($arrTime as $time){
if($run && $time == mysql_result($rs,$run,'ttime')){//ถ้ามีการจอง
$strTable.='<td>จองแล้ว</td>';
$run++;
}else{
$strTable.='<td>ว่าง</td>';
}
}//End Foreach
$strTable.='</tr>';
}
echo $strTable, '</table>';
?>
|
ประวัติการแก้ไข 2021-03-23 21:34:53
 |
 |
 |
 |
Date :
2021-03-23 21:32:24 |
By :
arm8957 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ยัง error อยู่ค่ะ
foreach($arrTable as $tableNum){
$strTable.='<tr><td>'.$tableNum.'</td>';
$sql = "SELECT * FROM tb_booking WHERE table_name ={$tableNum} AND date='{$_POST['date']}' ORDER BY ttime ASC";
$rs = mysqli_query($conn,$sql);
$run = 0;
foreach($arrTime as $time){
if(mysql_num_rows($rs)> $run && $time == mysql_result($rs,$run,'ttime')){//ถ้ามีการจอง
$strTable.='<td>จองแล้ว</td>';
$run++;
}else{
$strTable.='<td>ว่าง</td>';
}
}//End Foreach
$strTable.='</tr>';
}
echo $strTable, '</table>';
?>
มันขึ้น error แบบนี้ค่ะ
Fatal error
: Uncaught Error: Call to undefined function mysql_num_rows() in C:\xampp\htdocs\Project\test5.php:98 Stack trace: #0 {main} thrown in
C:\xampp\htdocs\Project\test5.php
on line
98
|
ประวัติการแก้ไข 2021-03-23 21:42:40
 |
 |
 |
 |
Date :
2021-03-23 21:42:13 |
By :
kamonporn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ตรงไหนครับ โค้ดข้างบนยังใช้ $rs = mysqli_query($conn,$sql);
แต่ด้านล้างใช้
if(mysql_num_rows($rs)> $run && $time == mysql_result($rs,$run,'ttime')){
เลือกเอาสักแบบ แนะนำให้ใช้แบบ mysqli_???();
|
 |
 |
 |
 |
Date :
2021-03-23 21:52:04 |
By :
arm8957 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้แล้วค่ะ
foreach($arrTable as $tableNum){
$strTable.='<tr><td>'.$tableNum.'</td>';
$sql = "SELECT * FROM tb_booking WHERE table_name ={$tableNum} AND date='{$_POST['date']}' ORDER BY ttime ASC";
$rs = mysqli_query($conn,$sql);
$run = 0;
foreach($arrTime as $time){
if(mysqli_num_rows($rs)> $run && $time == mysqli_result($rs,$run,'ttime')){//ถ้ามีการจอง
$strTable.='<td>จองแล้ว</td>';
$run++;
}else{
$strTable.='<td>ว่าง</td>';
}
}//End Foreach
$strTable.='</tr>';
}
echo $strTable, '</table>';
?>
ขึ้นerrorแบบนี้แทน
Warning
: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in
C:\xampp\htdocs\Project\test5.php
on line
98
|
 |
 |
 |
 |
Date :
2021-03-23 22:02:47 |
By :
kamonporn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อันนี้เป็นตัวอย่าง ใช้ sql สนการ คิวรี่
Code (SQL)
select dt.start, dt.number, coalesce(bk.table_number, '<font color="green">Empty</font>') as bk_date
from (
select tb.number, concat( tmp_d.d,' ',tmp_t.t ) as start from
(
select '2021-03-01' as d union
select '2021-03-02' union
select '2021-03-03' union
...
select '2021-03-30' union
select '2021-03-31'
) as tmp_d
join
(
select '09:00' t union
select '10:30' union
select '12:00' union
...
select '21:00'
) as tmp_t
join table_num as tb
) as dt
left join tb_booking as bk
on bk.booking_datetime = dt.start and bk.table_number = dt.number
order by ......
|
ประวัติการแก้ไข 2021-03-23 22:11:17
 |
 |
 |
 |
Date :
2021-03-23 22:07:41 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หึ่มมมม....ลองค้นหาวิธีแก้จาก error ที่ระบบแสดงให้เห็นก่อนครับ
หรืออ่านคู่มือรูปแบบการใช้งาน --> PHP MySQL Database (mysqli)
|
 |
 |
 |
 |
Date :
2021-03-23 22:11:12 |
By :
arm8957 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้ตรวจสอบคำสั่ง
$rs = $conn->query('statement') or die( $conn->error);
แล้วขึ้นแบบนี้
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'statement' at line 1
|
 |
 |
 |
 |
Date :
2021-03-23 23:01:53 |
By :
kamonporn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตก single quote
|
 |
 |
 |
 |
Date :
2021-03-24 08:54:12 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$sql = "SELECT * FROM tb_booking WHERE table_name ='{$tableNum}' AND date='{$_POST['date']}' ORDER BY ttime ASC";
ต้องใส่ ' ครอบไว้ เพราะฟิลด์เป็นข้อความ ไม่ใช่ตัวเลข
|
 |
 |
 |
 |
Date :
2021-03-24 10:38:05 |
By :
{Cyberman} |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คิวรี่ถูกแล้ว แต่ยังไม่มีข้อมูลที่ จอง
statement ที่เขียน มันแค่หา โต๊ะที่จอง ไม่ได้แสดง โต๊ะที่ยังไม่จอง
กลับไปวิเคราะห์ คห 6 ให้รู้ว่าโค๊ดทำงานยังไง เพื่ออะไร แล้วประยุกต์ใช้กับ field ที่สร้างไว้
มีตัวอย่างแล้วก็หัดวิเคราะห์ จะได้เข้าใจ ถ้าจะเขียนให้ตรงเป๊ะๆ ก็ต้องจ้างครับ
|
 |
 |
 |
 |
Date :
2021-03-24 13:18:46 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่คห 6 ได้วิเคราะห์หรือยังครับ ติดขัดตรงไหน
|
 |
 |
 |
 |
Date :
2021-04-04 15:18:43 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|