Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

arama yaparken ikinci sayfaya geçemiyorum

Konu, 'PHP' kısmında researcher9 tarafından paylaşıldı.

  1. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0
    arkadaşlar ben veritabanındaki makeleleri aratıp sayflatmak istiyorum normal arama yaparken sorun yoktu ama sayfalatma yapmaya kalkıncı bir türlü düzgün çalışmadı.ilk sayfadaki değerler geliyor ama ikinci sayfa linkine basınca sayfa boşluğa düşüyor ve hiç bir kayıt çekmiyor acaba hatam nerede.


    PHP:
    <form action="index.php?sayfa=arama" method="post">
    <
    table border="0" width="300" cellspacing="0" cellpadding="0">
     <
    tr>
      <
    td>
    <
    p align="center">
    <
    input type="text" name="arama" size="20"></td>
     </
    tr>
     <
    tr>
      <
    td>
    <
    p align="center">
    <
    input type="submit" value="gönder"></td>
     </
    tr>
    </
    table></form>
    PHP:
    <?php
     
    function arama(){
     
    $aranan=mysql_real_escape_string($_POST["arama"]);
    if(
    $aranan==""){
    echo
    "lütfen boş alan bırakmayın";
    }else{
     
    $limit=2;
     
     
    $sira=$_GET['sira']);
     
     
     
     
       if(empty(
    $sira) or !is_numeric($sira)){
     
       
    $sira=1;
     
          }
     
          
    $satirsayisimysql_num_rows(mysql_query("SELECT * FROM tablom  WHERE makale LIKE '%$aranan%' "));
          
    $toplamsayfaceil($satirsayisi/$limit);
     
          
    $baslangic=($sira-1)*$limit;
    $sorgu=mysql_query("SELECT * FROM tablom WHERE makele LIKE '%$aranan%' ORDER BY id DESC LIMIT $baslangic,$limit");
     
          if(
    mysql_num_rows($sorgu) < 1){
     
       echo
    "<center><br><br>Aranılan Kelimede Makale Yok<br><br></center>";
     
     
     
       } else{
     
       echo
    "
     <table border=\"0\" width=\"600\" cellspacing=\"0\" cellpadding=\"0\">
     <tr>
      <td colspan=\"3\">
      <p align=\"center\">Bulunan Makaleler</td>
     </tr> <tr>
      <td>Makale Başlığı</td>
      <td>Makale Tarihi</td>
      <td>Okunma Sayısı</td>
     </tr>
     "
    ;
     
          while(
    $yaz=mysql_fetch_array($sorgu)){
     
          
    $baslik=$yaz["baslik"];
          
    $id=$yaz["id"];
          
    $tarih=$yaz["tarih"];
          
    $hit=$yaz["hit"];
     
     
          echo
    " <tr>
      <td>
    $baslik</td>
      <td>
    $tarih</td>
      <td>
    $hit</td>
     </tr>
     "
    ;
     
          }
     
     
      echo
    "
    </table>
    "

               echo
    "<b><br>Sayfalar :</b>";
     
                   for(
    $x=1$x<=$toplamsayfa$x++){
     
                   echo
    "<a href=\"index.php?sayfa=arama&id=$id&sira=$x\"> $x  </a>";
     
                   }
       }
    }
     
     
    }
     
    $sayfa=$_GET["sayfa"];
     
    switch(
    $sayfa){
     
    case
    "arama":
    arama();
    break;
     
    }
    ?>
     
  2. ozguraybar2

    ozguraybar2 Aktif Üye

    Kayıt:
    17 Eylül 2007
    Mesajlar:
    473
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    Denizli
    if(empty($sira) or !is_numeric($sira)){

    $line=1;

    }
    demişsin
    $sira = 1 diyeceksin.
     
  3. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0
    [FONT=Courier New]


    yok hata orada değil kodları foruma atarken orayı yanlış yazmışım şimdi düzelttim ama sorunum hala devam ediyor.[/font]
     
  4. AlBaTR

    AlBaTR Yeni Üye

    Kayıt:
    14 Mayıs 2008
    Mesajlar:
    12
    Beğenilen Mesajlar:
    0
    PHP:
    for($x=1$x<=$toplamsayfa$x++){
     
                   echo
    "<a href=\"index.php?sayfa=arama&id=$id&sira=$x\"> $x  </a>";
     
                   }
    bu bölümde bir kaç nokta var mesela bir $id değişkeni gidiyor fakat while içinde olduğu için her zaman son kayıtın kimlik bilgisi gidecektir.
    Onun dışında bir sonraki sayfa aranan kelimeyi nerden bilecek onun içinde
    GET te aranan kelimeyi de gönder üst kısımı da biraz değiştir mesela

    PHP:
    $aranan = ($_POST["arama"] != "" $_POST["arama"] : $_GET["arama"]);

    gibi
    böylelikle hem GET hemde POST için karşılama yapmış olursun
    o da olmazsa bu durum için ilkel olmasına rağmen $_SESSION kullanabilirsin ;)
     
    Son düzenleme yönetici tarafından yapıldı: 28 Haziran 2008
  5. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0
    PHP:
     for($x=1$x<=$toplamsayfa$x++){
     
                   echo
    "<a href=\"index.php?sayfa=arama&arama=$aranan&sira=$x\"> $x  </a>";
     
                   }
    şu satırıda şöyle yaptım sayfalama olayı halloldu sayılır ama bir sorun daha var burada form doluysa sayfalama yapılıyor ama form boşken ara dediğimizdede tüm sayfaları listeliyor arama formunun boş olduğunu nasıl kontrol edebiliriz.

    PHP:
    $aranan = ($_POST["arama"] != "" $_POST["arama"] : $_GET["arama"]); 
     
  6. materyalist

    materyalist Daimi Üye

    Kayıt:
    24 Aralık 2007
    Mesajlar:
    771
    Beğenilen Mesajlar:
    0
    Şehir:
    PHP.Net
    PHP:
    if(empty($_POST['arama'])); {
    header("location: neden_bos_biraktin_beni_abii.php"); // yada echo boş bırakma kardeşim...
    } else {
    ahanda bu çalışan ve arama yapan kodların devreye girecek...
    }
     
  7. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0

    teşekkürler hocam şimdi oldu empty işe yaradı :D
     
  8. Emre

    Emre Üye

    Kayıt:
    28 Eylül 2004
    Mesajlar:
    248
    Beğenilen Mesajlar:
    0
    daha önceki sayfalara bakmadım fakat eğer 2. sayfaya tıkladıgında yine aynı problemle karsılasabilirsin. Çünkü 2. sayfada değeri post değilde get ile alıyosundur sanırım.

    Onun için hem $_POST['arama'] hemde $_GET['arama'] kontrol etmende fayda var.
     
  9. ozguraybar2

    ozguraybar2 Aktif Üye

    Kayıt:
    17 Eylül 2007
    Mesajlar:
    473
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    Denizli
    en iyisi madem $_REQUEST :)
     
  10. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0
    ikisinide kontrol ettim şimdi sorunsuz çalışıyor herkese teşekkürler :D
     
  11. researcher9

    researcher9 Üye

    Kayıt:
    25 Ağustos 2007
    Mesajlar:
    132
    Beğenilen Mesajlar:
    0
    merhaba arkadaşlar bu örnek üzerinde çalışırken bir şeye dikkat etmemişim şimdi ufak bir problemle karşılaştım hatanın nereden kaynaklandığını çözemedim. arama yaptıktan sonra sayfalama yapaken türkçe karakter problemiyle karşılaştım yani as diye arattığımda 2. ve 3. sayfalara geçiyor ama aş diye arattığımda ilk sayfa geliyor ikinci sayfa linkine tıkladığımda Aranılan Kelimede Makale Yok diyor acaba hata nedir.

    PHP:
    <?php
     
    function arama(){
     
    $aranan = ($_POST["arama"] != "" $_POST["arama"] : $_GET["arama"]); 
     
    if(
    $aranan=="") {
    echo
    "lütfen boş alan bırakmayın";
     
    }else{
     
    $limit=2;
     
     
    $sira=$_GET['sira']);
     
     
     
     
       if(empty(
    $sira) or !is_numeric($sira)){
     
       
    $sira=1;
     
          }
     
          
    $satirsayisimysql_num_rows(mysql_query("SELECT * FROM tablom  WHERE makale LIKE '%$aranan%' "));
          
    $toplamsayfaceil($satirsayisi/$limit);
     
          
    $baslangic=($sira-1)*$limit;
    $sorgu=mysql_query("SELECT * FROM tablom WHERE makele LIKE '%$aranan%' ORDER BY id DESC LIMIT $baslangic,$limit");
     
          if(
    mysql_num_rows($sorgu) < 1){
     
       echo
    "<center><br><br>Aranılan Kelimede Makale Yok<br><br></center>";
     
     
     
       } else{
     
       echo
    "
     <table border=\"0\" width=\"600\" cellspacing=\"0\" cellpadding=\"0\">
     <tr>
      <td colspan=\"3\">
      <p align=\"center\">Bulunan Makaleler</td>
     </tr> <tr>
      <td>Makale Başlığı</td>
      <td>Makale Tarihi</td>
      <td>Okunma Sayısı</td>
     </tr>
     "
    ;
     
          while(
    $yaz=mysql_fetch_array($sorgu)){
     
          
    $baslik=$yaz["baslik"];
          
    $id=$yaz["id"];
          
    $tarih=$yaz["tarih"];
          
    $hit=$yaz["hit"];
     
     
          echo
    " <tr>
      <td>
    $baslik</td>
      <td>
    $tarih</td>
      <td>
    $hit</td>
     </tr>
     "
    ;
     
          }
     
     
      echo
    "
    </table>
    "

               echo
    "<b><br>Sayfalar :</b>";
     
              for(
    $x=1$x<=$toplamsayfa$x++){
     
                   echo
    "<a href=\"index.php?sayfa=arama&arama=$aranan&sira=$x\"> $x  </a>";
     
                   }  
       }
    }
     
     
    }
     
    $sayfa=$_GET["sayfa"];
     
    switch(
    $sayfa){
     
    case
    "arama":
    arama();
    break;
     
    }
    ?>