ต้องการ join table 3 ตาราง ทำงัยดีคะ อยากรบกวนพี่ๆ ช่วยเขียนโค้ดตัวอย่างดูให้หน่อยค่ะ
3 กลุ่ม table เดียวไม่ได้เหรอคับ แต่เพิ่ม ฟิลด์ เพื่อบอกสถานะว่า
1 เป็นอาจารย์
2 เป็นนักศึกษา
3 ผู้ดูแลระบบ
ไม่ทราบว่านี่คือ ตาราง user เลยหรือเปล่าครับ
Date :
2010-01-30 13:37:02
By :
ความรู้เท่าหางอึ่ง
ถ้าตารางเดียวกันควรจะมี สถานะด้วยว่าเป็น อ. น.ร. หรือ admin อะไรประมาณนี้
Date :
2010-01-30 14:00:40
By :
tusscomsci
ตกลงออกแบบฐานข้อมูลมากี่เทเบิ้ลละเนี้ย ที่พวกคุณแนะนำไปมันก็น่าจะดีกว่า สาม เทเบิ้ลนะ แต่ถ้าเกิดเขาทำงานมาเยอะแล้วเหลือแค่ส่วนนี้ ให้เขาไปเปลี่ยนโครงสร้างคงไม่เหมาะ เดี๋ยวไม่ทัน ถ้าใช้ สาม เทเบิลก็ ใช้การ union กันเอา
Date :
2010-01-30 14:06:46
By :
เซ็งตัวเอง
เทเบิ้ลเดียวไม่ได้หรอกค่ะ (เพราะในแต่ละตารางก็จะมีรายะเอียดอื่นๆอีก และข้อมูลก็มีเยอะมาก)
แล้วจะให้มาเปลี่ยนเป็น เทเบิ้ลเดียวก็คงไม่ได้อย่างที่พี่ ค.ห. 3 บอกค่ะ (เพราะหนูต้องไปแก้โครงสร้าง ซึ่งมันก็เยอะมากเลยทีเดียว)
เอ่อแต่ที่ว่า union พอจะมีโค้ดตัวอย่างป่าวคะ หนูจะได้เอาไปประยุกต์
หน้าตา login
Date :
2010-01-30 14:21:44
By :
iyaness
แล้วคุณใช้อะไรละเป็นตัวบ่งบอกว่า อาจารย์ นักศึกษา ผู้ดูแลระบบ ในแต่ละตารางของคุณอ่ะคับ
Date :
2010-01-30 14:37:48
By :
ความรู้เท่าหางอึ่ง
select * from
(
select 1 as `type`, `username`, `password` from student
union
select 2 as `type`, `username`, `password` from teacher
union
select 3 as `type`, `username`, `password` from admin
) as tmp
where `username` = 'abc' and `password` = 'abc'
แค่นี้น่าจะได้แล้วว่ามี username password ที่กรอกไหม จากนั้น fetch data ออกมาจะได้ type
Date :
2010-01-30 16:09:10
By :
เซ็งตัวเอง
ใช้ radio box ค่ะ อาจารย์ นักศึกษา ผู้ดูแลระบบ ในแต่ละตาราง
Date :
2010-01-31 11:07:38
By :
iyaness
Code (PHP)
if($_POST["radio_name"] == 1){
$tbl = "admin";
}else if($_POST["radio_name"] == 1){
$tbl = "teacher";
}else{
$tbl = "student";
}
$sql = "select * from " . $tbl . " where `username` = '" . $_POST["username"] . "' and `password` = '" . $_POST["password"] . "'";
Date :
2010-01-31 15:06:57
By :
plakrim
คุณ : iyaness
ไม่ต้องการ radio ไม่ใช่หรอค่ะ พี่PlaKriM
Date :
2010-02-01 17:32:15
By :
b
JOIN ได้แว้วค่ะ แต่ LOGIN ได้เฉพาะนักศึกษา อยากทราบว่าหนูผิดตรงไหน
ขอรบกวนพวกพี่ๆช่วยด้วยนะค่ะ (ฮือๆ หนูผิดตรงไหน โปรเจคนี้ช่างยากจิง)
Code (PHP)
<?
//ถ้า มีการ login เข้ามาให้โชว์module cpanel
if (!empty($_SESSION['adminname'])){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=?module=cpanel\">"; // Goto read data
}
//ถ้า มีการใส่ user pwd และ กดปุ่ม submit มา
if (!empty($_POST['submit']) && ($_POST['name_login']!="") && ($_POST['pass_login']!="") ){
$strsql = "select * from ((p_tbl_users inner join tb_teach on p_tbl_users.teach_name = tb_teach.teach_name)
inner join tb_student on p_tbl_user.std_id = tb_student.std_id and thisform.p_tbl_user1.value = p_tbl_users.user_id);"
// $strsql = "select authority from p_tbl_users where user_id='".querysql($_POST['name_login'])."' and user_pwd='".querysql($_POST['pass_login'])."' ";//
$db_sql_post= new admin_control();//เริ่มการติดต่อฐานข้อมูล
$db_sql_post -> send_cmd($strsql); //ดึงข้อมูลมากจากตาราง
if ($db_sql_post->num_rows() > "0"){ //ถ้าจำนวนแถวมากกว่า 0 (มีข้อมูลในตาราง)
$rowUser = $db_sql_post->fetch_data(); //ดึงข้อมูลทั้งหมดมา
$authority = $rowUser['authority'];
$adminname = $_POST['name_login'];
// $isadmin = $rowUser['isadmin'];
$db_sql_post->close(); //การเชื่อมต่อ
session_register("authority"); //ลงทะเบียน session
session_register("adminname");
// session_register("isadmin");
// ถ้ามีการ ใส่ user pwd ให้แสดง module cpanel
echo "<meta http-equiv=\"refresh\" content=\"0; URL=?module=cpanel\">";
}else{ //ถ้า รหัสผ่านหรือ usernameไม่ถูกต้อง และ ใส่ user pwd ไม่ครบให้ แสดง Login ใหม่ และก็แจ้งเตือน
echo "<script>alert('ชื่อผู้ใช้ หรือ รหัสผ่าน ไม่ถูกต้อง');</script>";
echo "<meta http-equiv=\"refresh\" content=\"0; URL=?module=login\">";
}
}else{ // ถ้า session adminname ไม่มีค่า ให้แสดง login ใหม่
echo "<meta http-equiv=\"refresh\" content=\"0; URL=?module=login\">";
}
?>
</td></tr>
</table>
Date :
2010-02-01 23:38:34
By :
iyaness
$strsql = "select * from ((p_tbl_users inner join tb_teach on p_tbl_users.teach_name = tb_teach.teach_name)
inner join tb_student on p_tbl_user.std_id = tb_student.std_id and thisform.p_tbl_user1.value = p_tbl_users.user_id);"
สุดยอด query
ขอทำความเข้าใจก่อนครับ
มี 3 table
1 p_tbl_users
2 tb_teach
3 tb_student
user กับ password เก็บ อยู่ใน table ใหนบ้างครับ
จากการเดา user กับ password เก็บอยู่ใน table p_tbl_users table เดียว
Date :
2010-02-02 00:19:00
By :
ผ่านมา
เดาต่อ
$strsql = " select 'student' as user_type,authority from p_tbl_users inner join tb_student on p_tbl_user.std_id = tb_student.std_id where user_id='".querysql($_POST['name_login'])."' and user_pwd='".querysql($_POST['pass_login'])."'
union
select 'teach' as user_type,authority from p_tbl_users inner join tb_teach on p_tbl_users.teach_name = tb_teach.teach_name where user_id='".querysql($_POST['name_login'])."' and user_pwd='".querysql($_POST['pass_login'])."'";
Date :
2010-02-02 00:33:17
By :
ผ่านมา
ช่วงนี้เรื่องของอาจารย์กะนักศึกษาจะเยอะมากเลยแฮะ
Date :
2010-02-02 00:43:33
By :
mr.v
ต้องขอทำความเข้าใจก่อนนะคะ
มีตาราง 3 ตาราง
คือ
p_tbl_users
tb_teach
tb_student
ซึ่งตารางทั้งสามจะประกอบไปด้วย user และ password แบบของใครของมันค่ะ (ทั้งสามตารางสามารถใช้ user และ password ของตน ทำการ login เข้ามาได้)
ซึ่งเดิมทีใช้ radio box ในการล้อกอินด้วย ใส่ user และ password พร้อม check radio box โดยถ้าเป็นอาจารย์ก็ไปเช็คที่อาจารย์ นักศึกษาก็ให้ไปเช็คที่นักศึกษา ผู้ดูแลระบบก็จะให้ไปล็อกอินอีกทีหนึ่ง คือตอนทำกะจะแบ่งระบบงานออกเป็นส่วนๆ ค่ะ แต่อาจารย์ไม่เห็นด้วยที่จะให้แยก login คือ อยากให้ Join ตารางทั้งสาม เพื่อที่จะทำการล็อกอินที่เดียวกัน และตัดในส่วนของ radio box ออกค่ะ แต่ที่นี้ก็จะเกิดปัญหาขึ้นมาอีกว่า จำนวนฟิวส์ในแต่ละตารางไม่เท่ากันอีกค่ะ และในขนาดที่ tb_teach และ tb_student คือ นักศึกษาและอาจารย์ทุกคนสามารถเข้ามาใช้งานได้ทั้งหมด ไม่ว่าจะเป็นการเพิ่มลบแก้ไขข้อมูล แต่ p_tbl_user จะกำหนดสิทธิ์การเข้าถึงข้อมูลของเจ้าหน้าที่แต่ละคน ซึ่งตรงนี้เป็นปัญหามากค่ะ
มันอยากมากเลยค่ะ รบกวนพี่ๆช่วยหน่อยนะคะ
ขอบคุณค่ะ
Date :
2010-02-02 02:03:10
By :
iyaness
แล้วทั้งสามตารางมีอะไรเกี่ยวเนื่องกันไหม แล้วคุณจะเช็คว่าใครเป็นอาจารย์ นักศึกษา ผู้ใช้ จาก username passoword อย่างเดียวเลยใช่ป่ะครับ แล้วไม่มีฟิลอื่นบอกสถานะของแต่ละคนเลยเหรอ ถ้าอย่างนั้นคุณก้อต้อง union เอา เหมือนที่คุณ เซ้งตัวเอง แนะนำอ่ะครับ
Date :
2010-02-02 09:11:10
By :
ความรู้เท่าหางอึ่ง
Load balance : Server 02