Mam problem z stworzeniem-ułożeniem zapytania do bazy mysql (relacje wiele do wielu).
Moja baza wygląda tak:
CREATE TABLE `cms_users` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `login` varchar(16) NOT NULL DEFAULT '', `pass` varchar(40) NOT NULL DEFAULT '', `email` varchar(150) NOT NULL DEFAULT '', `name` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; CREATE TABLE `cms_group` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; CREATE TABLE `cms_user_has_group` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `userId` int(11) UNSIGNED NOT NULL, `groupId` int(11) UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Mianowicie w cms_users są loginy oraz unikalne id usera, w cms_group są nazwy grup oraz unikalne id grupy a w cms_user_has_group znajduje się informacja jaki id usera należy do grupy.
Pseudo kod, którym chciałem coś wykombinować
$query15 = "SELECT * FROM `cms_group`"; $query16 = "SELECT * FROM `cms_user_has_group` WHERE userId = '.$id.'"; { { if( $data[ 0 ] == $data2[ 2 ] ){ $wstaw = "checked='checked'"; } else { $wstaw = ''; } } }
Wygląd przykładowy tabel:
cms_group:
+--------------+---------+
| id | name |
+--------------+---------+
| 1 | Grupa 1 |
| 2 | Grupa 2 |
| 3 | Grupa 3 |
+--------------+---------+
cms_user_has_group:
+--------------+---------+---------+
| id | userId | groupId |
+--------------+---------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 3 |
+--------------+---------+----------+
Ostatnia tabela ukazje iż:
- user o id 1 należy do grupy o id 1;
- user o id 1 należy do grupy o id 2;
- user p id 2 należy do grupy o id 3;
A więc mój problem zaczyna się tutaj. Chcę wypisać wszystkie grupy jakie są w tabeli cms_group ale.. dodatkowo, jeżeli użytkownik należy do jakiejś grupy niech checkbox będzie zaznaczony, oraz abym mógł łatwo pobrać id z formularza, gdyż przyda mi się to do wykonania UPDATE w celu edytowania czy użytkownik należy do danej grupy. ( Użytkownik może należeć do kilku grup, albo nie należeć do żadnej )
Z góry dziękuję za jaką kolwiek pomoc.
Pozdrawiam
Muzzi