• 10-06-2009, 04:51:11
    #1
    Merhaba arkadaslar.

    elimde bu şekilde bir sayfalama fonksiyonu var.


     function habersayfalama($limit,$sayfano,$satir_sayisi=0,$sayfaadi='index.php',$adresdeger='')
    {
      $habersayfalama = '';
      if($satir_sayisi > $limit)
      {
        $sayfa_sayisi = $satir_sayisi / $limit;
        $sayfa_sayisi = ceil($sayfa_sayisi);
        if($sayfano == $sayfa_sayisi)
        {
          $to = $sayfa_sayisi;
        } elseif($sayfano == $sayfa_sayisi - 1)
        {
          $to = $sayfano + 1;
        } elseif($sayfano == $sayfa_sayisi - 2)
        {
          $to = $sayfano + 2;
        } else {
          $to = $sayfano + 3;
        }
        if($sayfano < 4)
        {
          $from = 1;
        } else {
          $from = $sayfano - 3;
        }
        if (6 < $sayfano)
        $habersayfalama .= ' <b><a href="'.$sayfaadi.'?sayfa=1'.$adresdeger.'"><b>1</b></a>...</b> ';
        for($i=$from; $i <= $to; $i++)
        {
          if($i == $sayfano)
          {
            $habersayfalama .= '<b>['.$i.']</b> -';
          } else {
            $habersayfalama .= '<a style="text-decoration:none; color:#000000" href="'.$sayfaadi.'?sayfa='.$i.$adresdeger.'">'.$i.'</a> - ';
          }
        }    if ($to < $sayfa_sayisi)    {
          $habersayfalama .= ' <b>...<a href="'.$sayfaadi.'?sayfa='.$sayfa_sayisi.$adresdeger.'" style="text-decoration:none; color:#000000"> '.$sayfa_sayisi.'</a></b> ';
        }
      }
      if($habersayfalama == "")
      {
        $habersayfalama = 'Sayfa 1';
      }
      return $habersayfalama;
    } 
    $limit = 5; // Bir Sayfada Gösterilecek Haber Sayısı
    $kosul = 'where kat_id = 1';
    $tabloadi = 'site';
    $sorgu = mysql_query("SELECT COUNT(*) FROM  $tabloadi $kosul");
    $satir_sayisi = mysql_result($sorgu, 0);
    @$sayfa = abs(intval($_GET['sayfa']));
    if(empty($sayfa) || $sayfa > ceil($satir_sayisi/$limit))
    {
      $sayfa = 1;
      $baslangic = 0;
    } else {
      $baslangic = ($sayfa - 1) * $limit;
    }
    $sorgu = mysql_query("SELECT * FROM `site` $kosul ORDER BY id DESC LIMIT $baslangic,$limit");
    				while($yaz = mysql_fetch_array($sorgu)){
    				$text = substr(nl2br($yaz["text"]),0,600);
    				?>
    buda verileri cektigim tablom

    CREATE TABLE `site` (
      `id` int(11) NOT NULL auto_increment,
      `kat_id` int(11) default '0',
      `baslik` text,
      `resim` text,
      `text` text,
      `tarih` text character set latin1,
      `dil` enum('tr','en') character set latin1 default NULL,
      `yer` int(11) default NULL,
      `anasayfa` int(11) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      UNIQUE KEY `yer` (`yer`)
    )
    hersey cok guzel calısıyor fakat benım istedigim şu.

    admin panelinden içerik eklerken "Ana sayfada gorunsunmu?" ve "Kaçıncı sırada?" diye iki bolumum var. anasayfa alanı için 0 HAYIR 1 EVET olarak ayarladım. YER alanı da 1 ... 10 arasında deger alabiliyor. Amaç site sahibinin ıstedıgı haberı ıstedıgı sıraya koyabilmesi.

    Sonuc olarak YER degerine gore 10 tane haberin ana sayfada yayınlanması lazım.bunun ıcınde sayfama fonksiyonunda ilk iki sayfanın bu haberlere ayrılması gerekıyor.ikinci sayfadan sonra bu haberler dısındaki diger haberler en son eklenme sırasına gore gelecek.

    Velhasıl kelam guzel dostlar sayfalama fonksiyonunda ilk iki sayfayı benım bu YER / ANASAYFA bilgileri girilen haberlere tapulamam lazım.Onlardan baskası gorunmeyecek ustelik kullanıcı hangi haberi hangi sıraya koymak ıstedıyse o sırada


    yardımcı olursanız cok sevinirim. Umarım sıkıntımı anlatabilmişimdir.

    Simdiden cok tesekkur ederim


    ha bide ek olarak sayfalama fonksiyonunun calıstırıldıgı kod da bu arkadaslar


     <? echo habersayfalama($limit,$sayfa,$satir_sayisi,'index.php','&islem=1');?>
  • 10-06-2009, 05:14:12
    #2
    Üyeliği durduruldu
    haberlerin olduğu yere sira diye bir sutun aç degerini int yap ve listeleme yaparken order by sira asc diye cagır
  • 10-06-2009, 17:22:19
    #3
    $sorgu = mysql_query("SELECT * FROM `site` $kosul ORDER BY anasayfa DESC, yer ASC, id DESC LIMIT $baslangic,$limit");
    SQL cümlecigini bu sekilde duzeltince oldu arkadaslar. Aynı sıkıntıyı yasayan baska kişiler olursa faydamız olsun.


    Yardımlarını esirgemeyen @sdemirker' e tesekkur ederim