Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Select z kilku tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
rkuch
Witam.
Mam nastepujaca strukture (tabel) w bazie (przyklad):

osoba: id_osoby(klucz), imie, nazwisko --> dane osob
zawod: id_osoby, nazwa_zawodu.

Dziala to tak, ze na stronie WWW formularz wysyla za pomoca php info o osobie i sa checkboxy z zawodami, gdzie mozna wybrac kilka jednoczesnie i w tabeli zawod dodaja sie np. id=2: 2, kominiarz; 2, nauczyciel; 2, emeryt.

Do bazy wszystko ladnie sie zapisuje, ale jak wyciagnac z bazy te informacje, zeby spowrotem w formularzu sie pojawily (chodzi o te checkboxy).
nospor
przy zalozeniu że już masz skądś id osoby ($idOsoby):
  1. <?php
  2.  
  3. $sql='select nazwa_zawodu from zawod where id_osoby='.$idOsoby;
  4. /*...tutaj dajesz polaczenia do bazy, query itp. W wyniku tego masz miec tabelę z
  5. zawodami danej osoby ($osobaZawody)*/
  6. /*tutaj wydorębniasz wszystkie zawody- tabela $zawody*/
  7.  
  8. //i teraz checkbox
  9. foreach ($zawody as $zawod)
  10. {
  11. echo '<input type=\"checkbox\" name=\"jakiesname\" '.(in_array($zawod,$osobaZawody)?' checked':'').' >'.$zawod;
  12. }
  13.  
  14.  
  15. ?>


mam nadzieję że pomogłem biggrin.gif
rkuch
Cytat(nospor @ 2005-04-13 07:36:28)
przy zalozeniu że już masz skądś id osoby ($idOsoby):
  1. <?php
  2.  
  3. $sql='select nazwa_zawodu from zawod where id_osoby='.$idOsoby;
  4. /*...tutaj dajesz polaczenia do bazy, query itp. W wyniku tego masz miec tabelę z
  5. zawodami danej osoby ($osobaZawody)*/
  6. /*tutaj wydorębniasz wszystkie zawody- tabela $zawody*/
  7.  
  8. //i teraz checkbox
  9. foreach ($zawody as $zawod)
  10. {
  11. echo '<input type=\"checkbox\" name=\"jakiesname\" '.(in_array($zawod,$osobaZawody)?' checked':'').' >'.$zawod;
  12. }
  13.  
  14.  
  15. ?>


mam nadzieję że pomogłem  biggrin.gif

Hm... no to juz cos, ale mialem nadzieje, ze to da sie zrobic w jednym zapztaniu,
tzn. za jednym zamachem i dane osoby, czyli imie i nazwisko i do tego odpowiednie checkboxy... Mam rozumiec, ze jedno zapytanie temu nie podola? Musze do kazdej grupy checkboxow robic oddzielne zapytanie?
To bedzie zapytanie do tabeli z uzytkownikami, kolejne do zawodow, inne do kolejnej grupy checkboxow... bo mam kilka grup checkboxow.
nospor
Możesz pobrać zawód i dane osoby w jednym zapytaniu:
  1. SELECT osoba.imie, osoba.nazwisko, zawod.nazwa_zawodu
  2. FROM osoba,zawod WHERE zawod.id_osoby=osoba.id AND osoba.id=konkretneid


tylko przy takim zapytaniu będziesz mial powtarzanie się informacji, bo dla każdego zawodu osoby będą ciągle jej dane podczepiane. Twój wybór
rkuch
Cytat(nospor @ 2005-04-13 08:33:38)
Możesz pobrać zawód i dane osoby w jednym zapytaniu:
  1. SELECT osoba.imie, osoba.nazwisko, zawod.nazwa_zawodu
  2.  
  3. FROM osoba,zawod WHERE zawod.id_osoby=osoba.id AND osoba.id=konkretneid


tylko przy takim zapytaniu będziesz mial powtarzanie się informacji, bo dla każdego zawodu osoby będą ciągle jej dane podczepiane. Twój wybór

A co jest bardziej optymalne/wydajniejsze: jedno takie zapytanie z mnostwem wynikow, czy kilka zapytan questionmark.gif?

Ale i tak dziex, przynajmniej juz wiem, jak do formularza dane z bazy wrzucic :-)

Pozdrowka
nospor
Szczerze nie wiem. Kwestie wydajności rozwiązuje tak:
robię jedno rozwiązanie, mierzę czas
robię drugie rozwiązanie, mierzę czas
oba czasy porównuję i już wiem co jest wydajniejsze
biggrin.gif
ebe
Po to są zapytania łaczącące (powinno być JOIN) by ich używać, takie kilkukrotne łaczneie z bazą celem wykonania prostego selecta jest i kiepską praktyką programistyczną i zbytnim obciążeniem serwera.
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.