Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tablica wielowymiarowa z MySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
seeb
Witam!

Mam problem z pobraniem danych w postaci tablicy wielowymiarowej
  1. $centrala = Array(
  2. 'Odzial 1' => array (
  3. array("pracownik_id"=>"33", "name"=>"Zdzichu Zprzesieki", "pesel"=>"************","FZ"=>"Z")
  4. ),
  5. 'odzial 2' => array (
  6. array("pracownik_id"=>"11", "name"=>"Jan Kowalski", "pesel"=>"************","FZ"=>"Z"),
  7. array("pracownik_id"=>"892", "name"=>"Zuzanna Kiepska", "pesel"=>"************","FZ"=>"S")
  8. )
  9. );


czyli potrzebuję takiej tablicy pobranej z bazy:
Kod
array(2) {
["Odzial 1"]=>
  array(1) {
    [0]=>
    array(4) {
      ["pracownik_id"]=>
      string(2) "33"
      ["name"]=>
      string(18) "Zdzichu Zprzesieki"
      ["pesel"]=>
      string(11) "************"
      ["FZ"]=>
      string(1) "Z"
    }
  }
  ["odzial 2"]=>
  array(2) {
    [0]=>
    array(4) {
      ["pracownik_id"]=>
      string(2) "11"
      ["name"]=>
      string(12) "Jan Kowalski"
      ["pesel"]=>
      string(11) "************"
      ["FZ"]=>
      string(1) "Z"
    }
    [1]=>
    array(4) {
      ["pracownik_id"]=>
      string(3) "892"
      ["name"]=>
      string(15) "Zuzanna Kiepska"
      ["pesel"]=>
      string(11) "************"
      ["FZ"]=>
      string(1) "S"
    }
  }
}

Niestety zwykłe złączenia dają "płaską" tablicę asocjacyjną.
  1. SELECT Odzialy.name AS oddzial,Odzialy.id AS id_odzialu, pracownik.id AS pracownik_id,pracownik.name AS Imie_i_nazwisko, kadry.PESEL AS pesel, kadry.Rodzaj_umowy AS Zatrudnienie
  2. FROM p_users AS centrala
  3. JOIN p_emp_ptc AS PTC ON centrala.id=PTC.cuid
  4. JOIN p_users AS Odzialy ON PTC.puid=Odzialy.id
  5. JOIN p_user_usergroup_map AS map ON Odzialy.id=map.user_id
  6. JOIN p_emp_ptp AS ptp ON Odzialy.id=ptp.pracodawca
  7. JOIN p_users AS pracownik ON pracownik.id=ptp.id
  8. JOIN p_emp_kadry AS kadry ON pracownik.id=kadry.id
  9. WHERE centrala=5002;



Oczywiście można to zrobić przy pomocy php ale nie o to mi chodzi.
Mam nadzieję, że nie zagmatwałem zbytnio problemu. Z góry dziekuję za pomoc.
(Nazwiska są fałszywe i służą tylko prezentacji problemu)
Crozin
RDBMS-y działają w taki właśnie sposób, tj. zwracają zawsze płaską strukturę. Musisz to albo ręcznie sobie "zgrupować" w odpowiednią strukturę, albo skorzystać z ORM-a (co polecam).
maly_swd
http://php.net//manual/pl/pdostatement.fetchall.php

To return an associative array grouped by the values of a specified column, bitwise-OR PDO::FETCH_COLUMN with PDO::FETCH_GROUP.
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.