2012-03-05 17 views
0

検索を微調整したい。 私は情報、要求、それぞれのネットワークを含む1つのテーブルを持っています。 私は可視性を記録する別のテーブルを持っており、それはそれぞれのネットワークであり、誰がそれを見ることができるかは "public"か "private"のどちらかに基づいています。mySQLの可視性の問題

私が望む最終結果は、テーブルにいる人は私設ネットワークを見ることができ、誰でも公衆ネットワークを見ることができるということです。私のコードで

if ($whichnetwork == "Global"){ 
    $query = mysql_query("SELECT * FROM requests ORDER BY dateposted DESC"); 
} else { 
    $query = mysql_query("SELECT * FROM requests WHERE network = '$whichnetwork' ORDER BY dateposted DESC"); 
} 

while ($row = mysql_fetch_assoc($query)){ 

      echo "<div id='".$row["id"]."' class='item'>"; 
      echo '<div style="width: 75%;">'; 
      echo "<h4 style='display: inline;'>".$row["user"]." requests:</h4><br/>"; 
      echo "<h2 style='display: inline;'>".$row["title"]." </h2>"; 
      echo '</div>'; 

      echo '<h3 id="button" style="border-radius: 10px; padding: 4px; color: white; float: right; position: relative; top: -50px; border: 2px solid grey; background-color: #C0504D;">Apply</h2>'; 
      echo "</div>"; 
} 

、私は唯一の要求テーブルへの参照を持っている、しかし、ネットワーク、ユーザー名と可視性を持つ別のテーブルがあります。

どうすればこの作品を作れますか?私はそれを実装するのに何度も失敗しました、ありがとう、クリス。

スキーマ:

ネットワーク表:

network text utf8_general_ci  No         
username text utf8_general_ci  No         
visible text utf8_general_ci  No 

関連する要求テーブル:

network text utf8_general_ci  No 
user text utf8_general_ci  No 
+3

...なぜ、MySQLスキーマではなくPHPコードを表示していますか? –

+0

さて、今すぐ確認してください。 – CCates

+0

困ったことはありません。 'TEXT 'は物事を見つけるのに一般的に有用な型ではありません。 –

答えて

1

あなたのテーブルを結合するに役立つだろうと、オフを開始するためにあなたのテーブルへのインデックスフィールドを追加する必要がありますおよびクエリ。

アルターネットワークテーブル

user_id   int auto_increment primary key, 
username  nvarchar(30) , 
network   text, 
visibility_id int 

リクエストテーブル

user_id   int , 
network   text 

は、現在のユーザーが検索へのアクセス権を持っているかどうかを確認するために

visibility_id int // values stored and meaning(0-Public, 1-Private) 
visibility  nvarachar(10) (public, private etc) 

クエリ別のテーブルの可視性を追加変更し、次のようにネットワークとネットワークは公開または非公開です

visibility_idが0の場合
select user_id, visibility from network where network='UserProvided'; 

visibility_idが1の場合はuserIdは、ネットワークのためになった場合、それはプライベートなチェックですが、現在のユーザーと同じである、そのネットワークにのみ

を表示し、それはあなたができる公開されていますそれをリクエストから表示します。

+0

うーん、使用する必要があるクエリの種類を詳しく説明できますか? – CCates

+0

私は1つの質問を持っています、ネットワークはプライベートかパブリックか、またはすべてのネットワークを見ることができるような特定のユーザのスーパーユーザですか? –

+0

上記の可視性IDに基づいて条件が機能する場合。 –