Hallo

Ik geraak niet meteen uit het volgende probleem. Ik heb dus een menu waarbij sommige pagina's subpagina's hebben en andere niet. Een voorbeeldje:

Home
- Over ons
Diensten
- Wat?
- Prijzen
Contact

Deze zaken wil ik dus naar het scherm schrijven. Hiervoor maak ik gebruik van 2 tabellen. Eén met de hoofdpagina's en één met de subpagina's. Een link tussen beide tabellen leg ik zo:

* In de tabel hoofdpagina's maak ik een veld dat aangeeft of er bij de corresponderende hoofdpagina een subpagina is. Een 0 geeft aan dat er geen subpagina is, een 1 geeft aan dat er wel één is.
* In de tabel subpagina's is er een veld dat aangeeft welke subpagina past bij welke hoofdpagina.

Dit voorbeeld zal het (hopelijk ) verduidelijken:
Tabel Hoofdpagina's:
http://img130.imageshack.us/img130/8528/prtscrdb1bk3.jpg
Tabel Subpagina's:
http://img505.imageshack.us/img505/4325/prtscrdb2rk8.jpg

Tot en met hier lukt het mij door gebruik te maken van twee queries. De eerste query selecteert alle hoofdpagina's samen met hun subpagina's. De tweede query selecteerd alle hoofdpagina's die geen subpagina's hebben.

Echter, nu moeten de gegevens geselecteerd worden op het zgn. 'volgordeid, een veld dat aanwezig is in mijn tabel. Dat lukt mij niet aangezien ik met twee queries werk (en dus met twee While-lussen).

Kan iemand mij verder helpen?

Alvast bedankt
Is het een idee om alles toch in één tabel te zetten? Dan kun je gemakkelijk met één eenvoudige query een menu-lijstje maken
Neem 1 tabel en zet daarin ook het parent_id op. Een record zonder parent_id is een parent (hoofdpagina) en met parent_id (subpagina) is een child. Een child kan echter ook weer een parent zijn van een ander record. Zo kun je oneindig doorgaan zonder dat je de database op de schop hoeft te nemen.

- id (INT, auto_increment)
- id_parent (INT, foreignkey op id)
- titel
- tekst

Gebruik uiteraard innoDB van MySQL of PostgreSQL. Anders kun je geen foreignkey's gebruiken en hangt de boel als los zand aan elkaar.
En hoe moet je de gegevens dan naar het scherm schrijven? M.a.w. hoe zit de while-lus in elkaar?
Bedankt! Dat zal me wel verder helpen!

mod-edit:

Bumpen

Twee of meer keer achter elkaar in je eigen topic posten, voordat andere forumleden gereageerd hebben, heet "bumpen".
Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan.
Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten.
Gebruik het knopje om je tekst aan te passen indien nodig.

Mijn tabel ziet er nu als volgt uit:
http://img502.imageshack.us/img502/6968/prtscrdb5th4.jpg

En mijn code zo:
<?php

include("connect.php");
$query = mysql_query("SELECT titel, parent_id FROM paginas WHERE parent_id IN (SELECT paginaid FROM paginas WHERE parent_id =0) OR parent_id =0") or die (mysql_error());
echo "<table>";
while($row = mysql_fetch_row($query))
{
if($row['1'] == 0) {
echo "<tr><td>Hoofdpagina: ".$row['0']."</td></tr>";
} else {
echo "<tr><td>&nbsp;&nbsp;Subpagina: ".$row['0']."</td></tr>";
}

} // Einde While
echo "</table>";

?>

Maar hoe geef ik alle informatie nu precies weer, zodat de subpagina's onder hun hoofdpagina's komen te staan?

Kan iemand mij verder helpen?

Alvast bedankt
ik denk dat je met een union zou moeten werken met union kan je meerdere querys aan elkaar knopen.
ikzelf kan het niet (jammer genoeg) maar misschien weet iemand anders dit je kan er zelf een op zoeken misschien
Dat red je niet in 1 query. Mijn tactiek toen was:

Maak een query waarin je de hoofdpagina's ophaalt. In de while loop waarin je de resultaten fetcht maak je een query waarin je per hoofdpagina de subpagina's ophaalt.

Reageren