나는 다소 혼란 스럽다.Mysql 및 PDO의 다른 테이블 결과를 기반으로 테이블에서 행 선택
ID : 제목, created_by, 그룹 필드가있는 테이블이 있습니다.
나는 또한 이 필드 그룹의 다른 테이블 : ID, CREATED_BY이 (가) 작성한, GROUP_NAME
및 필드와 사용자의 최종 테이블 : ID, 사용자 이름, 암호 등.
로그인 한 사용자가 만든 항목 또는 로그인 한 사용자가 항목의 사용자 그룹에 속한 항목 만 해당 사용자가 볼 수 있다는 개념입니다.
각 사용자는 불특정 다수의 그룹에 속할 수 있으며 각 그룹에는 불특정 다수의 사용자가 포함될 수 있습니다.
내가 생각할 수있는 유일한 방법은 각 사용자 (구성원 인 모든 그룹 나열)에 대해 별도의 테이블을 만드는 것입니다.
그런 다음 먼저 로그인 한 사용자가 만든 항목에 대한 항목 테이블을 검색합니다.
둘째, 해당 사용자의 "그룹"테이블을 검색하여 해당 그룹이 속한 각 그룹의 ID를 찾은 다음 항목 테이블을 재귀 적으로 검색하고 현재 발견 된 group_id가 항목의 그룹 ID와 일치하는 각 항목을로드합니다.
소수의 항목, 그룹 및/또는 사용자에 대해 올바르게 코딩 된 경우 작동하지만 각 페이지가 큰 테이블을로드/처리하는 데 오랜 시간이 걸릴 것으로 생각됩니다. 또한 수천 명의 사용자와 수천 개의 테이블을 가질 수 있다는 점을 감안할 때 각 사용자마다 새 테이블을 만드는 것이 상당히 지저분한 것처럼 보입니다.
테이블 조인이 솔루션을 제공 할 수 있다고 생각하지만 지금은 어떻게 보이지 않습니다. 이 경우 테이블 필드의 이름을 변경하여이 작업을 수행하는 것이 매우 행복합니다. 항목을 검색하기위한
내 현재 코드 (나는 아마 적합하지 알고)이 있습니다 :
$query = "SELECT * FROM items WHERE user_id=:u_id";
$stmt = $conn->prepare($query);
$stmt->execute(array(':u_id'=>$_SESSION['u_id']));
$exist = '<option></option>';
while($uRow = $stmt->fetch()) {
$exist .= '<option value="'.$uRow['id'].'">'.$uRow['title'].'</option>';
}
$user_groups_tbl = "user_groups_".$_SESSION['u_id'];
$query1 = "SELECT * FROM $user_groups_tbl";
$query2 = "SELECT * FROM items WHERE group_id=:group";
$stmt1 = $conn->prepare($query1);
$stmt2 = $conn->prepare($query2);
$stmt1->execute();
while($gRow = $stmt1->fetch()) {
$stmt2->execute(array(':group'=>$gRow['group_id']));
while($row = $stmt2->fetch()) {
if($row['user_id'] !== $_SESSION['u_id']) {
$exist .= '<option value="'.$uRow['id'].'">'.$uRow['title'].'</option>';
}
}
}
return $exist;
이 내 요구와 의도가 분명하다 바랍니다. 어떤 도움을 주시면 감사하겠습니다.
내 대답과 동일하지만, 더 잘 expmained. – thomasfedb
유익하고 웃게 만들었습니다! 나는 간단한 것을 놓치고 있다는 것을 알았다! 감사! – drent