• 11-06-2014, 10:46:12
    #1
    Veritabanına kayıt ettiğim etiketleri parçalayıp linklendirmeye çalışıyorum fakat sadece son etiketin sonucunu veriyor. Neden böyle birşey yapabilir?

    Kayıtlı etikerlerim: tag1,tag2,tag3,tag4

    fonksiyonum

    function tags ($data) {
    	$tag = explode(',', $data); 
    	for ($i=0; $i<=count($tag); $i++):
    		if(isset($tag[$i])):
    			$showtag= '<a href="search.php?tag='.$tag[$i].'">#'.$tag[$i].'</a>'; 
    		endif;
    	endfor;
    	return $showtag;
    }
  • 11-06-2014, 10:58:13
    #2
    Kiv
    Üyeliği durduruldu
    bunu echo edip kac cikiyor bakabilirsin: count($tag); sanirim bundan kaynakli olabilir.
  • 11-06-2014, 10:59:51
    #3
    Üyeliği durduruldu
    loc adlı üyeden alıntı: mesajı görüntüle
    Veritabanına kayıt ettiğim etiketleri parçalayıp linklendirmeye çalışıyorum fakat sadece son etiketin sonucunu veriyor. Neden böyle birşey yapabilir?

    Kayıtlı etikerlerim: tag1,tag2,tag3,tag4

    fonksiyonum

    function tags ($data) { $tag = explode(',', $data); for ($i=0; $i<=count($tag); $i++): if(isset($tag[$i])): $showtag= '<a href="search.php?tag='.$tag[$i].'">#'.$tag[$i].'</a>'; endif; endfor; return $showtag; }

    $showtag .= '<a href="search.php?tag='.$tag[$i].'">#'.$tag[$i].'</a>';
    ile deneyin.
  • 11-06-2014, 11:02:44
    #4
    Üyeliği durduruldu
    loc adlı üyeden alıntı: mesajı görüntüle
    Veritabanına kayıt ettiğim etiketleri parçalayıp linklendirmeye çalışıyorum fakat sadece son etiketin sonucunu veriyor. Neden böyle birşey yapabilir?

    Kayıtlı etikerlerim: tag1,tag2,tag3,tag4

    fonksiyonum

    function tags ($data) {
    	$tag = explode(',', $data); 
    	for ($i=0; $i<=count($tag); $i++):
    		if(isset($tag[$i])):
    			$showtag= '<a href="search.php?tag='.$tag[$i].'">#'.$tag[$i].'</a>'; 
    		endif;
    	endfor;
    	return $showtag;
    }
    function tags ($data) {
       $tag = explode(',', $data); 
       $c = count($tag);
       for ($i=0; $i<=$c; $i++):
          if(isset($tag[$i])):
             $showtag= '<a href="search.php?tag='.$tag[$i].'"># '.$tag[$i].'</a>'; 
    		 echo $showtag;
          endif;
       endfor;
       
    }
    
    echo tags("abc,cbd");
  • 11-06-2014, 11:02:49
    #5
    spider58 adlı üyeden alıntı: mesajı görüntüle
    $showtag .= '<a href="search.php?tag='.$tag[$i].'">#'.$tag[$i].'</a>';
    ile deneyin.
    Çalıştı fakat Notice: Undefined variable: showtag in hatası verdi.

    Onu da for döngüsünün dışında $showtag=""; ekleyerek çözdüm. Teşekkür ederim yardımın için.
  • 11-06-2014, 11:04:53
    #6
    Üyeliği durduruldu
    loc adlı üyeden alıntı: mesajı görüntüle
    Çalıştı fakat Notice: Undefined variable: showtag in hatası verdi.

    Onu da for döngüsünün dışında $showtag=""; ekleyerek çözdüm. Teşekkür ederim yardımın için.
    etişket girilmeyenlerde verebilir.

    $tag = explode(',', $data);
    satırının üstüne

    $showtag="";
    ekleyebilirsiniz

    edit: düzeltmişsiniz. başarılar.
  • 11-06-2014, 11:13:17
    #7
    Üyeliği durduruldu
    function tags ($data) {
       $tag = explode(',', $data); 
       $c = count($tag);
       for ($i=0; $i<=$c; $i++):
          if(isset($tag[$i])):
             $showtag.= '<a href="search.php?tag='.$tag[$i].'"># '.$tag[$i].'</a>'; 
    		 
          endif;
       endfor;
       return $showtag;
    }
    
    echo tags("abc,cbd");
  • 11-06-2014, 22:25:07
    #8
    Buyur bir örnek hazirladim bu arada döngüler'de vs... direk array cevirsen daha mantikli olur veya return yerine echo yazabilirsin.

    function get_tags($data){
    if(!isset($data) || empty($data) ){
    return false;
    }
    $array_var=array();
    $explode_tags=explode(",", $data);
    if(is_array($explode_tags) ):
    for($i=0;$i<count($explode_tags);$i++){
    $array_var[]=$explode_tags[$i];
    }
    else:
    return false;
    endif;
    return $array_var;
    }
    
    $tags=get_tags("etiket1,etiket2,etiket3");
    foreach($tags as $tag){
    echo '<a href="search.php?tag='.$tag.'">#'.$tag."</a>";
    }