Stamboom met mysql
Ik heb een vraag ik ben bezig met een hondenkennel website aan het maken
het probleem waar ik tegen aanloop is dat er ook een stamboom bij moet tot 5 generaties terug.
Hoe kan ik dit het beste met mysql doen.
Ik heb al een begin en dat is zo.
[table: parents]
id
parentsid
fotourl_male
fotourl_female
desc_male
desc_female
[table: stamboom]
id
parentsid
gen1_male
gen1_female
gen2_male_gen1_male
gen2_female_gen1_male
gen2_male_gen1_female
gen2_female_gen1_female
En ga zo maar door. Als ik het zo doe dan krijg ik op een gegeven moment natuurlijk een veld wat er zo uitziet.
gen5_male_gen4_male_gen3_male_gen2_male_gen1_male
vindt het een beetje onlogisch.
Hoe kan ik dit het beste aanpakken.
Met vriendelijke groet,
Thomas de Vries
In een tweede tabel zet je welk koppel de ouders zijn.
Het veld parents geeft dan aan welk "huwelijk" hij uit voort is gekomen en daar vindt je wie de vader en de moeder zijn.
Gewijzigd op 08/09/2012 22:39:11 door John D
Maar ik zit nu met het volgende en dat is de layout.
Ik zou het graag zo willen zien
----------------vadervaderbully
-----vaderbully
----------------omaomabully
Bully
----------------vadermoederbully
-----moederbully
----------------moedermoederbully
Is dit ubberhoupt op deze manier te regelen?
ik heb nu dit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$sql = mysql_query("
SELECT
parents.dogsid,
parents.parentsid,
honden.name,
honden.dogsid,
honden.parentsid
FROM
parents,honden
WHERE
parents.parentsid = honden.parentsid");
echo '<table width="100%" border="1">
<tr>
<td>Roxy:</td>
<td>
<table width="100%" border="0"><tr>';
$s = 1;
while($row = mysql_fetch_assoc($sql))
{
echo '<td>'.$row['name'].'</td>';
if($s >= 4)
{ echo '</tr><tr>'; $s = 0; } $s++;
}
echo '
</table>
</td>
</tr>';
echo '</table>';
?>
$sql = mysql_query("
SELECT
parents.dogsid,
parents.parentsid,
honden.name,
honden.dogsid,
honden.parentsid
FROM
parents,honden
WHERE
parents.parentsid = honden.parentsid");
echo '<table width="100%" border="1">
<tr>
<td>Roxy:</td>
<td>
<table width="100%" border="0"><tr>';
$s = 1;
while($row = mysql_fetch_assoc($sql))
{
echo '<td>'.$row['name'].'</td>';
if($s >= 4)
{ echo '</tr><tr>'; $s = 0; } $s++;
}
echo '
</table>
</td>
</tr>';
echo '</table>';
?>
Dit geeft het zo weer
-----vader
Roxy
-----moeder
Gewijzigd op 08/09/2012 23:40:01 door thomas de vries
Meestal wel gericht op mensen, maar voor dit idee heb kan je het ook voor honden gebruiken:
https://www.google.nl/search?client=opera&rls=nl&q=genealogie+php+script&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
De bovenste link geeft een mooie link aan: http://www.familytreephp.com/screenshots/
Vooral om dat die GEDCOM-bestanden kan inlezen.
Nu weet ik dat er diverse programma's zijn (als GD90 danwel GensData (Pro)) die heel makkelijk stambomen maken. Dat gaat gewoon offline.
Je exporteert naar GEDCOM, gooit hem in de map en het PHP-script doet de rest. Dat werkt veel beter dan de HTML-export-functie in die programma's.
Nu is GensData Pro niet gratis (legaal dan), maar volgens mij kost een eeuwige licentie maar 15 euro. Moet te doen zijn, toch?
Toevoeging op 09/09/2012 10:17:07:
Om je toch op weg te helpen met je eigen script:
Elk persoon/hond heeft een eigen ID. Bij elke hond geef je alleen vader_id en moeder_id aan. Meer relaties niet.
Met PHP knoop je dat aan elkaar.
Honden kennen natuurlijk geen huwelijken, maar als er een kind is met een vader_id en moeder_id, dan weet men dus dat er gekruist is tussen die twee. Die kruising hoef je niet apart te vermelden in een tabel oid.
En hoe haal je dan alle zusjes broetjes op?
Meestal wordt dan alleen de vader-lijn gevolgd (althans: bij mensen ivm achternaam): in dat geval: wie hebben hetzelfde vader_id?
Kan je dus nooit je stief-broertjes vinden zo. In genealogie volg je familiebanden en die bestaan uit alle relaties van de pap de mam.
Halfbroertjes hebben dezelfde vader.
Maar wil je halfbroertjes hebben van dezelfde moeder, kan dat natuurlijk ook gewoon. Kwestie van naar vader_id en moeder_id kijken. Zo moeilijk is dat niet.
Echter, (en dat geldt bij mensen): je kan maar tot 1 geslacht behoren: dat van je vader.
Dus een halfbroertje via de moeder is niet in hetzelfde geslacht.
Stiefkinderen (dus niet meer bij zijn biologische ouders) wordt inderdaad niet in de genealogie opgenomen. Ook in in de stamboom. Tenslotte blijven stiefouders de stiefouders (en worden ze nooit biologisch: ook niet in de stamboom).
En waar ik spreek over stief- danwel halfbroertjes kan het ook over stief-/halfzusjes gaan.