Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Genealogia - wypisywanie przodków.
Forum PHP.pl > Forum > PHP
MalyKazio
Witam,

Próbuję napisać funkcję, która umieściłaby mi id wszystkich przodków w bazie danych. Stworzyłem tabelę 'przodkowie' w bazie o strukturze, która ma strukturę: nr, osoba, pokolenie, przodkowie (przodkowie w formacie "ojciec,matka")
Zacząłem pisać też funkcję która znajdzie mi wszystkich przodków. Wygląda mniej więcej tak:
  1. <?php
  2. function przodkowie($osoba, $pokolenie=1) {
  3.  
  4. $q="SELECT * from osoby where nr=$osoba";
  5. $wynik = mysql_query($q);
  6. $wstepni="$ojciec, $matka";
  7.  
  8. insert into przodkowie(nr, osoba, pokolenie, przodkowie) values ('',$osoba,$pokolenie,$wstepni)
  9.  
  10. }
  11. ?>


Teraz właśnie utknąłem. Chciałbym rekurencyjnie w funkcji przodkowie wywołać ją jeszcze raz, ale żeby pobrała przodków ojca i matki i dodała do bazy danych. Wiadomo, że w każdym pokoleniu będzie tego więcej i tak w 2 pokoleniu będą już 4 osoby, w 3 będzie 8 itd, zaś czasem nie będzie w ogóle (z braku danych). Mógłby ktoś coś podpowiedzieć? Chodzi mi o zasadę, nie gotowy kod.
juzwa
Próbuję napisać funkcję, która umieściłaby mi id wszystkich przodków w bazie danych
czyli gdzie te dane są?

z tego co rozumiem to są w bazie i trzeba z tabeli A przenisć do tabeli B

ja bym to zrobił tak

1 - pobrał DISTINCTEM wszystkich członków rodziny
2 - w pętli dla każdego członka rodziny wyszukiwałbym jego przodków
3 - tak zebrane dane przygotowałbym i wpisywałbym do tabeli B

i chyba wszystko
MalyKazio
Mam tabelę 'osoby', gdzie są różne dane dotyczące osób, w tym nr matki i ojca (również z tabeli 'osoby').
Chcę teraż w tabeli przodkowie utworzyć na podstawie tej tabeli wszystkich przodków danej osoby.
Kod wyżej pobiera z tabeli osoby nr ojca i matki i tworzy stosowny rekord w tabeli przodkowie, np: 1/45/1/25,46 (odpowiednio id/osoba/pokolenie/nr ojca, nr matki). Nie wiem niestety jak to rozwiązać, żeby pobrać dalsze dane na podstawie tabeli osoby i utworzyć rekord 2/45/2/76,67,89,54 (id/osoba/pokolenie/nr dziadka, nr babki, nr dziadla, nr babki).
Myślę żeby wywołać jeszcze raz funkcję przodkowie, tylko nie za bardzo wiem jak ją przerobić, żeby było dobrze.
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.