Hey mensen van Sitemasters.
Ik heb een klein probleempje.
Het zit namelijk zo.
Ik heb voor mijn forum een hoofdcategorie, subcategorie en natuurlijk topics.
Ik wil nu dat je de hoofdcategorie naam ziet en daaronder de subcategorieen die daar bij horen.
Maar wat doet hij nu, hij laat de hoofdcategorie naam zien, daaronder 1 subcategorie van die hoofdcategorie en daaronder weer de hoofdcategorie naam en daaronder weer maar 1 subcategorie.
Maar ik wil dus dat je de hoofdcategorie naam ziet en dan alle subcategorieen ipv als je bijv 4 subcategorieen hebt in de hoofdcategorie dat hij dan ook 4 keer de hoofdcategorie naam laat zien.
Hier de code:
<?php
include('config.php');
$catID = $_GET['catID'];
// nu de gegevens er zijn gaan we verbinding maken.
if (!$show) {
$sic7 = mysql_query("select * from forumhoofd order by id ASC");
while ($sicsic = mysql_fetch_array($sic7)) {
$tsel = mysql_query("select * from forumcats where hoofd='$sicsic[id]' order by catID ASC");
while ($cats = mysql_fetch_array($tsel)) {
print "
<table width ='100%'cellspacing='0' cellpadding=''>
<tr>
<td background='graphics/forum/titelbg.JPG' width='100%' align='center' valign='top'><div align='top'><font size='2' color='#FFFFFF'><b>$sicsic[naam]<br> </div>
</td>
</tr>
</table>
<table width ='100%'cellspacing='0' cellpadding='2'>
<tr onMouseOver=\"this.bgColor='#ff9933';\" style=\"cursor:pointer;\" onMouseOut=\" this.bgColor='';\" onClick=\"window.location='index2.php?feu=forum&catID=$cats[catID]&show=yes';\">
<td width='10%' align='left' valign='top'><div align='top'><img src='$cats[catavatar]' border='0' align='top'> </div>
</td>
<td width='100%' onMouseOver=\"this.bgColor='#ff9933';\" style=\"cursor:pointer;\" onMouseOut=\" this.bgColor='';\" onClick=\"window.location='index2.php?feu=forum&catID=$cats[catID]&show=yes';\"><a href=index2.php?feu=forum&catID=$cats[catID]&show=yes><img src='/graphics/catnaam.gif' border='0'><font color='#FFFFFF' size='2'><b>$cats[catnaam]</b></a><br>
<font color='#000000' size='1'><i>$cats[catbeschrijving]</i></td></tr></table>";
}
}
En dan komt hieronder de subcategorieen maar dat is voor mijn probleem niet belangrijk
<?php
include('config.php');
$catID=$_GET['catID'];
// nu de gegevens er zijn gaan we verbinding maken.
if(!$show){
$sic7=mysql_query("select * from forumhoofd order by id ASC");
hmmm, ik heb heel je code niet helemaal doorgelezen maar...
je kan dit op meerdere manieren bereiken:
1. (wat jij hebt gedaan) maak een query waarin je alle hoofdcategoriën ophaalt, en per hoofdcategorie haal je met een nieuwe query de subcategoriën voor deze categorie op.
2. je steekt alle categoriën in een array; je haalt alle subcategoriën en tot welke hoofdcategorie ze behoren uit de db en je verzamelt ze in 1 array door middel van sleutels en variabelen. vb: Array("categorie1" => Array("subcat1", "subcat2"), "categorie2" => Array("subcat3", "subcat4"));
3.Je haalt alle hoofdcategoriën in een array. Dan haal je alle subcategoriën op, die je sorteert op hoofdcategorie. Zo kun je je code door de lijst van subcategoriën doorlopen en controleren of de hoofdcategorie veranderd is (als ze veranderd is, moet er een nieuwe hoofdcategorietitel komen, als ze niet veranderd is mag de subcat titel komen)
[edit] zat er met mijn antwoord helemaal naast...
De fout in jouw scriptje is dat je met het eerste systeem werkt, waarin in de herhaling van het aantal hoofdcategoriën gebeurt een tweede herhaling, namelijk het aantal subcategoriën.
Jij print de hoofdcategorie af in die tweede herhaling af.
wil je dat die enkel een maal afgedrukt wordt dan moet je die laten afdrukken buiten je while-lus (dus VOOR de $cats = mysql_fetch_array($tsel)) )
Mijn probleem is nu dat hij de tabel en alles nu goed laat zien.
Maar hij herhaalt hem steeds.
Mijn vorige probleem was dat hij de categorieen en subcategorieen niet goed liet zien, dat doet hij nu wel maar hij herhaalt hem in totaal 13 keer :S
Mischien weet een van jullie hoe dat komt?
<strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Helaas, geen topics in deze categorie.<br> Klik <a href=\"javascript:history.back(1)\">hier</a> om terug te gaan.
Thomas - 21/01/2005 19:40 (laatste wijziging 21/01/2005 19:42)
Moderator
Jeezz...
Er worden dingen herhaald... wat zorgt voor herhaling ? for- en while-lussen. Do the math.
Spring eerst eens fatsoenlijk in, haal ALLE HTML uit je echo-statements, verkas je stijl-opmaak naar een CSS-bestand of sloop je opmaak er voorlopig helemaal uit, want deze belemmert je bij het in orde maken van hoe je pagina zou moeten werken, en dan praten we verder. Niemand heeft zin om door een lap brak opgemaakte HTML heen te ploeteren om iemand te helpen die zelf niet de moeite heeft genomen om het een en ander netjes aan te pakken. Ik in ieder geval niet.
Haal eerst eens al je HTML er uit, en echo dan bijvoorbeeld één string "hier komt de navigatie", "hier staat een topic" et cetera.
Echt, zo ben je jezelf in je vingers aan het snijden omdat je "alles tegelijkertijd" wilt doen... Maak het jezelf gemakkelijk. Goede programmeurs zijn lui .