 |
ช่วยอธิบาย Code ส่วนนี้หน่อยครับผมไม่ค่อยเข้าใจ อยากจะลองเอามาดัดแปลงกับงานตัวเองครับ |
|
 |
|
|
 |
 |
|
เปลี่ยน left outer join
เป็น inner join
ครับ
|
 |
 |
 |
 |
Date :
2017-09-21 17:03:23 |
By :
mee079 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เนื่องจากไม่รู้ว่าอะไรเป็นอะไร เพราะไม่มีอะไรหรืออะไรมาให้ดู มีแค่ความต้องการคล้ายๆ
เลยทำเป็นต้วอย่างคล้ายๆจะเดามาให้ดู 55555
Code (SQL)
select * from customer where staff_id = $staff_id
|
 |
 |
 |
 |
Date :
2017-09-21 18:26:34 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ง่ายๆ มันก็แค่ LEFT OUTER JOIN
2 Table เฉยๆ
Table 1. = meeting_list V
Table 2. = meeting_room R
และ where V.user = '".$_SESSION["member_id"]."'"; // $_SESSION เมื่อ Login เข้ามาเฉยๆ
และ mysql_fetch_array ไม่มีอะไรมาก
|
 |
 |
 |
 |
Date :
2017-09-22 08:25:52 |
By :
Hararock |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือผมจะดึงข้อมูลลูกค้าที่พนักงานคนนี้รับผิดชอบว่ามีใครบ้างครับบ้าง ซึ่งตอนนี้คือพนักงานทุกคนบันทึกลงในฟอร์มเดียวกัน คือเอาง่ายๆผมไม่อยากให้พนักงานคนอื่นเห็นข้อมูลลูกค้าที่ตัวเองไม่ได้รับผิดชอบครับ เวลาเปิดดูข้อมูล ต้องเขียนแบบไหนครับ
คือตอนนี้ผมมีฐานข้อมูลแบบนี้ครับพี่


