Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP]tabela w php, jeden do wielu? jak?
sindbad_zeglarz
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 18.04.2012

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


Hejka
Mam w bazie 3 tabele.
1 tabela - posiadłosci
2 tabela - dane userow
3 tabela - zlaczone id z tabela1 z id_tabela2 (jeden do wielu).

Chcialbym wyswietlić raporcik taki, aby w wyniku był następujący efekt.

Id tabela1 | id tabela 2 | imie tab2 | nazwisko tab 2
1 1 G P
tutaj nie chcę powtarzać tego samego id drugi raz tylko dać inne dane dane z id_tabeli2 , imie i nazwisko.


Przykład: DOM może mieć kilku właścicieli.
Ale jest to jeden DOM = jeden ID a kilka ID wlascicieli.

W SQL-u jakoś nie widzę żeby się to dało zrobić łatwo, chyba że ktoś coś podpowie.
A PHP jak to wyświetlić ?

Podpowiedzcie coś proszę.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sindbad_zeglarz
post
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 18.04.2012

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


no niby dziala dziekuję Nospor, ale jeszcze nie tak jakbym chciał.
Zrobiłem tak.

SQL
  1. SELECT *,d.id domid,
  2. d.nr_domu numer,
  3. w.id wlaid,
  4. w.nazwisko nazwisko
  5. FROM dom d
  6. LEFT JOIN wlasciciel_ma_dom wmd ON wmd.dom_id = d.id
  7. LEFT JOIN wlasciciel w ON wmdz.wlasciciel_id = w.id
  8. LEFT JOIN gmina g ON d.gmina_id = g.id


Stworzenie tablicy:

  1. $domki = array();
  2. while ($row = mysql_fetch_array($res))
  3. {
  4. $domid = $row['domid'];
  5.  
  6. //jeśli nie było jeszcze danego domu to go tworzymy
  7. if (!isset($domy[$domid]))
  8. $dom[$domid] = array('nazwa' => $row['nr_domu'], 'nrdomu' => $row['numer'], 'dom' => array());
  9.  
  10. //dodajemy do do domu kolejnych wlascicieli
  11. if (!empty($row['nazwisko'])) //jeśli istnieje wlasciciel
  12. $dom[$domid]['wlasciciele'][] = array('wlasciciel' => $row['nazwisko'], 'id'=>$row['wlaid']);
  13. }
  14. print_r($dom);


pętla po tablicy:

  1. foreach ($dom as $domid => $iloscdomkow)
  2. {
  3. echo '<li><b>'.$iloscdomkow['nazwa'].'</b><br>';
  4. echo '<li>'.$iloscdomkow['nrdomu'].'<ul>';
  5. foreach ($iloscdomkow['wlasciciele'] as $allwlasc)
  6. {
  7. echo '<li>Nazwisko Właściciela '.$allwlasc['wlasciciel'].' - id '.$allwlasc['id'].'</li>';
  8. }
  9. echo '</ul></li>';
  10. }
  11. echo '</ul>';


Buduje/wynik:
Nazwisko Właściciela Nowak1 - id 2
135
135
Nazwisko Właściciela Nowak1 - id 2
134
134

i na końcu błąd:
Warning: Invalid argument supplied for foreach() line 78.
foreach ($iloscdomkow['wlasciciele'] as $allwlasc)

Nie wiem czy przez ten bład jest problem, ze powtarza nr domu.

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: 4.10.2025 - 17:26