• 29-06-2013, 23:16:49
    #1
    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
  • 29-06-2013, 23:41:43
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bekir adlı üyeden alıntı: mesajı görüntüle
    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.
  • 29-06-2013, 23:56:00
    #3
    [/COLOR]
    acayip adlı üyeden alıntı: mesajı görüntüle
    İ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.
    peki bir örnek verebilirmisiniz

    konuların sayılacagı talbo adı : forum_konu
    konuların sayılacagı ortak id sutun adı : kategoriid
  • 30-06-2013, 00:10:00
    #4
    	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'];
    	$sqll = mysql_query("SELECT * FROM forum_konu WHERE kategoriid=$id");
    	$say = mysql_num_rows($sqll);			
    	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>";
    şeklinde dene...
  • 30-06-2013, 00:18:46
    #5
    sorgu sayısı çok fazla ise de hata verir , sen kodları tam araştırmadım ama 500 binden fazla kayıt çekiorsan sql düzenlemek gerekir
  • 30-06-2013, 00:20:23
    #6
    digiklan adlı üyeden alıntı: mesajı görüntüle
    	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'];
    	$sqll = mysql_query("SELECT * FROM forum_konu WHERE kategoriid=$id");
    	$say = mysql_num_rows($sqll);			
    	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>";
    şeklinde dene...
    teşekkürler

    osal adlı üyeden alıntı: mesajı görüntüle
    sorgu sayısı çok fazla ise de hata verir , sen kodları tam araştırmadım ama 500 binden fazla kayıt çekiorsan sql düzenlemek gerekir
    okadar kayıt olunca bakarız orasına teşekkürler hepinize
  • 30-06-2013, 00:22:46
    #7
    Bekir adlı üyeden alıntı: mesajı görüntüle
    peki bir örnek verebilirmisiniz

    konuların sayılacagı talbo adı : forum_konu
    konuların sayılacagı ortak id sutun adı : kategoriid
    Arkadaşım forum hata verip duruyor geç yazdım. Konular tablosunda primary olan sütun ne ise konuid yerine onu yaz aşağıda:

    $sql = 'select k.kategoriid, k.kategoriadi, count(h.konuid) as sayi
    from forum_kategori k, forum_konu h
    where k.kategoriid = h.konuid
    group by h.kategoriid';
    Bu sorgunun sonucunda kategori id, kategori adı, konu sayısı olarak 3 alan döner. Göreceğin gibi tek sorguyla almış olursun.
  • 30-06-2013, 00:28:10
    #8
    Amaç sadece saymaksa;

     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>"; 
        $say = 0;
    	while($cek = mysql_fetch_array($sql)){ 
    	$say++;
        $id = $cek['id'];            
        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 'Toplamda '.$say.' adet mevcut.';
         
        echo "</table></div>";
  • 30-06-2013, 00:28:25
    #9
    digiklan adlı üyeden alıntı: mesajı görüntüle
    	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'];
    	$sqll = mysql_query("SELECT * FROM forum_konu WHERE kategoriid=$id");
    	$say = mysql_num_rows($sqll);			
    	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>";
    şeklinde dene...
    osal adlı üyeden alıntı: mesajı görüntüle
    sorgu sayısı çok fazla ise de hata verir , sen kodları tam araştırmadım ama 500 binden fazla kayıt çekiorsan sql düzenlemek gerekir
    acayip adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım forum hata verip duruyor geç yazdım. Konular tablosunda primary olan sütun ne ise konuid yerine onu yaz aşağıda:

    $sql = 'select k.kategoriid, k.kategoriadi, count(h.konuid) as sayi
    from forum_kategori k, forum_konu h
    where k.kategoriid = h.konuid
    group by h.kategoriid';
    Bu sorgunun sonucunda kategori id, kategori adı, konu sayısı olarak 3 alan döner. Göreceğin gibi tek sorguyla almış olursun.

    teşekkürler öğrendiğim iyi oldu seviyorum hepinizi