 |
รบกวนสอบถามเรื่องการดึงข้อมูลมาแสดงอีกหน้าหน่อยครับ แบบการ join table |
|
 |
|
|
 |
 |
|
งงครับ จะjoinตารางแบบไหนหรอครับ ถ้าค่า idสองtableเท่ากัน แล้วถ้าไม่มีค่าในtableใด ก้อจะไม่แสดง
ใช้ Outer Join
SELECT [Table-Name1].Column1, [Table-Name2].Column1,... FROM [Table-Name1],[Table-Name2]
WHERE [Table-Name1].Column (+)= [Table-Name2].Column
https://www.thaicreate.com/tutorial/sql-outer-join.html
|
 |
 |
 |
 |
Date :
2011-08-30 15:40:52 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แต่มันจะโชว์ แค่ตัวที่เหมือนกันนะ ตรงwhereอะไส่เอา
|
 |
 |
 |
 |
Date :
2011-08-30 15:43:04 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือว่า table service จะเก็บแค่ number_repair และ detail
และ table test เก็บnumber_id name phone mail
เมื่อทำการกรอกnumber_repair และdetail ส่งข้อมูล จะถูกส่งไปอีกหน้า โดยอีกหน้าจะ
ดึงข้อมูลจาก service และ test มาแสดง โดย ในtable number_pair กับ number_id จะตรงกันครับ
แต่ที่มีปัญหาคือว่า มันไม่อ้างอิง id ทำให้การดึงมาแสดง มันจะดึงแต่ number_id ข้างบนเท่านั้น
|
 |
 |
 |
 |
Date :
2011-08-30 15:48:58 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ประมาณว่า เมื่อเรากรอกข้อมูล อยากให้ดึงข้อมูลล่าสุดที่กรอกมาแสดงอะครับ ตอนนี้มันจะแสดง number_id บนสุดเสมอ
process การทำงานจะเป็น
กรอกข้อมูล >>จัดเก็บ >> และก็ ดึงทั้งจาก test และ service ล่าสุดจากตัวที่กรอกมาแสดง
|
 |
 |
 |
 |
Date :
2011-08-30 15:53:21 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือคุณจะคลิก ลิงค์แล้วส่งค่าไปอีกอันไช่ไหมครับ
<a href="edit.php?id=<?=$objResult["id"];?>">คลิกเพื่อดูข้อมูล</a>
คุณส่งค่าไปกับลิงค์ แล้วไม่รับค่าหรอครับ
วิธีรับค่า
$_GET['id'];
|
 |
 |
 |
 |
Date :
2011-08-30 16:11:05 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ส่งค่าไปอีกหน้า และก็ ในอีกหน้า จะดึงค่าใน ฐานข้อมูลมาแสดง แต่ว่า ติดปัญหาที่มันแสดง แต่ค่าเดิมอะครับ เหมือนระบบไม่รู้ว่า id อะไรอันไหนประมาณเนี้ยอะครับ
|
 |
 |
 |
 |
Date :
2011-08-30 16:16:28 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งงจังอิอิมึน
|
 |
 |
 |
 |
Date :
2011-08-30 16:19:42 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือคุณกรอกข้อมูลมา insertก่อนแล้ว เอาข้อมูลที่กรอกมาโชว์ไช่ไหม
|
 |
 |
 |
 |
Date :
2011-08-30 16:21:03 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ครับ แต่ ดึงจาก table test มาด้วยนะครับ เพราะ table test คือประวัติส่วนตัว
|
 |
 |
 |
 |
Date :
2011-08-30 16:26:28 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เออผมคิดว่า<a href="edit.php?id=<?=$objResult["id"];?>">คลิกเพื่อดูข้อมูล</a>
มันผิดนะ
คุณต้องส่งค่า $_POST['number_repair'] $_POST['detail'] ค่าที่คุณกรอกไปงะ เพื่อเอาไปโชว์อีกไฟล์ หรือทำเงื่อนไข
<a href="edit.php?number_repair =$_POST['number_repair']& detail = $_POST['detail']">คลิกเพื่อดูข้อมูล</a>
|
 |
 |
 |
 |
Date :
2011-08-30 16:27:25 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$strSQL = "SELECT test.*,service.* FROM test,service
WHERE test.number = service.number_repair and service.number_repair =$_GET['number_repair']
and service.detail = $_GET['detail'] ";
//เพิ่มเงื่อนไขค่าที่กรอกมาด้วย
$objQuery = mysql_query($strSQL);
while($row = mysql_fetch_array($objQuery))
{
echo $row['number_repair']; ว่าไป
}
ไม่ได้ลองรันนะอิอิ มือไหม่เหมือนกัน
|
 |
 |
 |
 |
Date :
2011-08-30 16:40:19 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ครับ เดี้ยวลองดู ขอบคุณมากครับ
|
 |
 |
 |
 |
Date :
2011-08-30 16:41:44 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมลอง รัน
$strSQL = "SELECT * FROM service,test
WHERE service.number_repair = test.number ORDER BY id_repair DESC";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
ให้ดึงล่าสุดมา แสดง อันล่าสุดเสมอ แต่กลัวปัญหาถ้าคนกรอกข้อมูลพร้อมกัน หลายๆคน อาจจะทำให้ หน้าที่แสดงรายละเอียดและประวัติส่วนตัว สลับกันได้ เพราะอันนี้แสดงtableล่าสุด
|
 |
 |
 |
 |
Date :
2011-08-30 16:44:24 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$strSQL = "SELECT * FROM service,test
WHERE service.number_repair = test.number ORDER BY id_repair DESC";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
มันดึงค่าที่มี service.number_repair = test.number แล้วเรียงตาม id_repair
|
 |
 |
 |
 |
Date :
2011-08-30 16:56:32 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ช่ายครับ id_repair คือ PK แต่กลัวว่า user กรอกข้อมูล จังหวะที่พร้อมกัน และ จะมีปัญหาเพราะไม่ได้ อ้างอิง และ ดึง id มาแสดง
ผมมือใหม่มากๆ
พอทราบ SELECT * FROM service,test
WHERE service.number_repair = test.number วิธีใส่ให้อ้างอิงกับ pk มั้ยครับ
|
 |
 |
 |
 |
Date :
2011-08-30 17:02:31 |
By :
noppawut |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$strSQL = "SELECT test.*,service.* FROM test,service
WHERE test.number = service.number_repair and service.number_repair =$_GET['number_repair']
and service.detail = $_GET['detail'] ";
ต้องอ้างอิงค่าที่กรอกมาอะครับ
เพราะแต่ละคนกรอกไม่เหมือนกัน
|
 |
 |
 |
 |
Date :
2011-08-31 13:32:22 |
By :
sambrazil |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|