merhaba arkadaslar.
echo "<center><h2>Kategoriler</h2>";
$sql = mysql_query("SELECT * FROM forum_kategori");
echo "<div class='CSSTableGenerator'><table><tr><td><center><font color=red><b>Kategori Adı</td><td><center><font color=blue><b>Konu Sayısı</td></tr>";
while($cek = mysql_fetch_array($sql)){
$id = $cek['id'];
$sql = mysql_query("SELECT * FROM forum_konu WHERE kategoriid=$id");
$say = mysql_num_rows($sql);
echo "<tr>";
echo "<td><center><a href='index.php?sayfa=kategori&katid=$cek[id]' >$cek[kategoriadi]</a></td>";
echo "<td><center>$say</td>";
echo "</tr>";
}
echo "</table></div>";şu kodu kullandıgımda tabloda sınırsız bir döngü oluşuyor ve tablo sonsuza kadar uzuyor.
while döngüsü içerisinden
$sql = mysql_query("SELECT * FROM forum_konu WHERE kategoriid=$id");
$say = mysql_num_rows($sql);şu 2 kodu kaldırdıgımda sorun duzeliyor fakat bu sefer de kaçtane var sayılmıyor?
nasıl düzeltebiliriim
İki sorgunda da aynı değişkenleri kullandığın için oluyor. Birinde
$sql kullanmışsın while içinde farklı bir değişken kullan.
Ayrıca böyle gereksiz sorgu yaptıracağına kategorilerin sayılarını alırken count kullan. Tabloda misal 200 kategori varsa 200 defa konular tablosuna sorgu yapıyorsun ve her sorguda da ilgili kategorinin kayıtlarını aldırıyorsun her seferinde. Konular tablosunda binlerce kaydın olduğunu düşün. Birde anlık ziyaretçi fazlaysa o sistem yanıt vermez bir süre sonra.
Oysa basit bir join sorgusu ile tek sorguda alabilirsin.