2017-02-09 5 views
0

私は2人の従業員に私のプロジェクトの管理者として少なくとも従業員IDを割り当てたいと思っています。最低従業員IDを持つ2行をmysqlから取得して現在のセッションユーザーと比較するにはどうすればよいですか?mysqlで上位2行の値をフェッチし、それをセッションユーザー変数の値と比較するにはどうすればよいですか?

例:

EMP_ID | EMP_NAME

1 | Mike 
    2 | Peter 
    3 | Drake 
    4 | Oliver 
    5 | Andrew 

はどのように管理ページがマイクとピーター以外のユーザーからそのタブと直接のURLから開くように制限するか、私の現在のユーザーはオリバー(EMP_ID-4)であると仮定しますか?管理ページがPeter(EMP_ID-2)またはMike(EMP_ID-1)によって開かれている場合は、adminタブから開き、直接URLにアクセスする必要があります。助けてください!!

+0

何を試しましたか?ユーザーが1 |に属しているかどうかを確認することで、簡単なクエリ2それです。 "従業員からIDを選択するemp_id IN(1,2)" ....ユーザーがこれに属していない場合は、許可しないでください。 – rahulsm

+0

Rahulに感謝しますが、この表は単なる例です。従業員IDは、4桁または5桁または6桁です。ユーザー登録中に私の管理者を自動的に割り当てたいトップ2の従業員が何であれ、彼らは管理者になります。従業員IDは異なるためです。 –

+0

だから私は、あなたが言っている、最初の2つの登録ユーザーは管理者ですか? – rahulsm

答えて

0

1)ユーザーが登録すると、最初の2人のユーザーは次のようになります。スーパー管理者(1)と管理者(2)はすべて通常のユーザーになります。

2)ユーザーがログインするときに、emp_idとともにこれらのユーザーデータをセッションに保存する必要があります。

3)さて、承認は、どのページにアクセスする必要がありますどのユーザーを意味し、次のようなクエリを起動します、

select emp_id from employee order by emp_id asc limit 2. 

このクエリは、あなたに登録されているものを、トップのユーザーのIDのみを与えます1または2または任意の数に関係なくトップ。あなたがセッションに保存されている現在のユーザーのEMP_IDは、()あなたは上記に書いたクエリから上位2つのユーザーのEMP_IDに存在するか存在している場合

4)、そして、すべてのページへのアクセスを

をチェック

はあなたが承認または任意の場合は、単にあなたのホーム・ページにリダイレクトされていないことを、警告メッセージが表示されます。

これらの手順を実行すると、すべて完了しました。

+0

それは働いた。ありがとう –

+0

あなたはほとんどのウェルカムメイトです! – rahulsm

0

まさにこの例のSQLは次のようになります。

$bHasAdminAccess = db::getValue("SELECT count(*) FROM _USER_TABLE_ WHERE userid = ".$userIdLoggedIn." AND userid IN (SELECT userid FROM _USER_TABLE_ LIMIT 2)"); 

も疑問は、なぜ最初の二つすべきですか?あなたは単に2つ以下と言うことはできませんか?

$bHasAdminAccess = db::getValue("SELECT count(*) FROM _USER_TABLE_ WHERE userid = ".$userIdLoggedIn." AND userid <= 2"); 

のidのは、変更される可能性が場合、テーブルは次のようになりますので、私は単純に、別の列 "is_admin" を追加します。コードはされるよりも

1 | Mike | 1 
    2 | Peter | 1 
    3 | Drake | 0 
    4 | Oliver | 0 
    5 | Andrew | 0 

$bHasAdminAccess = db::getValue("SELECT count(*) FROM _USER_TABLE_ WHERE userid = ".$userIdLoggedIn." AND is_admin = 1"); 
+0

いいえ、従業員IDが4桁または5桁などになる可能性があるため、2桁未満とは言えません。私が実証した表は単なる例です。 –

+0

ちょっと私はあなたの例のためにそれを修正しました、今私は最初の2つのIDを取得し、それを確認するより。 –

+0

どうしたのか教えてください。 –

0

まず最初に2人の従業員を取得するには、句を次のように使用します。

SELECT * FROM employee_table ORDER BY EMP_ID ASC LIMIT 2

ここでsession userEMP_IDを一致させることができます。これはこのクエリの後に結果として得られます。

+0

ありがとうございます。しかし、私はそれをセッションユーザーと比較する方法を得ていません。クエリでは2行の結果が得られるので、従業員IDを取得してセッションユーザーと比較する方法がわかります。 –

+0

あなたはクエリから得られる結果のループを持つことができます。いずれかのIDが一致する場合は、管理ページにリダイレクトすることができます。 – DD77

関連する問題