Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL]Array w arrayu z bazy danych
grzesoz
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2017

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


Witam

Mam problem z wyciąganiem danych z bazy.

mam 2 tabele:

struktura pierwszej

id(int), imie(string)

sturktura drugiej:

id(int), id_czlowieka(int), kolor(string)

id_czlowieka to id z pierwszej tabeli, a ogólnie chodzi o przypisanie ulubionego koloru do człowieka. Tylko że człowiek może mieć kilka ulubionych kolorów

Przykładowe dane:

tabela pierwsza:

id, imie
1, Grzesiek

tabela druga:

id, id_czlowieka, kolor
1,1,czerwony
2,1, niebieski

używając zapytania SQL moge wyciągnąć coś takiego:

  1. SELECT p.imie d.kolor FROM pierwsza AS a JOIN druga sa d ON p.id=d.id_czlowieka


Grzesiek czerwony
Grzesiek niebieski

ale chciałbym otrzymać coś takiego:

Grzesiek czerwony,niebieski

moge coś takiego osiągnąć używająć:

  1. SELECT p.imie, GROUP_CONCAT(DISTINCT d.kolor) AS kolory FROM pierwsza AS a JOIN druga sa d ON p.id=d.id_czlowieka


i w php otrzymam takiego arraya:

  1. array(1) { [0]=> object(stdClass)#4 (7) { ["imie"]=> string(4) "Grzesiek" ["kolory"]=> string(18) "czerwony,niebieski" } }


tylko że "czerwony,niebieski" będzie jednym stringiem, a ja bym chciał żeby nie był jednym tylko dwoma: "czerwony","niebieski"

żeby array w php zwrócił coś w stylu (sam pisałem tak dla przykładu, wiec nie wiem czy jest możliwe takie zwrócenie):

  1. array(1) { [0]=> object(stdClass)#4 (7) { ["imie"]=> string(4) "Grzesiek" ["kolory"]=> list[ string(8)"czerwony", string(9) "niebieski" ]} }



ma może ktoś pomysł jak to osiągnąć?
przydałby sie taki array w arrayu żeby móc potem te kolory pojedyńczo wyciągnąć
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


A co za problem explode() na tym zrobić? Niestety sterowniki baz w PHP nie są za fajne gdy chodzi o takie dane. Pytałem kiedyś o taką funkcjonalność teamu php ale nie byli za bardzo chętni żeby wprowadzić - nawet tylko dla samego typu JSON.

  1. class dane {
  2. private $imie;
  3.  
  4. public function setImie($imie) {
  5. $this->imie = $imie;
  6. return $this;
  7. }
  8. public function setKolory($kolory) {
  9. $this->kolory = explode(',', $kolory);
  10. return $this;
  11. }
  12. public function getkolory() {
  13. return $this->kolory;
  14. }
  15. public function __set($key, $val) {
  16. if ($key === 'kolory') {
  17. $this->setKolory($val);
  18. }
  19. }
  20.  
  21. }
  22. $result = $stmt->fetchAll(PDO::FETCH_CLASS, dane::class);
  23. var_dump($result);


Ten post edytował viking 10.11.2017, 15:10:14
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: 31.12.2025 - 00:01