data.sql (SQL)
CREATE TABLE `customer` (
`id` int(11) NOT NULL,
`user` varchar(20) NOT NULL,
`pass` varchar(20) NOT NULL,
`namecus` varchar(50) NOT NULL,
`address` varchar(200) NOT NULL,
`tel` int(10) NOT NULL,
`emai` varchar(50) NOT NULL,
`member_save` varchar(20) NOT NULL,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- dump ตาราง `customer`
--
INSERT INTO `customer` VALUES (1, 'cus1', '1234', 'ลูกค้า1', '11111', 1111111111, '[email protected]', 'มานะ', '2017-09-22 10:50:00');
INSERT INTO `customer` VALUES (2, 'cus2', '1234', 'ลูกค้า2', '222222', 962222222, '[email protected]', 'มานี', '2017-09-22 10:50:20');
INSERT INTO `customer` VALUES (3, 'cus3', '1234', 'ลูกค้า3', '333333', 333333333, '[email protected]', 'วันดี', '2017-08-25 10:46:16');
INSERT INTO `customer` VALUES (4, 'cus4', '1234', 'ลูกค้า4', '444444', 444444444, '[email protected]', 'วาที', '2017-08-25 10:56:30');
CREATE TABLE `merber` (
`id` int(3) NOT NULL,
`username` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
`name` varchar(20) NOT NULL,
`level` int(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- dump ตาราง `merber`
--
INSERT INTO `merber` VALUES (1, 'user1', '1234', 'มานะ', 1);
INSERT INTO `merber` VALUES (2, 'user2', '1234', 'มานี', 1);
INSERT INTO `merber` VALUES (3, 'user3', '1234', 'วาที', 1);
INSERT INTO `merber` VALUES (4, 'user4', '1234', 'วันดี', 1);
|
ประวัติการแก้ไข 2017-09-22 11:19:49
 |
 |
 |
 |
Date :
2017-09-22 11:16:32 |
By :
Lun2560 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
select * from customer where member_save='มานะ'
น่าจะเก็บ member_save เป็น id ของตาราง member จะเร็วกว่าเก็บเป็น varchar
|
 |
 |
 |
 |
Date :
2017-09-22 11:31:44 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ครับ ได้แล้วครับ แต่ตอนนี้เวลา user2,user3,user4 เข้ามายังโชว์เฉพาะของ 'มานะ' อยู่ครับ
|
 |
 |
 |
 |
Date :
2017-09-22 12:07:27 |
By :
Lun2560 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
5555 เปลี่ยนมานะเป็นชื่อที่ถูกต้อง หาวิธีเอาค่ามาจากการ login เองหรือจากการส่งค่า
|
 |
 |
 |
 |
Date :
2017-09-22 13:05:13 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอแนะนำนิดหนึ่ง
---------------------------
Table customer
ID = customer_id , ID_Customer , CustomerID แบบนี้จะดีกว่า
เพราะ ตั้งแต่ id id มันจะยาก และ เวลา Join และ มันสื่อความหมายไม่ได้ ว่าเป็นของ Table ไหน
--------------------------
Table merber
คุณก็ตั้งแบบเดีม id
-------------------------
มันก็ customer = id // merber = id
------------------------
ถ้ามีเป็น 10 กว่า Table มันจะมี Problems นิดๆเดะ
------------------------
จำนวน `id` int(3) ของ merber
จำนวน `id` int(11) ของ customer
และ PK merber คุณก็ไม่รู้ว่าเป็นตัวไหน ไปดู ชื่อใน DB มาใหม่ครับ แล้วค่อยว่ากัน
merber ก็ไม่ถูก
Member ถูก
|
 |
 |
 |
 |
Date :
2017-09-22 13:57:25 |
By :
Hararock |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือมันต้อง apply เอาหน่อนนะครับ คือผมไม่เห็นโค๊ดที่ใช้งาน ก็ทำได้แค่ตัวอย่าง
Code (PHP)
$uname=$_SESSION['username'];
$sql = "select * from customer where member_save='".$uname."'";
ส่วนตัวแปรที่ถูกต้อง ก็ต้องไปโมฯเอาเองนะครับ
|
 |
 |
 |
 |
Date :
2017-09-22 14:42:03 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รบกวนอีกครั้งครับพี่ ถ้าผมอยากจะให้เวลา admin ล็อคอินเข้ามาสามารถดูข้อมูลของหน้านี้ทั้งหมด จะเขียนเงื่อนไขยังไงครับ
|
 |
 |
 |
 |
Date :
2017-09-23 09:04:38 |
By :
Lun2560 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใส่ where กับ ไม่ใส่
Code (PHP)
$sql = "select ...........................";
$sql.= (isAdmin? "" : " where member_save='.....' ");
|
 |
 |
 |
 |
Date :
2017-09-23 09:11:24 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
isAdmin คุณต้อง apply เอาหน่อย เป็นแค่ตัวอย่าง คุณต้องทำให้เป็นตัวแปรก่อน
เช่น
Code (PHP)
define( 'isAdmin', $user_type=='Admin');
ถีงจะใช้ได้
$user_type มายังก็ต้องบอกว่า ไม่รู้ ต้องจัดการเอาเองนะครับ
เวลาผมทำตัวอย่าง ช่วยอ่านและทำความเข้าใจก่อน ที่จะใช้งานจริงนะครับ
ปล. ต่อ string ให้ถูก ไวยกรณ์ ของ sql statement ด้วยนะครับ
|
ประวัติการแก้ไข 2017-09-23 10:11:04
 |
 |
 |
 |
Date :
2017-09-23 10:07:24 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับพี่เดี๋ยวถ้าติดปัญหาจะมาถามอีกทีครับ   
|
 |
 |
 |
 |
Date :
2017-09-23 17:02:02 |
By :
Lun2560 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|