Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL] Relacje baz danych wiele do wielu problem z zapytaniem, w/w
Muzzi
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.07.2012

Ostrzeżenie: (0%)
-----


Witam!

Mam problem z stworzeniem-ułożeniem zapytania do bazy mysql (relacje wiele do wielu).

Moja baza wygląda tak:

  1. CREATE TABLE `cms_users` (
  2. `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `login` varchar(16) NOT NULL DEFAULT '',
  4. `pass` varchar(40) NOT NULL DEFAULT '',
  5. `email` varchar(150) NOT NULL DEFAULT '',
  6. `name` varchar(255) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  9.  
  10.  
  11. CREATE TABLE `cms_group` (
  12. `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  13. `name` varchar(255) NOT NULL DEFAULT '',
  14. PRIMARY KEY (`id`)
  15. ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  16.  
  17. CREATE TABLE `cms_user_has_group` (
  18. `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  19. `userId` int(11) UNSIGNED NOT NULL,
  20. `groupId` int(11) UNSIGNED NOT NULL,
  21. PRIMARY KEY (`id`)
  22. ) 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ć
  1. $query15 = "SELECT * FROM `cms_group`";
  2. $checkquery15 = mysql_query( $query15 ) or die( mysql_error() );
  3.  
  4. $query16 = "SELECT * FROM `cms_user_has_group` WHERE userId = '.$id.'";
  5. $checkquery16 = mysql_query( $query16 ) or die( mysql_error() );
  6.  
  7. echo '<br /><form><td>';
  8.  
  9. while( $data = mysql_fetch_array( $checkquery15 ) )
  10. {
  11. while( $data2 = mysql_fetch_array( $checkquery16 ) )
  12. {
  13. if( $data[ 0 ] == $data2[ 2 ] ){
  14. $wstaw = "checked='checked'";
  15. }
  16. else
  17. {
  18. $wstaw = '';
  19. }
  20. echo '<input type="checkbox" '.$wstaw.' />'.$data[ 1 ].'<br /> ';
  21. }
  22. }
  23. echo '</td></form>';



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

Ten post edytował Muzzi 25.07.2012, 08:26:55
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 06:04