login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem met weergeven van categorieen

Offline sicco - 17/01/2005 16:22 (laatste wijziging 19/01/2005 16:09)
Avatar van siccoLid 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:

  1. <?php
  2. include('config.php');
  3. $catID = $_GET['catID'];
  4. // nu de gegevens er zijn gaan we verbinding maken.
  5. if (!$show) {
  6. $sic7 = mysql_query("select * from forumhoofd order by id ASC");
  7. while ($sicsic = mysql_fetch_array($sic7)) {
  8.  
  9. $tsel = mysql_query("select * from forumcats where hoofd='$sicsic[id]' order by catID ASC");
  10. while ($cats = mysql_fetch_array($tsel)) {
  11.  
  12.  
  13. <table width ='100%'cellspacing='0' cellpadding=''>
  14. <tr>
  15. <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>
  16.  
  17. </td>
  18. </tr>
  19. </table>
  20. <table width ='100%'cellspacing='0' cellpadding='2'>
  21. <tr onMouseOver=\"this.bgColor='#ff9933';\" style=\"cursor:pointer;\" onMouseOut=\" this.bgColor='';\" onClick=\"window.location='index2.php?feu=forum&catID=$cats[catID]&show=yes';\">
  22.  
  23. <td width='10%' align='left' valign='top'><div align='top'><img src='$cats[catavatar]' border='0' align='top'> </div>
  24.  
  25. </td>
  26.  
  27. <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>
  28. <font color='#000000' size='1'><i>$cats[catbeschrijving]</i></td></tr></table>";
  29. }
  30.  
  31.  
  32.  
  33.  
  34. }
  35.  
  36. En dan komt hieronder de subcategorieen maar dat is voor mijn probleem niet belangrijk


Ik hoop dat jullie de fout zien, avb.
Sicco

4 antwoorden

Gesponsorde links
Offline Bart - 17/01/2005 17:09 (laatste wijziging 17/01/2005 17:09)
Avatar van Bart PHP expert
  1. <?php
  2. $tsel = mysql_query("select * from forumcats where hoofd='$sicsic[id]' order by catID ASC");
  3. ?>

Moet
  1. <?php
  2. $tsel = mysql_query("select * from forumcats where hoofd='$sicsic[id]' order by catID DESC LIMIT 0,4");
  3. ?>


EDIT: Dat ASC kan je wel weglaten, want dat doet mysql automatisch
Offline twopeak - 17/01/2005 18:18 (laatste wijziging 17/01/2005 18:19)
Avatar van twopeak Gouden medaille

PHP ver gevorderde
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)) )

