Hallo,

Ik heb het volgende voorbeeld:

$cats = array();
$select_cats = mysql_query("SELECT id, naam, url FROM categorie");
while($cat = mysql_fetch_assoc($select_cats))
{
  $producten = array();
  $select_producten = mysql_query("SELECT id, naam, url FROM producten WHERE cat_id  = ". $cat['id'])
  while($product = mysql_fetch_assoc($select_producten))
  {
     $producten[$product['id']] = $product;
  }

   $cats[$cat['id']]['producten'] = $producten;
}




Is het bovenstaande voorbeeld ook mogelijk met 1 query?

Alvast bedankt.

Met vriendelijke groet,

Patrick
Hiervoor zijn Joins. Prachtige manier om zoveel mogelijk info uit een database te halen met maar 1 query.
<?php
$select_producten = mysql_query("
SELECT
categorie.id AS cat_id,
categorie.naam AS cat_naam,
producten.id,
producten.naam,
producten.url
FROM
categorie
JOIN producten ON producten.cat_id = categorie.id
WHERE
categorie.id = ". $cat['id']);
?>
Zoek eens tutorials naar MYSQL JOIN.

Voer dit eens uit (bv. in phpMyAdmin)


SELECT 
  categorie.id AS categorie_id, categorie.naam AS categorie_naam, categorie.url AS categorie_url, 
  producten.id AS producten_id, producten.naam AS producten_naam, producten.url AS producten_url
FROM categorie
INNER JOIN producten ON producten.cat_id = categorie.id
Volgens mij zou dit hem al moeten zijn:
Ik weet niet wat de toegevoegde waarde is van extra dimensie ['producten'] in de array?

<?php
$cats = array();

$select_producten = mysql_query("SELECT id, naam, url FROM producten");

while($product = mysql_fetch_assoc($select_producten))
{
$cats[$product['cat_id']]/*['producten']*/['id'] = $product;
}
?>
Met INNER JOIN krijg ik wat ik zocht.
Bedankt!

Reageren