• 17-04-2007, 13:01:15
    #1
    Merhaba,

    kategoriler ve yazilar olmak üzere iki tane tablom var.

    kategoriler tablosundaki Sütunlar;
    id - isim

    yazilar tablosundaki Sütunlar;
    id - kategori_id - baslik - yazi

    şeklinde..


    Kategorileri;
    Kategori 1
    Kategori 2
    ..

    gibi listeliyebiliyorum.

    Peki;

    Kategori 1
    --Kategori 1'deki Son Yazı
    Kategori 2
    --Kategori 2'deki Son Yazı
    ..

    gibi nasıl listeliyebilirim?
  • 17-04-2007, 13:44:32
    #2
    <?php
    include("ayar.php");
    
    $ksonuc = mysql_query("Select id, isim From kategori_tablon order by id");
    while($ksatir = mysql_fetch_array($ksonuc)){
    $kid = $satir['id'];
    $kisim = $satir['isim'];
    	$ysonuc = mysql_query("Select id, kategori_id, baslik, yazi From yazi_tablon where kategori_id = $kid order by id limit 1");
    	while($ysatir = mysql_fetch_array($ysonuc)){
    		$id = $satir['id'];
    		$baslik = $satir['baslik'];
    		$yazi = $satir['yazi'];
    	
    			echo "Kategori: ".$kisim."<br>";
    			echo "Başlık : ".$baslik."<br>";
    			echo "Yazı : ".$yazi."<br>";
    			echo "Devamı : <a href=\"yazi.php?id=".$id."\">".$baslik."</a><br>";
    	}
    }
    ?>
    Bu şekilde olması gerekir deneyemedim hata verirse yazarsınız.
  • 17-04-2007, 13:46:15
    #3
    Üyeliği durduruldu
    $ysonuc = mysql_query("Select id, kategori_id, baslik, yazi From yazi_tablon where kategori_id = $id order by id limit 0,1");

    1 yerine 0,1 değeri olmucakmı ?
  • 17-04-2007, 13:51:52
    #4
    Kadir adlı üyeden alıntı: mesajı görüntüle
    $ysonuc = mysql_query("Select id, kategori_id, baslik, yazi From yazi_tablon where kategori_id = $id order by id limit 0,1");
    1 yerine 0,1 değeri olmucakmı ?
    Öylede olur
    Burada sadece 1 kayıt alacağımız için 0,1 yapmaya gerek yok. Eğer 5'ci kayıt ile 15'ci kayıt arasını ver deseydik bu şekilde kullanabilirdik misal. Tek kayıt aldığımız için limit 1 de yapılabilir.
  • 17-04-2007, 17:37:58
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    "group by yazilar.kategori_id"

    yardımcı olabilir.
  • 18-04-2007, 00:03:58
    #6
    Herkese çok çok teşekkürler. Ben ErsaT'ın verdiği kodla denedim. Bir kaç değişiklikle tamamen sorunsuz şekilde çalıştı.

    <?php
    include("ayar.php");
    
    $ksonuc = mysql_query("Select id, isim From kategori_tablon order by id");
    while($ksatir = mysql_fetch_array($ksonuc)){
    $kid = $ksatir['id'];
    $kisim = $ksatir['isim'];
        $ysonuc = mysql_query("Select id, kategori_id, baslik, yazi From yazi_tablon where kategori_id = $kid order by id desc limit 1");
        while($ysatir = mysql_fetch_array($ysonuc)){
            $id = $ysatir['id'];
            $baslik = $ysatir['baslik'];
            $yazi = $ysatir['yazi'];
        
                echo "Kategori: ".$kisim."<br>";
                echo "Başlık : ".$baslik."<br>";
                echo "Yazı : ".$yazi."<br>";
                echo "Devamı : <a href=\"yazi.php?id=".$id."\">".$baslik."</a><br>";
        }
    }
    ?>
    Bu kodun sorunsuz hali.

    ***

    Değişiklikler ise;

    $kid = $satir['id'];
    $kisim = $satir['isim'];

    dan;

    $kid = $ksatir['id'];
    $kisim = $ksatir['isim'];

    'a..

    $id = $satir['id'];
    $baslik = $satir['baslik'];
    $yazi = $satir['yazi'];

    dan;

    $id = $ysatir['id'];
    $baslik = $ysatir['baslik'];
    $yazi = $ysatir['yazi'];

    'a..

    $ysonuc = mysql_query("Select id, kategori_id, baslik, yazi From yazi_tablon where kategori_id = $kid order by id limit 1");

    dan;

    $ysonuc = mysql_query("Select id, kategori_id, baslik, yazi From yazi_tablon where kategori_id = $kid order by id desc limit 1");

    'a..

    ***


    jagum senin verdiğin daha pratik birşeye benziyor sanki
    Biraz daha ayrıntılı açıklarsan sevinirim.
  • 18-04-2007, 00:37:20
    #7
    Paye adlı üyeden alıntı: mesajı görüntüle
    jagum senin verdiğin daha pratik birşeye benziyor sanki Biraz daha ayrıntılı açıklarsan sevinirim.
    Çalıştıysa sorun yok. Mesajda belirtiğim gibi deneyememiştim. Neyse pürüzleri görmüşsünüz önemli değil.

    jagum adlı üyeden alıntı: mesajı görüntüle
    "group by yazilar.kategori_id"
    yardımcı olabilir.
    Kategori tablosu farklı olduğu için mecburen iki sorgu olması gerekecek. group by şeklinde sıralama sadece aynı olanları görme farklıları sırala anlamına geliyor. İşin özü hem kategori hemde yazılar tablosuna bağlantı şart.