<?
$query = "SELECT COUNT(*) FROM forsale_content WHERE category='$category' AND status='online'";
$numentries = mysql_query($query) or die("Select Failed!");
$numentry = mysql_fetch_array($numentries);
?>

Sommige categoriën leest hij wel, anderen niet. Ook al zitten er reeds records in. Hij geeft aan dan numentries 0 is terwijl er wel degelijk iets in zit.

Het lijkt me wel of hij problemen heeft met tekens zoals & of spaties binnen een categorie. Ik snap niet wat het probleem kan zijn. Juist omdat hij de gegevens binnen de ene categorie wel laat zien en de andere dan weer niet.
Meestal heb je zo'n tabel voor categorieen:

id
parent_id
naam

Nu kun je doen:

SELECT count(*) FROM categorieen WHERE parent_id = [nummer]

De waarde van parent_id zou je kunnen zien als menu.
Geef een aggregate functie als count() ook altijd een alias mee. Op die manier kun je hem straks ook op een associatieve manier benaderen:

SELECT COUNT(*) AS aantal
FROM tabel


Daarnaast is $numentries een resultaat set, die zul je dus eerst nog moeten fetchen en die kun je dus niet zomaar echoen.
Martijn ok maar hij moet alle categoriën laten zien of heb ik het niet goed begrepen dan? Telkens dus als ik één toevoeg via het beheersysteem.

Blanche, ok thx.

Hij doet het alleen bij de categoriën waarin bv. een + teken en & teken staan. Gewone tekst laat hij wel zien.

Je ziet bv. huizen & chalets (5). Er zitten 5 items in en toch als je de categorie opent zie je (0) staan.

De volledige code is:

<?
$sql = "SELECT DISTINCT category FROM forsale_content ORDER BY category ASC";
$result = mysql_query($sql);
while ($record = mysql_fetch_object($result)) {
$query = "SELECT COUNT(*) FROM forsale_content WHERE category='$record->category' AND status='online'";
$numentries = mysql_query($query) or die("Select Failed!");
$numentry = mysql_fetch_array($numentries);
?>


<li><a href="?q=cat-view&amp;category=<? echo"$record->category";?>"><? echo "$record->category";?></a> <font class="small">(<? echo $numentry[0]; ?>)</font><p></p></li>

<?
}
?></ul>

Reageren