ดึงข้อมูลจาก สองตาราง คือผมจะทำตารางออกบิล ให้กับลูกค้า โดยมีตารางที่1คือ ข้อมูลการจองห้องพัก
$sql="SELECT * FROM checking_info AS A INNER JOIN booking_info AS B ON(A.booking_id=B.booking_id) WHERE ..........";
ประมาณนี้นะครับ
Date :
2009-12-07 17:58:10
By :
yomaster
ครับ จะลองดูครับ ถ้าไม่ได้จะรบกวนถามอีก ขอบคุณครับ
Date :
2009-12-07 18:17:29
By :
3cha
ลืมบอกไปว่า AS A และ AS B
คือ ทำให้ชื่อ ตาราง มันสั้น ลง จะได้พิมพ์เร็วๆ ครับ ^-^
Date :
2009-12-07 18:21:42
By :
yomaster
ถามต่อนะครับ ไม่ทราบว่าจะดึงข้อมูลออกมายังไง
รวมตารางได้แล้วครับ คือแบบนี้
$result = mysql_query("SELECT * FROM checking_info AS A INNER JOIN room_booking AS B ON (A.booking_id = B.booking_id) where A.booking_id='00041'");
แต่ทีนี้พอจะดึงข้อมูลออกมา มัน error ตรงนี้ครับ
while ($row=mysql_fetch_array($result))
{
...
}
Date :
2009-12-08 08:01:37
By :
3cha
มัน error ว่ายังไงครับ
ขอแนะนำอีกอย่างนะผมว่าการย่อชื่อ table ด้วย AS มันทำให้สั้นลงก็จริงอยู่แต่ถ้าเกิดคุณมีการเชื่อมตารางมากกว่า 2 ตารางอาจเป็น 3 หรือ 4 หรือมากกว่ากกว่านั้นผมว่าให้ใช้ชื่อเต็มๆเลยจะได้ไม่สับสน อันนี้ความเห็นส่วนตัวนะเพราะเคยเจอมาแล้ว อิๆ
Date :
2009-12-08 08:30:48
By :
naskw
$result = mysql_query("SELECT * FROM checking_info AS A INNER JOIN room_booking AS B ON (A.booking_id = B.booking_id) where booking_id='00042'");
while ($row=mysql_fetch_array($result)) // บรรทัดที่ 89
{
error นี้ครับ
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/HAM/get_bill.php on line 89
Date :
2009-12-08 08:45:42
By :
3cha
มันหา ข้อมูลใน $sql ไม่เจออ่ะ
ลองเปลี่ยนเป็น
$sql="SELECT * FROM checking_info AS A INNER JOIN room_booking AS B ON (A.booking_id = B.booking_id) where A.booking_id='$booking_id' ";
$result=mysql_db_query($dbname,$sql);
หรือไม่ก็ลอง echo $sql ออกมาดูครับ
Date :
2009-12-08 08:48:21
By :
yomaster
ทำได้แล้วครับ แต่ผมใช้วิธีเลือกมาจาก สองตารางแบบนี้ครับ
$booking_id=00123;
$result = mysql_query("SELECT * FROM checkin_info, room_booking WHERE checkin_info.booking_id=room_booking.booking_id AND checkin_info.booking_id=$booking_id ");
while ($row=mysql_fetch_array($result))
{ .....
checkin_info คือตารางที่1
room_booking คือตารางที่2
แล้วใช้ WHERE ... AND เป็นตัวกรองตัวเลือกอีกที
ส่วนคำสั่ง INNER JOIN ผมต้องไปหาว่าผิดตรงไหน
ยังไงก็ ขอบคุณสำหรับทุกคำตอบ
Date :
2009-12-08 10:47:00
By :
3cha
ลอง นี้นะครับได้เหมือนกัน
JOIN TABLE(PHP)
<?
//อย่าลืมแก้ด้วยตรง rootและmydatabase นะครับ ของใครของมันนะ
$connect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
//ข้างล่างเป็นการ join table[เอาตารางมาต่อกัน] ครับ ดึงไปใช้เลย
$sql = "SELECT booking_info.* , checkin_info.* FROM booking_info,checkin_info
WHERE booking_info.booking_id = booking_info.checkin_id";
$result=mysql_query($sql) or die ("Error Query [".$sql."]");
//จากนั้นก็ สร้างตาราง html เพื่อเป็นหัวข้อของตาราง ทั้ง 2 ตาราง แบบเอาตารางมาต่อกันธรรมา https://www.thaicreate.com/tutorial/sql-join.html <--ดูตารางตัวอย่างก็ได้ครับ หรือ นี้ละครับ การjointable
while($objResult = mysql_fetch_array($result))
{
?>
<tr>
//table booking_info
<td><?=$objResult["booking_id"];?></td>
<td><?=$objResult["quest_name"];?></td>
<td><?=$objResult["quest_lastname"];?></td>
.....//จนหมดตาราง booking_info แล้วต่อด้วยตาราง checkin_info
//table checkin_info [ไม่ต้องเอา booking_id ของตาราง checkin_info มาแสดงอีกก็ได้]
<td><?=$objResult["colum2"];?></td>
<td><?=$objResult["colum3"];?></td>
<td><?=$objResult["colum4"];?></td>
<td align="center"><a href="หน้าออกบิลล์.php?booking_id=<?=$objResult["booking_id"];?>">link</a></td>
</tr>
<?
}
?>
ข้างบนเป็นการเรียก 2 ตารางครับ ต่อจากนั้นใช้ "หน้าออกบิลล์.php" สร้างฟอร์มหน้าออกบิล์ให้ลูกค้า แล้วใส่ค่า
$objResult["colum"] ลงไปในฟอร์มตารางที่สร้างโดยไม่ต้อง ใช้คำสั่ง while($objResult = mysql_fetch_array($query)) อีก และถ้าต้องการ ลิ้งไปหน้าถัดไปโดยใช้ booking_idเดิม เป็นตัวระบุตำแหน่งอีก ก็ใช้
"หน้าต่อไป.php?booking_id=<?=$objResult["booking_id"]" ลงไปใน <a href> หรือ action ของ <form>
ปล.ห้ามใช้ภาษาไทยในการตั้งชื่อ หน้า .php . html .ทุกประเภทที่เกี่ยวกับการเขียนโปรแกรม ดังนั้นให้เปลี่ยนด้วยนะครับ
ปล2. การดึงค่าของ mysql มาโชว์อยู่ที่คำสั่ง while($objResult = mysql_fetch_array($query)) แต่หน้าตาแบบฟอร์ม ก็เอา html มาช่วยครับ ถ้างง ไม่เข้าใจ ลองสร้างหน้าที่มีแต่ คำสั่ง connect sever กับ while($objResult = mysql_fetch_array($query))ดูครับ แล้วจะเข้าใจเลยครับ ผมก็หัดใหม่เหมือนกันครับ
ปล3.ถูกใจขอคะแนนด้วยครับ ไม่ได้โพสเพื่อคะแนนผมพอเข้าใจเลยมาตอบให้ แต่ได้ก็ดีใช่ปะละครับ
Date :
2009-12-08 11:01:03
By :
taiton
ลอง นี้นะครับได้เหมือนกัน
JOIN TABLE(PHP)
<?
//อย่าลืมแก้ด้วยตรง rootและmydatabase นะครับ ของใครของมันนะ
$connect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
//ข้างล่างเป็นการ join table[เอาตารางมาต่อกัน] ครับ ดึงไปใช้เลย
$sql = "SELECT booking_info.* , checkin_info.* FROM booking_info,checkin_info
WHERE booking_info.booking_id = booking_info.checkin_id";
$result=mysql_query($sql) or die ("Error Query [".$sql."]");
//จากนั้นก็ สร้างตาราง html เพื่อเป็นหัวข้อของตาราง ทั้ง 2 ตาราง แบบเอาตารางมาต่อกันธรรมา <A href="https://www.thaicreate.com/tutorial/sql-join.html" target=blank>https://www.thaicreate.com/tutorial/sql-join.html</A><--ดูตารางตัวอย่างก็ได้ครับ และ นี้ละครับ การjointable
while($objResult = mysql_fetch_array($result))
{
?>
<tr>
//table booking_info
<td><?=$objResult["booking_id"];?></td>
<td><?=$objResult["quest_name"];?></td>
<td><?=$objResult["quest_lastname"];?></td>
.....//จนหมดตาราง booking_info แล้วต่อด้วยตาราง checkin_info
//table checkin_info [ไม่ต้องเอา booking_id ของตาราง checkin_info มาแสดงอีกก็ได้]
<td><?=$objResult["colum2"];?></td>
<td><?=$objResult["colum3"];?></td>
<td><?=$objResult["colum4"];?></td>
<td align="center"><a href="หน้าออกบิลล์.php?booking_id=<?=$objResult["booking_id"];?>">link</a></td>
</tr>
<?
}
?>
ข้างบนเป็นการเรียก 2 ตารางครับ ต่อจากนั้นใช้ "หน้าออกบิลล์.php" สร้างฟอร์มหน้าออกบิล์ให้ลูกค้า แล้วใส่ค่า
$objResult["colum"] ลงไปในฟอร์มตารางที่สร้างโดยไม่ต้อง ใช้คำสั่ง while($objResult = mysql_fetch_array($query)) อีก และถ้าต้องการ ลิ้งไปหน้าถัดไปโดยใช้ booking_idเดิม เป็นตัวระบุตำแหน่งอีก ก็ใช้
"หน้าต่อไป.php?booking_id=<?=$objResult["booking_id"]" ลงไปใน <a href> หรือ action ของ <form>
ปล.ห้ามใช้ภาษาไทยในการตั้งชื่อ หน้า .php . html .ทุกประเภทที่เกี่ยวกับการเขียนโปรแกรม ดังนั้นให้เปลี่ยนด้วยนะครับ
ปล2. การดึงค่าของ mysql มาโชว์อยู่ที่คำสั่ง while($objResult = mysql_fetch_array($query)) แต่หน้าตาแบบฟอร์ม ก็เอา html มาช่วยครับ ถ้างง ไม่เข้าใจ ลองสร้างหน้าที่มีแต่ คำสั่ง connect sever กับ while($objResult = mysql_fetch_array($query))ดูครับ แล้วจะเข้าใจเลยครับ ผมก็หัดใหม่เหมือนกันครับ
ปล3.ถูกใจขอคะแนนด้วยครับ ไม่ได้โพสเพื่อคะแนนผมพอเข้าใจเลยมาตอบให้ แต่ได้ก็ดีใช่ปะละครับ
Date :
2009-12-08 11:04:54
By :
taiton
ใช้ได้เปล่าครับ ผมก็หัดทำเหมือนกันครับ ถ้าได้ก็บอกด้วยนะครับ
มือใหม่เหมือนกันครับ
บอกในนี้ละครับ ผมชอบอ่านในนี้อยู่แล้ว เดี๋ยวเห้นเองอะ
Date :
2009-12-08 14:34:29
By :
taiton
ทำได้แล้วครับ ขอบคุณครับ กดบวกให้แล้วนะ..
Date :
2009-12-08 16:39:23
By :
3cha
Load balance : Server 02