• 21-07-2013, 23:53:57
    #1
    Merhaba. Kategorileme ve Anasayfa listelemede başarı ile yaptığım sayfalamayı arama sayfasında yapamıyorum malesef

    Script yazarken arama sistemi yapmaya çalışıyorum basitçe. Aramayı yaptım fakat oradaki sayfalamada kafam karıştı

    Alıntı
    $sorgu = mysql_query("SELECT COUNT(*) as toplam from yazilar WHERE yazi_icerik LIKE '%kelime%' ");

    Yukarıdaki kodda bir yanlışlık mı var acaba?

    Yazıları kategorilere yerleştirip orada sayfalama yaparken kullandığım kod :
    Alıntı
    $sorgu = mysql_query("SELECT COUNT(*) as toplam from yazilar WHERE kategori = '$x'");
    Bu kod kategorisi $x olan yazıların sayısını al toplam'a yükle demek değil mi ? Bu kod ve devamı olan kodlar kategorileme sisteminde düzgünce çalışıp sayfalama yapıyor.

    İlk koddada yazi_icerik'te $kelime geçen yazıların sayısını al toplam'a yükle demek istiyorum ama malesef çalışmıyor.
  • 22-07-2013, 00:29:27
    #2
    bir kere verdiğin kodda sadece LIKE komutu ile içinde kelime geçen satırların sayısını bulursun, ardından LIMIT kullanman gerekli ki bu sayfa başına göre opsiyonel olarak değişiklik gösterebilir, bir de tabi yazdırmak için bir yandanda diğer sütunlarıda alman gerekli sadece COUNT(*) ile satır sayısını alabilirsin.
  • 24-07-2013, 10:41:19
    #3
    jrpowerslave adlı üyeden alıntı: mesajı görüntüle
    bir kere verdiğin kodda sadece LIKE komutu ile içinde kelime geçen satırların sayısını bulursun, ardından LIMIT kullanman gerekli ki bu sayfa başına göre opsiyonel olarak değişiklik gösterebilir, bir de tabi yazdırmak için bir yandanda diğer sütunlarıda alman gerekli sadece COUNT(*) ile satır sayısını alabilirsin.
    Merhaba hocam. Geç cevap verdiğim için kusura bakmayın öncelikle.
    Fakat dediğinizi anlamadım.

    $sayfada = 4;
    
        $sorgu = mysql_query("SELECT COUNT(*) as toplam from yazilar WHERE yazi_icerik LIKE '%kelime%'  ");
        $sonuc = mysql_fetch_assoc($sorgu);
        $toplam_icerik = $sonuc['toplam'];
        $toplam_sayfa = ceil($toplam_icerik / $sayfada);
    
        $sayfa = isset($_GET['sayfa']) ? (int) $_GET['sayfa'] : 1;
        if($sayfa < 1) $sayfa = 1;
        if($sayfa > $toplam_sayfa) $sayfa = $toplam_sayfa;
    
        $limit = ($sayfa - 1) * $sayfada;
        
         $ara = mysql_query("SELECT * FROM yazilar WHERE yazi_icerik LIKE '%$kelime%' ORDER BY yazi_tarih DESC LIMIT " . $limit . ", " . $sayfada);
    Bundan sonra "ara" değişkenini while'de döndürüp sonuç elde etmeyi bekliyorum fakat boş çıkıyor. Eğer ki "ara" içindeki LIMIT değerini kaldırırsam bu sefer aradığım yazılar çıkıyor fakat sayfalama olmuyor. Sorunun ilk mesajdaki belirttiğim kodda olduğunu düşünüyorum. Çünkü $limit değeri düzgün tanımlanamadığı için yazılarım listelenmiyor. Ben ilk mesajda da yazmaya çalıştığım kod ; içinde aradığım kelime olan yazıların sayısı.
  • 25-07-2013, 04:56:19
    #4
    Çözdüm arkadaşlar. Yardım olan olamaya çalışan herkese teşekkürler. Çözümü paylaşıyorum belki benimle aynı derdi paylaşan arkadaşlar olmuştur. Sorunun kaynağı dediğim gibi $limit değişkeninin belirsizliğinden kaynaklanıyordu. Yani değişiklik yapılması gereken kod $sonuc daki veriydi. Oradaki query kodu istediğim gibi belirli kelimedeki yazıların sayısını çekemiyordu. Bende ufak bir iki değişiklik yaptım. Direk toplam içerik sayısına ulaşmak için mysql_num_rows kullandım. İşte kodun değişmesi gereken kısmı ;

    Alıntı
    $sor = mysql_query("SELECT * FROM yazilar WHERE yazi_icerik LIKE '%$kelime%' ");
    $sorsayi = mysql_num_rows($sor);
    $toplam_icerik = $sorsayi;
    Böylece direk istenilen kelimedeki toplam içerik sayısına ulaşıp $limit 'i tanımlı hale getirdik. Bu ufak değişiklik saatlerimi aldı tabi