• 25-11-2007, 12:56:29
    #1
    merhaba arkadaşlar,
    bir scripte sitemap modülü buldum fakat bende 10.000 yakın link olduğundan hepsini aynı sayfada çıkartıyor. fakat ben bir sayfada 500 link olmasını istiyorum. 500 den sonraki linkler sayfa1-2-3 gibi sıralansın istiyorum. nasıl yapabilirim?

    aşağıdaki kodda ne gibi düzenleme gerekiyor. yardım edermisiniz.
    Alıntı
    <?php
    if(!defined('DATALIFEENGINE')){
    die("404 Dosya Bulunamadı!");
    }

    $thisdate = date ("Y-m-d H:i:s", (time()+ $config['date_adjust']*60));

    $map = dle_cache("sitemap", $config['skin']);
    if(!$map) {
    $map = "";
    $result = $db->query("SELECT id,name,alt_name FROM " . PREFIX . "_category ORDER BY posi ASC");
    while($row = $db->get_row($result)){
    $map .= "<ul style='padding:20px;font-size:18px;'><a style='font-weight: bold;' href='".$config['http_home_url']."category/${row[alt_name]}/' style='font-size:10pt;font-weight:bold;'>$row[name]</a>\n";
    $cat = intval($row[id]);

    $result2 = $db->query("SELECT id,autor,date,title,alt_name,comm_num,rating,news_ read,approve FROM ". PREFIX ."_post WHERE category LIKE '%$cat%' AND approve = '1' AND date < '$thisdate' ORDER BY date DESC");
    while ($row2 = $db->get_row($result2)){
    $map .= "<li style='padding:2px;font-size:11px;' valign='absmiddle'> <font color=\"red\"> ". substr($row2['date'],0,10) ." </font>
    <a style='font-weight: bold;' href=".$config['http_home_url'].str_replace("-","/",substr($row2['date'],0,10))."/".$row2['alt_name'].".html>".stripslashes($row2[title])."</a>
    \n";
    }
    $map .= "</ul>\n";
    }

    #ubiriote sledujusije kovycki /* */ jesli nado ctoby pokazyvalo staticeskije stranicy
    /*
    $result = $db->query("SELECT id, name, descr FROM " . PREFIX . "_static ORDER BY name ASC");
    while($row = $db->get_row($result)){
    $map .= "<span style='padding-left:20px;padding-bottom:10px;font-size:16px;'><a style='font-weight: bold;' href='".$config['http_home_url']."static/{$row[name]}.html' style='font-size:10pt;font-weight:bold;'>$row[descr]</a></span><p>\n";
    }
    */
    create_cache("sitemap", $map);
    }

    $tpl->load_template('static.tpl');
    $tpl->set('{description}', "&nbsp;");
    $tpl->set('{static}', $map);
    $tpl->compile('content');
    $tpl->clear();

    ?>
  • 26-11-2007, 12:17:26
    #3
    sendekazan, dostum yorumun için teşekkürler fakat yukardaki koda entegre edemedim.
  • 26-11-2007, 14:29:42
    #4
    impossible03 adlı üyeden alıntı: mesajı görüntüle
    sendekazan, dostum yorumun için teşekkürler fakat yukardaki koda entegre edemedim.
    Başkalarının kodu üzerinde oynamayı kimse sevmez bu yüzden pek yardımcı olamıyorlar.Senin kodların üstelik hazır bir sistemden alınmış.
    Sana kısaca mantıgı anlatayım:
    Hangi sayfada oldugunu bulman gerekiyor önceliklen bunun için GET yöntemini kullanacaksın ve bir sayfada kaç tane veri listelenecek onuda yazmalısın.
    ///////// Her sayfada 10 tane veri listelenecek ////////
    $limit=10;
    /////// Kontrolden Geçiriyoruz /////////
    if(!is_numeric($_GET[sayfa])) {
    echo 'hatalı giriş';
    }
    ////// Sayfa Numarsını alıyoruz ///////
    if($_GET[sayfa]) {
    $sayfam=1;
    } else {
    $sayfam=$_GET[sayfa];
    }
    Sayfamızın numarsını aldık şimdi veritabanından seçtigimiz verilerin kaç tane oldugunu bulalım.
    $result = $db->query("SELECT COUNT(id) AS id_sayisi FROM ". PREFIX ."_post WHERE approve = '1' AND date < '$thisdate' ORDER BY date DESC");
    ////// Altaki kısmı salladım çünkü class yapını bilmiyorum mysql_fetch_array kullnacayız yani /////////
    $kac_tane=$db->get_row($result);
    Şimdi sayfa numarası ile veriler arasında ufak bir matematiksel foksiyon yazacagız:
    ////// Kaç tane Sayfa Oldugunu Bulmak için toplam veri sayısını ,her sayfada ne kadar veri listelenecekse o sayıya bölüyoruz //////////////
    ///// Burdaki ceil foksiyonu tam sayı almamız sağlıyor örnek: [url=http://www.php.net/ceil]PHP: ceil - Manual[/url] /////
    $sayfa_sayisi = ceil($kac_tane['id_sayisi'] / $limit );
    ////// Bunun ne işe yaragını ileride anlarsın ////////
    $alt_limit = ( $sayfam - 1 ) * $limit;
    Şu anda Hangi sayfada oldugumuzu ve hangi veriler arasını listeleyecegimizi anladık.Şimdi verilerin listelemesine geçelim
    /////// Burda tablomuzu seçdik ve limiti belirledik. Limit konusunda bilmeniz gereken LIMIT 0,8 yaptıgımızda 1,2,3,4,5,6,7,8 id numaraları listelenecekdik(id numarasıda degil aslında), LIMIT 7,8 yaptıgımızda 7,8,9,10,11,12,13,14,15,16 listelenecekdir.Şimdi neden ( $sayfam - 1 ) işlemini yaptımızı anladık. //////
    $result2 = $db->query("SELECT * FROM ". PREFIX ."_post WHERE approve = '1' AND date < '$thisdate' ORDER BY date DESC LIMIT $alt_limit,$limit");
    //// Döngüye sokduk //////
     while ($row2 = $db->get_row($result2)){
    $map .= "<li style='padding:2px;font-size:11px;' valign='absmiddle'> <font color=\"red\"> ". substr($row2['date'],0,10) ." </font>
    <a style='font-weight: bold;' href=".$config['http_home_url'].str_replace("-","/",substr($row2['date'],0,10))."/".$row2['alt_name'].".html>".stripslashes($row2[title])."</a>
    \n";
    }
    Listeleme işlemimiz bitti .Şimdi sayfa numaralarını koyalım alt kısıma:
    $i=1;
    while ($i < $sayfa_sayisi) {
    echo "<a href='map_sayfası.php?sayfa=$i'>$i</a>"
    }
    Şimde herşeyi yapdık İnşallah anlamışındır birazda olsa işi.
    Not: Aşağıda yükleyecegin dosyayı koyuyorum.
    RapidShare: 1-Click Webhosting