Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Php ile benzer yazıları göstertmek

<?php 
	$gelen_id=$_GET['id'];
	$gelen_haber=mysql_fetch_array(mysql_query("SELECT * FROM haberler WHERE haber_id='$gelen_id'"));
	$haber= $gelen_haber['haber_kategori'];
	$benzer_haber=mysql_fetch_array(mysql_query("SELECT * FROM haberler WHERE haber_kategori='$haber' ORDER BY rand() LIMIT 5"));
	     echo '
		<div class="haber-icerik-blogu">
		<h3 class="haber-basligi">'.$gelen_haber['haber_baslik'].' </h3>
			<div class="haber-p">'.$gelen_haber['haber_icerik'] .'</div>
			'.$benzer_haber['haber_baslik'].'  
			</div>
				<div class="benzer-haberler"> 
				</div>
			'

			
 ?>


Yapmak istediğim wordpress'te olduğu gibi sitenin alt kısımında benzer haberleri göstertmek bu kodlarla sadece 1 adet benzer haber cıkıyor ben 5 adet rasgele haber cıkmasını istiyorum ve cıkan o tek haber her refresh ettiğimde değişiyor burası benim istediğim gibi ancak dediğim gibi bunun 5 tane olmasını nasıl sağlıyabilirim
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • zyber adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    57 cevap - 25 soru
    Benzer Haber olabilmesi için haberin diğer haberlerle en azından başlık içinde geçen kelimelerin benzerliğinden gidilebilir. (Bence en mantıklısı budur...) Aynı kategorideki haberlerden 5 tanesini çekmek Benzer Haber ile uyuşur mu? bu ayrıca tartışılır...

    Gösterilen sayfadaki haberin başlığına benzer 10 haberi aşağıdaki SQL ile alabilirsin...
    (Geçerli haberin başlığını boşluklara göre kelimelere ayırıyor ve 3 sesden büyük kelimeleri tblhaberler tablosundan arayıp oluşturulma tarihine göre 10 tanesini çekiyor... Oluşturulma, diğer tarih alanı ve aktif onayı sql den çıkartılıp kendinize uyarlayabilirsiniz.. ya da kendi tablonuza bu alanları da ekleyebilirsiniz...)


    $sql = "SELECT id, baslik,"
    		  . "\n DATE_FORMAT(olusturulma_tarihi, 'TARIH FORMAT ŞEKLİN') as tarih" 
    		  . "\n FROM tblHaber"
    		  . "\n WHERE olusturulma_tarihi <= NOW()"
    		  . "\n AND (bitis_tarihi = '0000-00-00 00:00:00' OR bitis_tarihi >= NOW())"
    		  . "\n AND aktif = 1"
    		  . "\n AND id != ".$id
    		  . "\n AND (1=0";
    		  		$related = explode(' ',$baslik);
    				foreach($related as $kelime) {
    					$kelime = str_replace(',', '', $kelime);
    					if(strlen($kelime) > 3) {
    					  $sql .= " OR baslik LIKE '%".$db->escape($kelime)."%'";
    					}
    				}
    				$sql .= ")"
    . "\n ORDER BY olusturulma_tarihi DESC LIMIT 5";
    
    • Who adlı üyenin fotoğrafı Who
      Teşekkür ederim verdiğiniz kodlarla yaptım. Kategoriye göre çekmemin sebebi bir tanıtım sitesi olması yani atıyorum Lord Of The Rings filmi ile ilgili bir yazı yazdıysam bu yazı Lord Of The Rings Kategorisinde ve altta o kategorinni 5 haberini göstertmek istedim ama verdiğiniz kodlarla daha iyi oldu açıkcası teşekkür ediyorum.
      11 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      Rica ederim. Birde Etiket Bulutu eklersin ;)
      11 yıl önce yazılmış

Cevaplar

  • Kesali adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    208 cevap - 2 soru
    While döngüsüne sokarsan 5 tanesinde gelir.

    	$gelen_id=$_GET['id'];
    	$gelen_haber=mysql_fetch_array(mysql_query("SELECT * FROM haberler WHERE haber_id='$gelen_id'"));
    	$haber= $gelen_haber['haber_kategori'];
    	while($benzer_haber=mysql_fetch_array(mysql_query("SELECT * FROM haberler WHERE haber_kategori='$haber' ORDER BY rand() LIMIT 5"))){
    	     echo '
    		<div class="haber-icerik-blogu">
    		<h3 class="haber-basligi">'.$gelen_haber['haber_baslik'].' </h3>
    			<div class="haber-p">'.$gelen_haber['haber_icerik'] .'</div>
    			'.$benzer_haber['haber_baslik'].'  
    			</div>
    				<div class="benzer-haberler"> 
    				</div>
    			';}
    
    			
     
    
    • Who adlı üyenin fotoğrafı Who
      Verdiğiniz bu kodlarla denediğimde sonsuz bir döngüye girdi girdiğim haberdeki yazı sonsuz kere tekrar etti
      11 yıl önce yazılmış