ik hoop dat dat heeft geholpen?
Offline sicco - 18/01/2005 15:37 (laatste wijziging 21/01/2005 19:33)
Avatar van sicco Lid 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?
  1. <?php
  2. include('config.php');
  3.  
  4. $feu = mysql_query("select * from forumcats order by catID " );
  5. while ($fe = mysql_fetch_array($feu)) {
  6.  
  7. if($_SESSION['SICCO'] == "")
  8. { echo "<div align='right'><font size='2' color='#FFFFFF'><a href='index2.php?feu=inloggen'>Inloggen</a> | <a href='index2.php?feu=registreer'>Registreren</a>";}
  9. elseif($_SESSION['SICCO'] != "")
  10. { echo "<div align='right'><font size='2' color='#FFFFFF'><a href='index2.php?feu=bprofiel'>Bewerk Profiel</a> | <a href='index2.php?feu=uitloggen'>Uitloggen</a>";}
  11. ?>
  12. <?php
  13. include('config.php');
  14. $catID = $_GET['catID'];
  15. // nu de gegevens er zijn gaan we verbinding maken.
  16. if (!$show) {
  17. $sic7 = mysql_query("select * from forumhoofd order by id ASC");
  18. while ($sicsic = mysql_fetch_array($sic7)) {
  19. ?>
  20. <table width ='100%'cellspacing='0' cellpadding='0'>
  21. <tr>
  22. <td width='100%' align='center' valign='top' background='graphics/forum/titelbg.JPG'><font size='2' color='#FFFFFF'><b> <? echo "$sicsic[naam]<br>";?></b>
  23.  
  24. </td>
  25. </tr></table>
  26. <?
  27.  
  28. $tsel = mysql_query("select * from forumcats where hoofd='$sicsic[id]' order by catID " );
  29. while ($cats = mysql_fetch_array($tsel)) {
  30.  
  31. ?>
  32.  
  33. <table width ='100%'cellspacing='0' cellpadding='2'>
  34. <tr onMouseOver=\"this.bgColor='#ff9933';\" style=\"cursor:pointer;\" onMouseOut=\" this.bgColor='';\" >
  35. <td width='10%' align='left' valign='top'><div align='top'><img src='<? echo "$cats[catavatar]"; ?>' border='0' align='top'> </div>
  36. </td>
  37.  
  38. <td width='100%' onMouseOver=\"this.bgColor='#ff9933';\" style=\"cursor:pointer;\" onMouseOut=\" this.bgColor='';\"><? echo"<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>
  39. <font color='#000000' size='1'><i>$cats[catbeschrijving]</i>"; ?></td></tr></table>
  40.  
  41. <? }
  42.  
  43.  
  44.  
  45.  
  46. } }
  47. }
  48. $tsel11 = mysql_query("select * from forumtopics where catID='$catID' ORDER BY id desc");
  49. $aantal11 = mysql_num_rows($tsel11);
  50.  
  51. if ($show == yes && $aantal11 !="0") {
  52. $tsel1 = mysql_query("select * from forumtopics where catID='$catID' ORDER BY id desc");
  53. while ($cats1 = mysql_fetch_array($tsel1)) {
  54. $plaatje = "
  55. <a href='index2.php?feu=nieuwtopic&catID=$cats1[catID]'>
  56. &nbsp; <img src='graphics/forum/newtopic.gif' rf='graphics/forum/newtopicover.gif' border=0></a>";
  57. $topics .= "
  58.  
  59. <table width='100%' cellspacing='0' cellpadding='0'>
  60. <div align='left'>
  61.  
  62. <tr align='left' valign='top' onMouseOver=\"this.bgColor='#ff9933';\" onMouseOut=\" this.bgColor='';\">
  63. <div align='left'>
  64. <td width='5%' valign='top' onMouseOver=\"this.bgColor='#ff9933';\" onMouseOut=\" this.bgColor='';\"><div align='left'><font size='2' face='Arial, Helvetica, sans-serif'>
  65. <img src='/graphics/topicnaam.gif' border='0'> </font></td>
  66.  
  67. <td width='25%' onMouseOver=\"this.bgColor='#ff9933';\" onMouseOut=\" this.bgColor='';\"><div align='left'><font size='2' face='Arial, Helvetica, sans-serif' color='#000000'>
  68. <a href='index2.php?feu=topic&id=$cats1[id]&sub=reacties'><div align='left'><font size='2' face=' Arial, Helvetica, sans-serif' color='#000000'><b>$cats1[titel]</a></font></td>
  69.  
  70. <td width='25%' onMouseOver=\"this.bgColor='#ff9933';\" onMouseOut=\" this.bgColor='';\"><div align='left'><font size='2' face='Arial, Helvetica, sans-serif' color='#000000'>
  71. $cats1[door] </font></td>
  72.  
  73. <td width='25%'><font size='2' face='Arial, Helvetica, sans-serif' color='#000000'>
  74. $cats1[datum]</font></td>
  75.  
  76. </tr>
  77. </table>
  78.  
  79.  
  80.  
  81. ";
  82. }
  83.  
  84. ?>
  85.  
  86. <table width='100%' cellspacing='0' cellpadding='0'>
  87.  
  88. <tr>
  89. <div align='left'>
  90. <td width='5%' background='graphics/forum/titelbg.JPG'><div align='left'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>
  91. </font></strong></div></td>
  92. <td width='25%' background='graphics/forum/titelbg.JPG'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Titel:
  93. </font></strong></td>
  94. <td width='25%' background='graphics/forum/titelbg.JPG'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Door:
  95. </font></strong></td>
  96. <td width='25%' background='graphics/forum/titelbg.JPG'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Op:
  97. </font></strong></div></td>
  98.  
  99. </tr>
  100. <? print "$topics"; ?>
  101. <br>
  102. <? print "$plaatje"; ?>
  103. <?
  104. } elseif ($show == yes && $aantal11 =="0") {
  105. $tselsicco = mysql_query("select * from forumtopics where catID='$catID' ORDER BY id desc");
  106. while ($catsicco = mysql_fetch_array($tselsicco)) {
  107. }
  108. $plaatje2 = "
  109. <a href='index2.php?feu=nieuwtopic&catID=$catID'>
  110. &nbsp; <img name='toevoegen' src='graphics/forum/newtopic.gif' rf='graphics/forum/newtopicover.gif' border=0></a>";
  111.  
  112. ?>
  113.  
  114. <table width='100%' cellspacing='0' cellpadding='0'>
  115. <tr>
  116. <div align='left'>
  117. <td width='5%' background='graphics/forum/titelbg.JPG'><div align='left><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>
  118. </font></strong></div></td>
  119. <td width='25%' background='graphics/forum/titelbg.JPG'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Titel:
  120. </font></strong></td>
  121. <td width='25%' background='graphics/forum/titelbg.JPG'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Door:
  122. </font></strong></td>
  123. <td width='25%' background='graphics/forum/titelbg.JPG'><strong><font size='2' face='Verdana, Arial, Helvetica, sans-serif' color='#FFFFFF'>Op:
  124. </font></strong></div></td>
  125.  
  126. </tr></table>
  127. <table width='100%'>
  128. <tr>
  129. <div align='center'>
  130.  
  131. <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.
  132. </font></strong>
  133. <br>
  134. <br>
  135. <? print " $plaatje2"; ?>
  136.  
  137. </tr>
  138. </table>
  139. <br>
  140.  
  141.  
  142. <?
  143. }
  144. ?>
Offline Thomas - 21/01/2005 19:40 (laatste wijziging 21/01/2005 19:42)
Avatar van Thomas 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 .
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.226s