2012-03-05 2 views
0

그래서 검색을 미세 조정하고 싶습니다. 각 네트워크에 정보, 요청을 포함하는 하나의 테이블이 있습니다. 나는 "공용"또는 "개인"중 하나를 기반으로 가시성을 기록하고 해당 네트워크를 볼 수있는 다른 테이블을 가지고 있습니다.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) 

쿼리를 추가 요청 테이블 변경 다음과 같이

네트워크 테이블을 변경 네트워크 및 네트워크는 공개 또는 비공개입니다.

현재 사용자가 다음

다른 해당 네트워크를 표시로

select user_id, visibility from network where network='UserProvided'; 

visibility_id가 1 인 경우 그 다음은 userId를 네트워크에 대해 가지고있는 경우 전용 체크인이는 visibility_id이 0이면

다음은 공공 당신이 할 수있다 동일 그 요청을 표시합니다.

+0

음, 내가 사용해야 할 쿼리의 종류를 자세히 설명해 주시겠습니까? – CCates

+0

하나의 질문이 있습니다. 네트워크가 비공개 및 공개되었거나 모든 네트워크를 볼 수있는 특정 사용자 수퍼 유저입니까? –

+0

조건이 작동하면 위의 가시성 ID를 기반으로합니다. –