[php/mysql]1categorie, meerdere fora

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu deze 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
 <? include('header.php');
      include('config.php');
      mysql_connect("$host", "$user", "$pass"); 
      mysql_select_db("$db"); 
      $query = mysql_query("SELECT c.id, c.cat_naam, 
      f.* FROM forums f, cat c  where f.cat_id = c.id "); 
      while ($r = mysql_fetch_object($query)) { 
      $forum_id = $r->forum_id;
      $forum_name = $r->naam;
      $omschrijving - $r->omschrijving;
      $cat_name = $r->cat_naam;


      echo "  
    <tr>
      <td bgcolor=\"#FFFFFF\" colspan=\"3\" width=\"746\">$cat_name</td>
    </tr>
     <tr>
      <td bgcolor=\"#FFFFFF\" width=\"602\">$forum_name<br>$omschrijving</td>
      <td bgcolor=\"#FFFFFF\" width=\"79\">lastpost</td>
      <td bgcolor=\"#FFFFFF\" width=\"57\">modje</td>
      </tr>"; } ?>
    

Mijn probleem is dat hij bij elk forum dat weergegeven wordt ook de categorie erboven zet. Dit hoeft echter maar 1 keer. Het moet er dus zo uitzien:

-catnaam1
-forum1
-forum2
-catnaam2
-forum3
-forum4

maar ik heb:

-catnaam1
-forum1
-catnaam1
-forum2
-catnaam2
-forum3
-catnaam2
-forum4


Ik heb ook al GROUP BY geprobeerd maar dat werkt ook niet. Hoe krijg ik dit op de juiste manier?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 december 2002 @ 16:06:
Ik heb ook al GROUP BY geprobeerd maar dat werkt ook niet. Hoe krijg ik dit op de juiste manier?
Wat heb je dan juist van GROUP BY geprobeerd want volgens mij is dit op te lossen met een GROUP BY

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
$query = mysql_query("SELECT c.id, c.cat_naam, 
      f.* FROM forums f, cat c  where f.cat_id = c.id GROUP BY c.id ");

Nu krijg ik maar 1 forum per categorie te zien

offtopic:
btw ik zie dat ik 2x gepost heb, die andere kan verwijdert worden

[ Voor 29% gewijzigd door Verwijderd op 28-12-2002 16:11 ]


Acties:
  • 0 Henk 'm!

  • dbakker
  • Registratie: September 2002
  • Laatst online: 14-06-2024
Misschien een idee om eerst de categorieën uit de database te halen en dan per categorie de forums eruit te halen?

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 16-09 19:01

Tux

phpfreaky schreef op 28 December 2002 @ 16:12:
Misschien een idee om eerst de categorieën uit de database te halen en dan per categorie de forums eruit te halen?
Dat kost je dan wel veel query's als je veel categoriën hebt.

Zelf haal ik met 2 query's eerst categoriën en daarna fora op.
Draai ze in 2 arrays en zoek vervolgens met while, if en foreach de juiste fora bij de categorie.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Verwijderd

Mja heb je post nog eens beter gelezen ... Dit valt op te lossen via een innerselect, maar MySQL ondersteunt dit niet. Een oplossing in MySQL kan ik niet meteen opkomen

maar je kan wel in je PHP code je cat_name bijhouden en alleen printen als ie veranderd is.

en het is nog veel beter zoals phpfreaky zei:
phpfreaky schreef op 28 december 2002 @ 16:12:
Misschien een idee om eerst de categorieën uit de database te halen en dan per categorie de forums eruit te halen?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Het beste wat je kunt doen is sowieso sorteren op categorie. De uitkomst zal dan nog steeds zo zijn als je hem net had, maar de uiteindelijke weergave moet je in je php regelen. Je moet in een var bijhouden wat de vorige categorie was. Waneer deze categorie hetzelfde is als de vorige moet je deze niet afdrukken. Waneer beiden verschillend zijn moet je een categorie header (of wat je dan ook hebt) neerzetten.

Probeer het niet in 2 queries te doen. Het kan wel, maar is niet nodig.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • dbakker
  • Registratie: September 2002
  • Laatst online: 14-06-2024
Tux schreef op 28 december 2002 @ 16:15:
[...]
Zelf haal ik met 2 query's eerst categoriën en daarna fora op.
Draai ze in 2 arrays en zoek vervolgens met while, if en foreach de juiste fora bij de categorie.
Idd, dit bedoelde ik eigenlijk ook. Ik was nog ff opzoek naar een voorbeeldje maar kon zo snel ff nix vinden. PHPBB2 doet het geloof ik op deze manier.

[ Voor 48% gewijzigd door dbakker op 28-12-2002 16:18 . Reden: oops... iets vergeten ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben er uit, dit is het geworden:
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
 <? include('header.php');
      include('config.php');
      mysql_connect("$host", "$user", "$pass"); 
      mysql_select_db("$db"); 
      $query = mysql_query("SELECT DISTINCT c.id,  c.cat_naam,  f.* 
      FROM forums f, cat c  where f.cat_id = c.id"); 
      while ($r = mysql_fetch_object($query)) { 
      $forum_id = $r->forum_id;
      $forum_name = $r->naam;
      $omschrijving - $r->omschrijving;
      $cat_name = $r->cat_naam;
      $cat_id = $r->cat_id;
      if($cat_name == $last_cat)
      {
      }
      else
      { echo  "
     <tr> 
      <td bgcolor=\"#FFFFFF\" colspan=\"3\" width=\"746\"><b>$cat_name</b></td> 
    </tr>
     ";
      $last_cat = $cat_name;
      }
   echo "
      <tr>
      <td bgcolor=\"#FFFFFF\" width=\"602\">
       $forum_name<br>$omschrijving</td> 
      <td bgcolor=\"#FFFFFF\" width=\"79\">lastpost</td> 
      <td bgcolor=\"#FFFFFF\" width=\"57\">modje</td> 
      </tr>";  } ?>
   

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

code:
1
2
3
4
5
if ( conditie is waar ) {
   // doe niks
} else {
   // doe iets
}

kun je beter veranderen in
code:
1
2
3
if ( conditie is NIET waar ) {
   // doe iets
}

@ regel 13 t/m 23

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
  if($cat_name != $last_cat)
      {
      echo  "
     <tr> 
      <td bgcolor=\"#FFFFFF\" colspan=\"3\" 
      width=\"746\">$cat_name</td> 
    </tr>";  }
        $last_cat = $cat_name;

Kan natuurlijk ook ja :)

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 16-09 19:01

Tux

Ik ga ook even proberen of dat stukje codee van UltraV toe te passen is op mn eigen forum en of het veel snelheidswinst geeft :)

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.

Pagina: 1