Ben tür stumped.
Ben bir table of items with fields: ID, title, created_by, group var.
I also have another table of groups with fields: ID, created_by, group_name
and a final table of users with fields: ID, username, password etc.
Fikir olduğunu tarafından oluşturulan, sadece ürün kullanıcı veya öğenin kullanıcı grubunun kullanıcı olduğunu açmış bir parçası olduğunu kullanıcı tarafından görülebilir öğeler kaydedilir.
Her kullanıcı gruplarının belirsiz bir sayıda parçası olabilir ve her gruba kullanıcı belirsiz bir sayıda içerebilir.
Bu yaptığını düşünebilirsiniz şu anda tek yolu (üyesi oldukları tüm grupları listesi) her kullanıcı için ayrı bir tablo var olmaktır.
I then first search the items table for items created by the logged in user.
Secondly, search that user's "groups" table to find the ids of each group to which they belong and then recursively search through the items table again and load each item where the currently found group_id matches the item's group id.
Ben öğeler, gruplar ve / veya kullanıcılar küçük sayılar için doğru kodlanmış ise bu iş olacak biliyorum ama ben her sayfa büyük tablolar için / süreç yüklemek için uzun bir süre alacağını sanıyorum. Ayrıca kullanıcı ve bu nedenle tabloları binlerce binlerce olabileceğini verilen her kullanıcı için yeni bir tablo var oldukça dağınık görünüyor.
O tablo katıldı çözüm sağlayabilir şüpheli ama gerçekten şu anda nasıl görmüyorum. Bu durumda ben bunu başarmak için tablo alanlarını yeniden adlandırmak için çok mutluyum.
Öğeleri almak için benim geçerli kod bu (Ben muhtemelen ideal değil biliyorum):
$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;
Benim ihtiyaçları ve niyetleri açık olan umuyorum. Herhangi bir yardım mutluluk duyacağız.