[php/sql] In een sql loop iets opnieuw opvragen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 09-09 13:03
Voor mijn eigen website ben ik een cms aan het schrijven. Puur om dat ik het leuk vindt. Ik weet dus ook dat er tal van systemen zijn die precies kunnen wat ik wil.

Maar nu het volgende:
Ik maak gebruik van een database en daar is mijn db opgebouwd zoals in de onderstaande afbeelding.Afbeeldingslocatie: http://www.aquariumweb.nl/got/db.jpg
Nu vraag ik dus in mijn overzicht een gedeelte op uit cms_menu. Dit werkt ook goed met een loop.
Maar zoals je ziet kan de cel content_type drie waardes hebben namelijk 1,2 en 3. In mijn code bepaal ik dus welke stukje hij verder moet openen.
PHP:
1
2
3
if($row->content_type == 1){echo 'Ga verbinding maken met cms_content en vraag gegevens van parent_id op';}
if($row->content_type == 2){echo 'Ga verbinding maken met cms_products en vraag gegevens van parent_id op';}
if($row->content_type == 3){echo 'Ga verbinding maken met cms_cms_pages en vraag gegevens van parent_id op';}


Je krijgt nu een beetje de situatie dat je je query's een andere naam moet geven. Anders help je de loop om zeep.

Nu is mijn vraag zit ik zo een beetje op de goede weg, of moet ik mijn db aanpassen dat dit makkelijker gaat. Ik vermoedt dat php hier ook gewoon iets voor heeft, alleen hoe heet dit

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou er zoiets van maken (min of meer pseudo-code):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$result = mysql_query("SELECT * FROM cms_menu");
while ($menu_item = mysql_fetch_object($result)) {
  switch ($menu_item->content_type) {
    case 1:
      $menu_item->content = get_content($menu_item->content_id);
      break;
    case 2:
      $menu_item->content = get_product($menu_item->content_id);
      break;
    ...
  }
  ...
}