Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak pogrupować i grupami wypisać wynik zapytania?
Forum PHP.pl > Forum > PHP
miedzna
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...
MrGhost
A masz osobną tabelę z grupami? jeżeli nie to stworz.
Wtedy nie bedzie żadnego problemu.
em1X
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ę.
Ludvik
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.
miedzna
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.