• 18-02-2022, 02:09:55
    #1
    Merhabalar. Php'de site içi arama yapıp, çıkan sonuçları da sayfalama yapmaya uğraşıyorum. Filtreleme ve sayfalama çaslışıyor ama sonuçlar tek sayfada çıkıyor. Yardımcı olabilir misiniz?

    index.php
    <div class="arama-alani-div">
    <form action="arama.php" method="POST">
    <input type="text" name="kelime" placeholder="Arama yap">
    <input type="submit">
    </form>
    </div>
    arama.php
    <?php
    if($_POST) {
    $ara = $_POST['kelime'];
    $sayfalamasorgusu = "SELECT * FROM yaziekle WHERE yaziekle_baslik like '%$ara%'";
    $sayfalamasorgu = $db->query($sayfalamasorgusu);
    $sayfasay = $sayfalamasorgu->num_rows;
    if($sayfasay > 0) {
    $sayfa = @$_GET['sayfa'];
    if((empty($sayfa)) or (!is_numeric($sayfa))) { $sayfa = 1; }
    $kacar = 2;
    
    $sayfasayisi = ceil($sayfasay/$kacar);
    $neredenbaslasin = ($sayfa*$kacar)-$kacar;
    $sorgusu = "SELECT * FROM yaziekle ORDER BY yaziekle_id DESC LIMIT $neredenbaslasin, $kacar";
    $sorgu = $db->query($sorgusu);
    foreach($sayfalamasorgu as $sorgu) {
    ?>
    
    <div class="container-fluid">
    <div class=icerikalani-div>
    <div class="icerik-ic-alani">
    <div class="resim-div">
    <img src="images/eklenenyaziresimleri/<?php echo $sorgu['yaziekle_resim']; ?>">
    </div>
    
    
    <div class="baslik-ve-yazi-alani-kategori-ve-devaminioku">
    <div class="yazi-alani-baslik">
    <?php echo $sorgu['yaziekle_baslik']; ?>
    </div>
    
    
    <div class="yazi-alani-yazi">
    <?php echo nl2br($sorgu['yaziekle_konu']); ?>
    </div>
    
    
    <div class="kategori-ve-devaminioku-alani">
    <div class="yazi-alani-kategori">
    <?php echo $sorgu['yaziekle_kategori']; ?>
    </div>
    
    <div class="yazi-alani-devaminioku">
    <a href="devaminioku.php?devam=<?php echo $sorgu['yaziekle_id']; ?>">Devamını Oku</a>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    
    <?php } ?>
    
    
    <?php
    for($i=1; $i<=$sayfasayisi; $i++)
    {
    echo "<a href='arama.php?sayfa={$i}'>{$i}</a>";
    }
    ?>
    
    
    <?php } else { echo "0"; } ?>
    
    
    <?php } ?>
  • 18-02-2022, 14:48:39
    #2
    Kimse cevap vermedi mi arkadaşlar.
  • 18-02-2022, 15:02:01
    #3
    Kaç tane sonucunuz var? Ayrıca çıkan sonucun ekran görüntüsünü ekler misiniz? Son olarak kodlarınızı PHPR etiketleri arasında yazarsanız daha okunaklı olur cidden okunmuyor. Yarımcı olmaya çalışayım hemen size.
  • 18-02-2022, 15:09:56
    #4
    CodingStudent adlı üyeden alıntı: mesajı görüntüle
    Kimse cevap vermedi mi arkadaşlar.
    Önceki mesajıma ek olarak şunu sormak istiyorum, sonuç veriyor ama tek sayfada şeklinde belirtmişsiniz. Doğru sonuç verdiğine emin misiniz? Çünkü sayfalama yapmak için LIKE kullanmışsınız ve sonuç sayısını buna göre hesaplamışsınız. Aşağıda yazıları listelediğiniz sorgu da tüm yazıları herhangi bir filtre olmadan listelemişsiniz. Bence kodunuz şu şekilde olmalı.

    <?php
    if($_POST) {
        $ara = $_POST['kelime'];
    
        $sayfalamasorgusu = "SELECT * FROM yaziekle WHERE yaziekle_baslik like '%$ara%'";
    
        $sayfalamasorgu = $db->query($sayfalamasorgusu);
    
        $sayfasay = $sayfalamasorgu->num_rows;
    
        if($sayfasay > 0) {
            $sayfa = @$_GET['sayfa'];
        }
    
        if((empty($sayfa)) or (!is_numeric($sayfa))) {
            $sayfa = 1;
        }
        
        $kacar = 2;
    
        $sayfasayisi = ceil($sayfasay / $kacar);
    
        $neredenbaslasin = ($sayfa * $kacar) - $kacar;
    
        $sorgusu = "SELECT * FROM yaziekle WHERE yaziekle_baslik like '%$ara%' ORDER BY yaziekle_id DESC LIMIT $neredenbaslasin, $kacar";
        $sorgu1 = $db->query($sorgusu);
    
        foreach($sorgu1 as $sorgu) {
    ?>
    
        <div class="container-fluid">
            <div class=icerikalani-div>
                <div class="icerik-ic-alani">
                    <div class="resim-div">
                        <img src="images/eklenenyaziresimleri/<?php echo $sorgu['yaziekle_resim']; ?>">
                    </div>
    
    
                    <div class="baslik-ve-yazi-alani-kategori-ve-devaminioku">
                        <div class="yazi-alani-baslik">
                            <?php echo $sorgu['yaziekle_baslik']; ?>
                        </div>
    
    
                        <div class="yazi-alani-yazi">
                            <?php echo nl2br($sorgu['yaziekle_konu']); ?>
                        </div>
    
    
                        <div class="kategori-ve-devaminioku-alani">
                            <div class="yazi-alani-kategori">
                                <?php echo $sorgu['yaziekle_kategori']; ?>
                            </div>
    
                            <div class="yazi-alani-devaminioku">
                                <a href="devaminioku.php?devam=<?php echo $sorgu['yaziekle_id']; ?>">Devamını Oku</a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    
    <?php
        }
    
        for($i = 1; $i <= $sayfasayisi; $i++) {
    ?>
            <a href='arama.php?sayfa={$i}'>{$i}</a>
    <?php
        }
    } else {
        echo "0";
    }
    ?>
  • 19-02-2022, 00:09:38
    #5
    Arattığım kelimenin 3 adet sonuç bulması lazım. 3. resim yok. 2. sayfa da boş. Resim aşağıda. Bu arada "phpr" kodları arasına almışım zaten.
    https://www.hizliresim.com/flr5opd
  • 19-02-2022, 02:15:03
    #6
    post edip arayınca sayfalama çıksa bile get ile diğer sayfalara geçtiğinde post edilen değer kaybolur ya onu sessiona veya cookieye alacaksın yada get ile sorgulayacaksın ben arama kelimesini sayfa no ile beraber get değerle alıyorum kaybolmuyor.
  • 20-02-2022, 02:37:56
    #7
    ilgice adlı üyeden alıntı: mesajı görüntüle
    post edip arayınca sayfalama çıksa bile get ile diğer sayfalara geçtiğinde post edilen değer kaybolur ya onu sessiona veya cookieye alacaksın yada get ile sorgulayacaksın ben arama kelimesini sayfa no ile beraber get değerle alıyorum kaybolmuyor.
    Peki şimdi tam olarak anlayamadım nasıl olacağını. Session veya cookie oluştursam ki oluşturdum ama ikinci sayfaya veriyi yine aktaramadım. Yani ne yapıp aktaracağım. Yani 1. sayfada 2 adet, 2. sayfada ise 1 adet gösterilecek veri. Çünkü aranan veri toplamda üç adet. Session ile aynı veriyi 2. sayfaya taşırım ama amaç bu değil. Veya ben anlayamadım dediğinizi. Bir diğer dediğiniz ise get ile alma. Aşağıdaki koda bir bakın, form alanına nasıl yazacağım ve veriyi "get" ile alırkan nasıl çekeceğim. Çok kısa bir örnek verebilir misiniz?

    <div class="arama-alani-div">
    <form action="arama.php?aranankelime" method="GET">
    <input type="text" name="kelime" placeholder="Arama yap">
    <input type="submit">
    </form>
    </div>
    Veriyi burada nasıl çekeceğiz.
    <?php
    if ($_GET) {
    $ara = $_GET['kelime'];
    
    $sayfalamasorgusu = "SELECT * FROM yaziekle WHERE yaziekle_baslik like '%$ara%'";
        $sayfalamasorgu = $db->query($sayfalamasorgusu);
    }
  • 20-02-2022, 03:04:23
    #8
    İlk önce post ile gönderdin diyelim orası tamam ondan sonra sayfa nolarında bunu get ile ekleyeceksin, tabi bu durumda if sorgusunda ilk önce post var mı diye bakacaksın

    mesela

    if(!empty($_POST['kelime']))

    sonrasına get ile sorgulayacaksın böylece post ettiğinde get get ettiğinde post verisine bakmaz

    if(!empty($_GET['kelime']))


    <?php
    for($i=1; $i<=$sayfasayisi; $i++)
    {
    echo "<a href='arama.php?sayfa={$i}&kelime=$aranankelime'>{ $i}</a>";
    }
    ?>

    sessionu boşver kafa karışıklığı oldu o.
  • 20-02-2022, 04:28:03
    #9
    Sayfada bu şekilde mi kullanacağım.
    if(!empty($_POST['kelime'])) {
       if(!empty($_GET['kelime'])) {
          $ara = $_GET['kelime'];
    
    
    
    }
    }