Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tablica wielowymiarowa z MySQL
seeb
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 6.12.2007
Skąd: Poznań

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


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)

Ten post edytował seeb 27.06.2014, 09:57:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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).
Go to the top of the page
+Quote Post
maly_swd
post
Post #3





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


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.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 16:16