Stambomen systeem
Maar nu het volgende, Een soort van 'klant' van mij, wil graag een website...
Alleen ik kom er niet uit hoe ik dit moet gaan aanpakken, nu het volgende:
Je komt als bezoeker op de index, vanaf daar heb je 3 keuze's:
1. Jachthonden
2. Engelse Bulddogs
3. Schapen
vanaf daar moet hij gaan splitsen, waar ik eigelijks op doel is dat het totaal beeld een soort van stamboom systeem wordt...
dus pagina achter pagina achter pagina...en ga zo maar door...
Maar hoe krijg ik dit voor elkaar i.s.m. DataBase ?
Alvast Bedankt...
Gewijzigd op 01/01/1970 01:00:00 door Bart Tuma
Je maakt een geintje toch ?
Nee, De klant wil zoiets graag hebben...
id, naam, parent
1, zoogdier, 0
2, insect, 0
3, lieveheersbeestje, 2 <-- ...beestje is een insect
4, spin, 2
5, vogelspin, 4 <-- vogelspin valt onder spin.
* Twan, wat was eigenlijk het doel van jouw opmerking?
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
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
31
32
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
31
32
<?
$query = 'SELECT * FROM _hondjes';
$result = mysql_query($query);
if ( !mysql_num_rows($result) ) {
print 'Aaahh, er zijn geen hondjes';
} else {
$hondjes = array(); # ik weet dat overbodig is, maja
while ( $row = mysql_fetch_assoc($result) ) {
$hondjes[$row['VELDNAAMVANSOORTHOND']][$row['HOND_ID'] = $row;
}
}
?>
en dan kan je pff, miss met divjes ( ik geef maar even ter idee ) zoiets doen
<?
foreach ( $hondjes as $soorthond ) {
# iets met een soorthond naam uit een andere tabel maar ben te lui om die koint te "verzinnen"
foreach ( $soorthond as $hond ) {
printf('<div class="liefhondje" id="hondje%d">%s</div>',$hond['HOND_ID'],ucfirst($hond['NAAMVANHONDVELD']));
}
}
?>
EDIT: GEEN PADDING natuur;ijk aaargg, ik bedoel position absolute, steeds beetje meer afstand per ID in css ?
( p.s. beetj3e gaar allemaal maar tis ook een boutpost van je, je hebt geluk dat ik me zo verveel :)
$query = 'SELECT * FROM _hondjes';
$result = mysql_query($query);
if ( !mysql_num_rows($result) ) {
print 'Aaahh, er zijn geen hondjes';
} else {
$hondjes = array(); # ik weet dat overbodig is, maja
while ( $row = mysql_fetch_assoc($result) ) {
$hondjes[$row['VELDNAAMVANSOORTHOND']][$row['HOND_ID'] = $row;
}
}
?>
en dan kan je pff, miss met divjes ( ik geef maar even ter idee ) zoiets doen
<?
foreach ( $hondjes as $soorthond ) {
# iets met een soorthond naam uit een andere tabel maar ben te lui om die koint te "verzinnen"
foreach ( $soorthond as $hond ) {
printf('<div class="liefhondje" id="hondje%d">%s</div>',$hond['HOND_ID'],ucfirst($hond['NAAMVANHONDVELD']));
}
}
?>
EDIT: GEEN PADDING natuur;ijk aaargg, ik bedoel position absolute, steeds beetje meer afstand per ID in css ?
( p.s. beetj3e gaar allemaal maar tis ook een boutpost van je, je hebt geluk dat ik me zo verveel :)
Gewijzigd op 01/01/1970 01:00:00 door Toine vd P
Maar moet het als één grote stamboom op het scherm getoond worden (wat lastig is, want dan moet je gaan rekenen met ruimte) of mag het ook gewoon een soort van chained dropdown-menu (hey, een google buzzword term!) worden waarbij je steeds specifieker kiest. En moeten er dan ook uiteindelijk hondjes aan gehangen worden, of blijft het bij een overzicht van soorten?
en voor de honden ook\
als je hun naam print in de div
en je doet met css
#hondje1 { top: 10px; }
#hondje2 { top: 20px; }
#hondje3 { top: 30px; }
#hondje4 { top: 40px; } ( b.v. )
dan kijg je toch echt wel een stamboom op je scherm .
Maar hij is maar 1 niveau diep. Zou je het even beschouwen als een echte stamboom, dan zou jouw stamboom alleen maar ouders - kinderen kunnen weergeven. Je zou een 3e, en een 4e etc foreach-lus moeten toevoegen om grootouders en overgrootouders ook weer te kunnen geven. Op dat moment wordt je css een stuk lastiger, omdat je nu de ouders op de juiste plek moet positioneren, en deze positie is afhankelijk van alle kinderen daaronder (ervan uitgaande dat je de ouders in het midden boven de kinderen wilt hebben)
dus:
1. Jachthonden -> eigen stamboom
2. Engelse Bulddogs -> eigen stamboom
3. Schapen -> eigen stamboom
Maar ik neem aan dat ik dat dan in 3 verschillende tabellen moet gaan doen ? of is dat omslachtig ?...
er komt geen drop-down, gewoon een menu aan de linker kant, die dan de desbetreffende stam selecteerd.
Er worden weer honden aan gehongen, stel a krijgt puppies en een van die puppies krijgt later ook weer puppies en dat dat dan zo uitgebreid wordt...
edit:
at Twan: begrijp ik het goed dat je nu een stamboom aan het maken bent mer css ? zo ja, dat hoeft niet...het zijn gewoon linkjes ik hoef er zeg maar geen plattegrond van te hebben...er komt een menu aan de zijkant met linkjes...
Gewijzigd op 01/01/1970 01:00:00 door Bart Tuma
Jelmer schreef op 26.03.2008 23:05:
Geen lekker voorbeeld, zoogdier, insect en spin zijn geen beesten, maar soorten dieren, een diergroep. Binnen deze groepen zijn er dan weer andere groepen en onder deze groepen komen dan uiteindelijk de beestjes zelf aan bod.Heel simpel eigenlijk: Je neemt 1 tabel, 3 kolommen: id, naam en parent. parent nummer 0 is de top. Daarna komen onderliggende soorten met parent de waarde van de bovenliggende stam z'n id.
id, naam, parent
1, zoogdier, 0
2, insect, 0
3, lieveheersbeestje, 2 <-- ...beestje is een insect
4, spin, 2
5, vogelspin, 4 <-- vogelspin valt onder spin.
* Twan, wat was eigenlijk het doel van jouw opmerking?
id, naam, parent
1, zoogdier, 0
2, insect, 0
3, lieveheersbeestje, 2 <-- ...beestje is een insect
4, spin, 2
5, vogelspin, 4 <-- vogelspin valt onder spin.
* Twan, wat was eigenlijk het doel van jouw opmerking?
Zie Wikipedia voor nadere uitleg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
# alle div's absoluut enzo natuurlijk
print '<div style="width: 1000px;">';
foreach ( $hondjes as $soorthond ) {
# iets met een soorthond naam uit een andere tabel maar ben te lui om die koint te "verzinnen"
$breedte = 900 / count($hondjes);
$marginTop = $soort_teller * 100;
printf('<div style="width: %dpx; margin-right: 10px;">soort %d</div>',$breedte,$soort_teller);
foreach ( $soorthond as $hond ) {
$breedte2 = 900 / count($soorthond);
printf('<div style="width: %dpx; top: %dpx; margin-right: 10px;">%s</div>',$breedte2,$marginTop,ucfirst($hond['NAAMVANHONDVELD']));
}
$soort_teller++;
}
print '</div>';
?>
[\code]
EDIT: OCH, Wacht ff, Ja, inderdaad... Hmmm :( Uitgeluld
# alle div's absoluut enzo natuurlijk
print '<div style="width: 1000px;">';
foreach ( $hondjes as $soorthond ) {
# iets met een soorthond naam uit een andere tabel maar ben te lui om die koint te "verzinnen"
$breedte = 900 / count($hondjes);
$marginTop = $soort_teller * 100;
printf('<div style="width: %dpx; margin-right: 10px;">soort %d</div>',$breedte,$soort_teller);
foreach ( $soorthond as $hond ) {
$breedte2 = 900 / count($soorthond);
printf('<div style="width: %dpx; top: %dpx; margin-right: 10px;">%s</div>',$breedte2,$marginTop,ucfirst($hond['NAAMVANHONDVELD']));
}
$soort_teller++;
}
print '</div>';
?>
[\code]
EDIT: OCH, Wacht ff, Ja, inderdaad... Hmmm :( Uitgeluld
Gewijzigd op 01/01/1970 01:00:00 door Toine vd P
Kijk ook eens naar http://quirksmode.org/familytree/tree.html. Misschien kan je er ideeën mee opdoen (of lekker afkijken ;) )
id | parent_id | name
-------------------------
1 | 0 | Jachthonden
2 | 0 | Engelse bulldogs
3 | 0 | Schapen
4 | 3 | Zwarte schapen
5 | 3 | Witte schapen
6 | 1 | Paris' poodle
.. en wat presentatie moet je een afweging maken tussen presentatie en (technische haalbaarheid)
Je kan misschien een soort kruimelpad achtig iets maken, da's logisch voor de end-user en handig te maken voor jou.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Ik had nog even na gezocht en toen kwam ik bij dit artikel uit...dacht post het even...
ik ben ieders geval uit de brand nu...allemaal bedankt! =D
dus: