Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak pogrupować i grupami wypisać wynik zapytania?
miedzna
post 20.05.2006, 12:53:45
Post #1





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Mam taką tabelę:

h_id | gr_szkolen | nazwa_szkolenia | data_szkolen |

wszystkie szkolenia dziela się na 3 grupy. Jak zapytać bazę a następnie wydrukować wynik zapytania w taki sposób, żeby mi podzielił:

GRUPA 1
szkolenie 1
szkolenie 2

GRUPA 2
szkolenie 1

GRUPA 3
szkolenie 1
szkolenie 2

chodzi o to, żeby pogrupować po grupach szkoleń (gr_szkolen). Jak daje zwykle zapytanie, to mi to wywala mniej wiecej tak:

GRUPA 1
szkolenie 1

GRUPA 1
szkolenie 2

GRUPA 2
szkolenie 1

GRUPA 3
szkolenie 1

GRUPA 3
szkolenie 2

pomocy...
Go to the top of the page
+Quote Post
MrGhost
post 20.05.2006, 15:03:45
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.05.2006

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


A masz osobną tabelę z grupami? jeżeli nie to stworz.
Wtedy nie bedzie żadnego problemu.
Go to the top of the page
+Quote Post
em1X
post 20.05.2006, 15:34:18
Post #3





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Tabela grupy:
  1. CREATE TABLE `grupy` (
  2. `group_id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
  3. `nazwa` VARCHAR( 100 ) NOT NULL ,
  4. PRIMARY KEY ( `group_id` )
  5. )


Tabela szkolenia:
  1. CREATE TABLE `szkolenia` (
  2. `h_id` int(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `group_id` int(3) UNSIGNED NOT NULL DEFAULT '0',
  4. `nazwa_szkolenia` varchar(200) NOT NULL DEFAULT '',
  5. `data_szkolenia` int(13) NOT NULL DEFAULT '0',
  6. PRIMARY KEY (`h_id`)
  7. )


php:

  1. <?php
  2.  
  3. $db = mysql_connect ('localhost');
  4. mysql_select_db ('test');
  5.  
  6. $sql = mysql_query('select * from grupy');
  7. while ($w = mysql_fetch_array($sql))
  8. {
  9. print $w['nazwa'] . ":<br>";
  10.  
  11. $szk = mysql_query('select * from szkolenia where group_id = '.$w['group_id']);
  12. while ($y = mysql_fetch_array($szk))
  13. {
  14. print '&nbsp;&nbsp;&nbsp;'.$y['nazwa_szkolenia'].'<br>';
  15. }
  16. }
  17.  
  18.  
  19. // PAMIETAMY O ZAMYKANIU POŁĄCZEN !!!!!!!!!!!!!
  20.  
  21. ?>


Ps: poczytaj co to są postacie normalne oraz postać Boyce-Codde'a - przyda Ci się.

Ten post edytował em1X 20.05.2006, 15:36:30


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
Ludvik
post 20.05.2006, 18:53:25
Post #4





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Wykonujesz zwykłego selecta, a potem możesz dane ręcznie przerobić. W PDO jest możliwe grupowanie według wartości danej kolumny, zobacz przykład 3.

Mając wyniki w najrpstszej postaci można to zrobić tak:
  1. <?php
  2. $groups = array();
  3. while ($row = mysql_fetch_array($result)) {
  4. $groups[$row['gr_szkolen']] = $row;
  5. }
  6. ?>


Wtedy masz wszystko pogrupowane już w tablicy i nie powinieneś mieć problemy z wyświetleniem. Da się to też obejść bez grupowania.


--------------------
Go to the top of the page
+Quote Post
miedzna
post 25.05.2006, 15:04:11
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Witam, dzięki za odzew, a możesz więcej napisać o tym, jak wyświetlić teraz te dane i jak się to też obejść bez grupowania?

Pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 00:37