• 11-12-2009, 21:22:10
    #1
    Merhabalar,
    Bir sitenin seo ayarları için etiket sistemi geliştirdim. Etiketleri veritabanına "," ile ayırarak kayıt ediyorum. Herşey iyi güzel de iş etiketleri siteye basmaya gelince sorunlar oluyor. count fonksiyonu ile arrayı sayıyorum ama count "1" den başladığı için tüm etiketler basılmıyor.
    İşte:
     function etiket_bastir_duyurular($id,$url)
     {
     	$sql=mysql_query("SELECT * FROM tag WHERE kat_id='$id'");
     	
     	while ($r=mysql_fetch_array($sql))
     	{
     	$gelen=stripslashes($r["etiket"]);
        $etiket=explode("<ingilizce>",$gelen);
     	$tr=$etiket["0"];
     	$en=$etiket["1"];
     	$bol_tr=explode(",",$tr);
        $bol_en=explode(",",$en);
     	
        if (_getLang()=="tr")
        {
        	for ($i=count($bol_tr); $i<=count($bol_tr); $i++)
        	{
        		return "<a href='$url'>".$bol_tr[$i]."</a>";
        		
        	}
        }//if bitis
        elseif (_getLang()=="en")
        {
        for ($i=count($bol_en)-1; $i<=count($bol_en); $i++)
        	{
        		return "<a href='$url'>".$bol_en[$i]."</a>";
        		
        	}//for bitis	
        	
        }//elseif bitis
     	}//while bitis
     	
     }
    Bu foksiyonla etiketleri çağırıyorum.
    Yardımcı olabilecek arkadaş varmı.
  • 11-12-2009, 21:43:42
    #2
      for ($i=count($bol_tr); $i<=count($bol_tr); $i++)
    hocam şurası bana garip geldi buradan anladığım kadarı ile şart sağlanmış oluyor doğal olarakta for döngünüz çalışmayacak ya da ben yanlış yorumladım mazur görün
  • 11-12-2009, 22:28:15
    #3
    Üyeliği durduruldu
    şu kısmı;
    for ($i=count($bol_tr); $i<=count($bol_tr); $i++)
    şöyle yapmayı deneyin;
    for ($i=0; $i<=count($bol_tr); $i++)
  • 11-12-2009, 23:17:54
    #4
    devturkeli adlı üyeden alıntı: mesajı görüntüle
    şu kısmı;
    for ($i=count($bol_tr); $i<=count($bol_tr); $i++)
    şöyle yapmayı deneyin;
    for ($i=0; $i<=count($bol_tr); $i++)
    Dediğinizi yaptım ama bu seferde ilk kelimeyi bastı diğer kelimeleri basmadı.
  • 11-12-2009, 23:28:00
    #5
    Üyeliği durduruldu
    norelpy adlı üyeden alıntı: mesajı görüntüle
    Dediğinizi yaptım ama bu seferde ilk kelimeyi bastı diğer kelimeleri basmadı.
    şöyle yemesi lazim;
    for ($i=0; $i<count($bol_tr); $i++)
    yemiyorsa bir üst satira

    print_r($bol_tr);
    yazip test ederseniz dizinin tamamini görme şansınız olur
  • 11-12-2009, 23:39:25
    #6
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    şöyle yemesi lazim;
    for ($i=0; $i<count($bol_tr); $i++)
    yemiyorsa bir üst satira

    print_r($bol_tr);
    yazip test ederseniz dizinin tamamini görme şansınız olur
    Öylede yemedi

    Yanlız çok garip bir olay oldu: "return " ifadesini "echo"'ya çevirce array'ın içindekilerin tamanını bastı yani sorun kalmadı. Benim anlamadığım "return" ile neden sadece ilk sırayı bastı :S
    Bi fikri olan varmı

    yeni fonsiyon şöyle oldu:
    function etiket_bastir_duyurular($id,$url)
     {
     	$sql=mysql_query("SELECT * FROM tag WHERE kat_id='$id'");
     	
     	while ($r=mysql_fetch_array($sql))
     	{
     	$gelen=stripslashes($r["etiket"]);
        $etiket=explode("&lt;ingilizce&gt;",$gelen);
     	$tr=$etiket["0"];
     	$en=$etiket["1"];
     	$bol_tr=explode(",",$tr);
        $bol_en=explode(",",$en);
        $say_tr=count($bol_tr);
        $say_en=count($bol_en);
       
     	
        if (_getLang()=="tr")
        {   
        	for ($i=0; $i<=$say_tr; $i++)
        	{
        		echo "<a href='$url'>".@$bol_tr["$i"]." </a>";
        		
        	}
        }//if bitis
        elseif (_getLang()=="en")
        {
        for ($i=0; $i<=$say_en; $i++)
        	{
        		echo "<a href='$url'>".@$bol_en["$i"]." </a>";
        		
        	}//for bitis	
        	
        }//elseif bitis
     	}//while bitis
     	
     }
  • 12-12-2009, 00:12:46
    #7
    Üyeliği durduruldu
    pardon ben fonksiyon olduğunu farketmemişim olay şöyle oluyor. return dediginizde fonksiyon değer döndermiş olur ve ilk return da fonksiyondan çıkmış olunur. durumun nedeni bu yani

    siz return dediginiz için ilk değerde döngüden cikmis ve fonksiyon sonlanmış oluyor.