Mon 27 Feb 2006 16:17:37
พอดีชื่อล็อกอินของ Member อยู่ใน Table ชื่อ member_account
ส่วน อีเมล์ของ สมาชิก อยู่ใน Table ชื่อ member_profile
ผมใช้การดึง ชื่อของ member มาโชว์ คือคำสั่ง
$sql = "SELECT * FROM member_account LIMIT 1;";
$result = mysql_query($sql);
echo "<br>สมาชิก : $mem[name]";
โดยโค้ดข้างบนจะโชว์ชื่อ member ก็ต่อเมื่อ ล็อคอินเข้ามาในระบบแล้วอ่ะครับ
แต่ติดปัญหาตรงที่ เวลาผมจะให้โชว์ อีเมล์ของสมาชิกคนที่ล็อคอินเข้ามามันไม่โชว์ชื่อสมาชิกคนนั้นนะซิครับ มันโชว์สมาชิกคนแรกอย่าเดียวเลย อังโค้ดนี้อ่ะครับ
$sql = "SELECT * FROM mem_profile LIMIT 1;";
$result = mysql_query($sql);
//echo "<br>E-mail : ";
while ($dbarr = mysql_fetch_array($result)) {
$result1 = $dbarr["email"] . "<br>";
echo "$result1";
}
มันเป็นโค้ดที่ให้โชว์สมาชิกทั้งหมดอ่ะครับ
คุณ Admin ช่วยชี้แนะทีครับว่า จะเขียนโค้ดยังไงให้มันเช็คได้ว่าเป็นสมาชิกคนนั้นล็อคอินเข้าระบบแล้วให้มันดึง อีเมล์มาจาก table ชื่อ member_profile ด้วยอ่ะครับ
รวมโค้ดกันก็ได้ครับ หรือแยกโค้ดมาก็ได้ครับ ขอแค่มันดึงมาก็พอครับ
ระบบการ Login นั้นมี 2 แบบครับคือ COOKIE และ SESSION ซึ่งเมื่อมีการ Login แล้วก็ทำการ Set COOKIE หรือ SESSION ในชื่อที่ตั้งไว้ในการตรวจสอบ จากนั้นถ้าต้องการรู้ว่า Login หรือยังนั้นก็ทำการเช็คจากตัวแปรดังกล่าวว่ามีการเซ็ทเป็นค่าตามที่เราตั้งไว้หรือไม่ครับ
Mon 27 Feb 2006 21:48:43
คือผมจะดึง ข้อมูล name ใน Table member_account พร้อมกับ ให้ดึง ข้อมูล email ใน Table member_profile ซึ่งเป็นข้อมูลของคนเดียวกัน มันจะอ้างอิงโดย ใน table member_account จะมีฟิลด์ no และใน table member_profile ก็จะมีฟิลด์ no เหมือนกันเพื่อใช้อ้างอิงในการดึงข้อมูล
ก็เลยจะถามว่า เวลามันดึงข้อมูลของ user คน ๆ นี้ ใน table member_account แล้วจะให้ไปดึง email ใน table member_profile ด้วย จะต้องเขียนโค้ดยังไงครับ
โค้ดเดิมที่ผมเขียน ดึงได้แค่สมาชิก แต่ไม่รู้ว่าจะเพิ่มเข้าไปยังไงให้ดึง email มาด้วยอะครับ
$sql = "SELECT * FROM member_account LIMIT 1;";
$result = mysql_query($sql);
echo "<br>สมาชิก : $mem[name]";
รบกวนช่วยด้วยนะครับ ขอโค้ดแบบเต็ม ๆ อ่ะ มึนหมดแล้ว
ขอบคุณล่วงหน้าครับ
Mon 27 Feb 2006 22:09:11
$result=mysql_query($strSQL);
ลองดูครับมั่วเอา
Mon 27 Feb 2006 22:44:01
อะจ๊าก เหอะ ๆ
จะลองดูครับ
Mon 27 Feb 2006 23:00:51
ไม่ได้อ่ะครับ
จะมีวิธีอื่นอีกไหมครับว่า ถ้าเป็นสมาชิกคนนี้แล้ว ให้ ไปดึงข้อมูลใน Table member_profile คือให้ดึง email มา แต่ชื่อสมาชิกคนนี้อยู่ใน Table member_account นะครับ
ต้องทำยังไงบ้างครับ
#member_account
- uid int(6) auto_increment primary_key
- username varchar(50)
- password varchar(50)
- email varchar(50)
#member_profile
- uid int(6)
- fname varchar(50)
- lname varchar(50)
- phone varchar(14)
- address varchar(100)
จากตัวอย่างผมบอกว่าความสัมพันธ์ของ 2 ตารางนี้คือ field uid ดังนั้นเวลาผมต้องการดึงข้อมูลผมก็จะใช้
SELECT acc.email, pro.fname, pro.lname FROM member_account acc INNER JOIN member_profile pro ON acc.uid=pro.uid WHERE acc.username='someone'
อธิบายครับ
ผมทำการเลือกนำข้อมูล email ที่อยู่ในตาราง member_account (ที่ทำการ CAST มาเป็น acc จึงใช้ acc.email) และ fname, lname จากตาราง member_profile (ที่ทำการ CAST มาเป็น pro จึงใช้ pro.fname และ pro.lname) โดยใช้ความสัมพันธ์ที่ตาราง member_account.uid==member_profile.uid โดยเลือกเฉพาะ member_account.username=='someone'
หรือถ้าทั้ง 2 ตารางนั้นไม่มีความสัมพันธ์กันเลยนั้น (ผมว่าไม่น่าจะมี) ก็คงต้องทำการใช้ query 2 ครั้งครับ เช่น นำข้อมูลชื่อก่อนแล้วจึงไปทำการ query นำเอาข้อมูล email ออกมาอีกทีครับ

















