Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ขอความคิดเห็นในเรื่องออกแบบ database หน่อยครับ และอยากทราบแนวคิดครับ



 

ขอความคิดเห็นในเรื่องออกแบบ database หน่อยครับ และอยากทราบแนวคิดครับ

 



Topic : 110350



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์




รบกวนท่านผู้ชำนาญ เรื่องในการสิทธิการเข้าใช้งานของ หน้าต่างๆ ครับ ผมออกแบบมาเป็นในรูปแบบนี้ ผมจะทำโครงสร้าง db อย่างไรได้บ้างครับ หรือแนะนำวิธีอื่น ในการ เข้าถึง ในหน้านั้นๆ ตาม user pass ที่เรากำหนด

permission



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-07-31 17:22:39 By : yamcrocodile View : 1388 Reply : 17
 

 

No. 1



โพสกระทู้ ( 3,156 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


Quote:
create table permission(
id int unsigned not null auto_increment primary key,
user_id int unsigned not null , //อันนี้แล้วแต่จะใช้น่ะครับ อาจกำหนดเป็น char ,varchar ก็ได้
page_id tinyint unsigned not null, // ไอดีของหน้านั้นๆ
page_url varchar(200) null default null, // หรือจะเพิ่ม url ของหน้านั้นๆไปด้วยก็ได้ ถ้ามี url แล้ว page_id อาจไม่จำเป็นครับ
readable enum('yes','no') not null default 'no',
writable enum('yes','no') not null default 'no',
editable enum('yes','no') not null default 'no',
printable enum('yes','no') not null default 'no',
applydate timestamp not null default current_timestamp,
index(user_id),
index(page_id)
)engine=myisam default character set utf8 collate utf8_unicode_ci;


ลองดูครับตรงตามความต้องการ








ประวัติการแก้ไข
2014-07-31 18:07:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-31 17:38:42 By : sakuraei
 


 

No. 2



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : sakuraei เมื่อวันที่ 2014-07-31 17:38:42
รายละเอียดของการตอบ ::
ขอบคุณครับ ออกแบบ db แบบนี้ตรงกับความคิดผมในตอนแรก ปัญหาคือ ผมงง ว่าผมจะเขียน code ออกมารูปแบบยังไง ครับเอาพอคร่าวๆ ก็พอผม ตอนนี้ผมมึนคิดไม่ออก ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-31 21:21:41 By : yamcrocodile
 

 

No. 3



โพสกระทู้ ( 3,156 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


น่าจะประมาณนี้น่ะครับ
<form method='post'>
	<table>
	<tr>
		<td>Accessible</td>
		<td>Read</td>
		<td>Write</td>
		<td>Edit</td>
		<td>Print</td>
	</tr>
<?php
	$sql = "select * from accessiblity";
	$res = mysqli_query($link,$sql) or die(mysqli_error());
	while($data = mysqli_fetch_assoc($res)){
?>
	<tr>
		<td><?php echo $data["title"];?></td>
		<td><input type='checkbox' name='read[<?php echo $data["page_id"];?>]' value='yes' /></td>
		<td><input type='checkbox' name='write[<?php echo $data["page_id"];?>]' value='yes' /></td>
		<td><input type='checkbox' name='edit[<?php echo $data["page_id"];?>]' value='yes' /></td>
		<td><input type='checkbox' name='print[<?php echo $data["page_id"];?>]' value='yes' /></td>
	</tr>
<?php } ?>
	</table>
	<input type='hidden' name='user_id' value='<?php echo $_GET["UserID"]; ?>' />
	<input type='submit' name='submitForm' value='Save Change' />
  </form>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-31 22:55:49 By : sakuraei
 


 

No. 4



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : sakuraei เมื่อวันที่ 2014-07-31 22:55:49
รายละเอียดของการตอบ ::
ผมหมายถึง ตอน Insert เราจะ Insert ลง database อย่างไรครับ ถ้าทำในรูปแบบนี้ เราต้องมี ข้อมูล ใน table accessiblity ก่อนหรือเปล่าครับ แล้วไป update ที่ ตัวมัน ผม งงมากเลยครับ และจะเอาไปใช้ งานอย่างไร ครับ

ปล.ขออภัยครับที่ผมอธิบาย ไม่เข้าใจ ผมไม่รู้จะอธิบายอย่างไรดี

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 01:03:00 By : yamcrocodile
 


 

No. 5



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ที่ผม ออกแบบไว้แบบนี้ ครับ พอมี user ใหม่ ก็ มากำหนด ได้ว่าจะให้เข้าส่วนใหน ได้บ้าง เหมือนกับ user นี้ที่กำหนด permission ไว้ครับ

ดด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 01:29:28 By : yamcrocodile
 


 

No. 6



โพสกระทู้ ( 5,149 )
บทความ ( 26 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


แบบนี้ผมว่า สร้างเป็น Group User แล้วพอคนเข้ามาใหม่ ก็เลือกเอาเป็น Group จะดีกว่านะครับ
เผื่อมีหลายกลุ่มผู้ใช้งาน

ถ้าทำแบบนี้แล้ว จะรองรับได้หลากหลายกว่า


ส่วนการเชคว่า จะทำอะไรได้บ้าง .. มันต้องไป คู่กับการทำเมนู ว่า อันใหน ติ๊กไว้ ก็ให้แสดงเฉพาะอันนั้นครับ

ตอนเข้าใช้งานผ่าน URL ก็มาเชคใน DB ว่า ผู้ใช้คนนั้น ๆ มีสิทธิ์ตามที่เรา checked ไว้หรือเปล่า

คร่าว ๆ แนว ๆ นี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 12:17:28 By : deawx
 


 

No. 7



โพสกระทู้ ( 3,156 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : yamcrocodile เมื่อวันที่ 2014-08-01 01:29:28
รายละเอียดของการตอบ ::
ต้องมีสองเทเบิ้ลครับ
เทเบิ้ลมาสเตอร์ accessibility เก็บข้อมูลลักษณะนี้ครับ
accessibility (id,page_id , page_url)

ส่วนเทเบิ้ล permission ก็อยู่ข้างบน

เมื่อแอดมินเข้ามาจัดการยูสเซอร์ ก็ให้แสดงตารางการเข้าถึงแต่ละเมนู หรือหน้าเพจแบบที่ จขกท.สร้างไว้แล้ว
ซึ่งตัวตารางจะต้องดึงข้อมูลมาจากเทเบิ้ล accessibility และรอการกดเลือกหัวข้อต่างๆจากแอดมิน ซึ่งเราจะได้ตัวแปร
ดังต่อไปนี้

  • ตัวแปรอาร์เรย์ 4 ตัว readable[] , writable[] , editable[] , printable[]

  • กับตัวแปร $user_id


ตัวแปรทั้งหมด เราจะใช้ในการบันทึกข้อมูลลงในเทเบิ้ล permission

ส่วนที่ยุ่งยากที่สุดจะอยู่ตรง การนำ permission ไปใช้งานในแต่ละหน้าครับ

น่าจะพอเห็นไอเดียน่ะครับ



Code (PHP)
<form method='post'>
	<table>
	<tr>
		<td>Accessible</td>
		<td>Read</td>
		<td>Write</td>
		<td>Edit</td>
		<td>Print</td>
	</tr>
<?php
	$sql = "select * from accessibility ";
	$res = mysqli_query($link,$sql) or die(mysqli_error());
	while($data = mysqli_fetch_assoc($res)){
?>
	<tr>
		<td><?php echo $data["title"];?></td>
		<td><input type='checkbox' name='readable[<?php echo $data["page_id"];?>]' value='yes' /></td>
		<td><input type='checkbox' name='writable[<?php echo $data["page_id"];?>]' value='yes' /></td>
		<td><input type='checkbox' name='editable[<?php echo $data["page_id"];?>]' value='yes' /></td>
		<td><input type='checkbox' name='printable[<?php echo $data["page_id"];?>]' value='yes' /></td>
	</tr>
<?php } ?>
	</table>
	<input type='hidden' name='user_id' value='<?php echo $_GET["UserID"]; ?>' />
	<input type='submit' name='submitForm' value='Save Change' />
  </form>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 14:04:31 By : sakuraei
 


 

No. 8



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : deawx เมื่อวันที่ 2014-08-01 12:17:28
รายละเอียดของการตอบ ::
แบบที่พี่กล่าวมาก็น่าสนใจนะครับ



ตอบความคิดเห็นที่ : 7 เขียนโดย : sakuraei เมื่อวันที่ 2014-08-01 14:04:31
รายละเอียดของการตอบ ::
ผมพอจะนึกภาพออกแล้วครับ ขอบคุณครับ ผมขอไปลองก่อน

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 16:00:35 By : yamcrocodile
 


 

No. 9



โพสกระทู้ ( 212 )
บทความ ( 0 )



สถานะออฟไลน์


แต่ผมคิดว่าแบ่งเป็นกลุ่มมันไม่อิสระน่ะครับ ต้องมีผู้ใช้แบบคาบเกี่ยวระหว่างกลุ่มแน่ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 18:34:59 By : cowboycnx
 


 

No. 10



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนมองภาพ นึกภาพ ตาม มันก็มองออกอยู่นะครับ แต่พอลงมือประฏิบัติจริงมันไม่ง่ายเลย มันงง มากๆ พอคิดมากๆ คิดหนัก จนงงไปหมดแล้ว จะเรียบเรียง ยังมึนเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-01 19:39:28 By : yamcrocodile
 


 

No. 11



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ของผมจะใช้วิธีที่ต่างออกไป ทำให้การกำหนด permission ทำได้ละเอียดมากขึ้นและต่างกันได้อย่างอิสระในแต่ละโมดูล
ลองโหลดไปเล่นดูนะครับ
https://github.com/OkveeNet/fuel-start
open source และ free ครับ

การเก็บแบบของผมคือ เก็บ กลุ่มผู้ใช้ ชื่อหน้า ชื่อการทำงาน
level_group_id permission_page permission_action

ถ้าติ๊กอันไหนก็ใส่เข้าฐานข้อมูลอันนั้น เช่น
1 dashboard read_dashboard

แต่จะต่างจากที่คุณได้ทำมาแล้วมากมาย ก็เก็บไว้งานต่อไปก็ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-02 02:39:39 By : mr.v
 


 

No. 12



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


บอกตรงๆครับ ตั้งแต่เกิดมายังไม่เคย แตะ Framework เลยซักตัว เขียนสดตลอดเลยครับ เขียนไปวางยาตัวเองไป ยิ่งเขียนยิ่ง งง 555+


ประวัติการแก้ไข
2014-08-02 04:12:42
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-02 03:33:06 By : yamcrocodile
 


 

No. 13



โพสกระทู้ ( 3,156 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ขอเทเบิ้ลของหัวข้อ(หน้าเพจ)ที่ต้องการกำหนดสิทธิ์มาลงด้วยครับ อาจจะตามตัวอย่างที่ให้ไว้ accessibility
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-02 12:17:31 By : sakuraei
 


 

No. 14



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ผมติด ตรงปัญหา ตอน INSERT ไม่รู้ว่า จะ INSERT array ยังไง ดีครับ

database ครับ
ด

หน้า ฟร์อม
ก

หลังจาก กด submit ครับ array ที่ได้
ๆ
หลังจากที่ submit ค่ามาแล้ว ไม่รู้จะเอา array ไป Insert ยังไง ดีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-02 21:10:46 By : yamcrocodile
 


 

No. 15



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


code ส่งค่าไป save ครับ
so
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-02 21:27:36 By : yamcrocodile
 


 

No. 16



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


table user_trustee
u_id int
u_trustee longtext


group_trustee.g_trustee และ user_trustee.u_trustee
ไว้เก็บ trustee ในรุปแบบ json_encode
ซึ่งสามารถ เก็บในรูป array หรือ object ได้


ตัวอย่างการนำไปใช้
ีuser_trustee.u_trustee: { page1: ["read", "write"], page2:["edit, print"] }
ซึ่งหมายความ page1 สามารถ read และ write ได้
ส่วน page2 สามารถ edit และ print ได้

ใช้ insert เพื่อตรวจสอบแล้ว ไม่เคยมีการกำหนด trustee;
ใช้ update เมื่อเคยกำหนด trustee ไว้แล้ว

Code (PHP)
<?PHP
// page1.php
$user_trustee=$mysqli->query('select u_trustee from user_trustee where u_id='.$user_id);
if($user_trustee->num_rows()){
    $ro=$user_trustee->fetch_assoc();
    $trustee=json_decode($ro['u_trustee']);
    if(in_array('read', $trustee->page1)){
       // this area can READ.  
   }else { header('locate: run_other.php'); }
}

?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-03 18:01:09 By : Chaidhanan
 


 

No. 17



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-03 18:01:09
รายละเอียดของการตอบ ::
ขอบคุณครับ จะไปทดลองทำก่อน ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-04 00:40:24 By : yamcrocodile
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความคิดเห็นในเรื่องออกแบบ database หน่อยครับ และอยากทราบแนวคิดครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่