• 11-10-2012, 21:34:00
    #1
    Arkadaşlar sitemap için hazır kod buldum fakat tarihi veritabanından çekmiyor. Manuel olarak yazılmış halde buda olumsuz sonuçlara sebep oluyor. Ne yaptıysam veritabanından bilgiyi çekmesini sağlayamadım. Tarihi veritabanından çekmek için ne yapmam gerekiyor ?
    İlgili satır : $date


    <?
    // Önce mysql bağlantı bilgilerini içeren php dosyamızı include ediyoruz
    $mysqlhost="localhost";
    $mysqluser="sivas";
    $mysqlpass="sivas";
    $mysqldatabase="sivas";
    if(! $baglanti=@mysql_connect($mysqlhost, $mysqluser, $mysqlpass)) die("veritabani baglantisi yok.");
    mysql_select_db($mysqldatabase);
    
    // İkinci olarak sayfa output'unun hangi formatta olduğunu belirten header komutunu gönderiyoruz. Sayfamız xml formatında olacaktır.
    header("Content-Type: text/xml");
    
    // Get metoduyla aldığımız sayfa verisini $sayfa isimli değişkene atıyoruz. 
    if(! isset($_GET[sayfa])) $sayfa=1; else $sayfa=$_GET[sayfa];
    
    $date="2012-10-02";
    
    // Eğer sayfa değişkeni "index" değeri aldıysa output olarak sitemap-index verilecek. 
    if($sayfa=="index"):
    
    // İlk olarak bütün makale sayısını alıyoruz.
    $index_sayi=mysql_num_rows(mysql_query("SELECT `id` FROM `sayfalar`"));
    // İkinci olarak kaç adet index'te kaç adet sitemap listeleneceğini bulmak için, toplam rakamı sitemap başı url sayısına bölüyoruz. Ben genelde veritabanını yormamak ve hızlı yüklenme için 6000 kullanırım.
    $index_sayi=ceil($index_sayi / 6000);
    
    //Google sitemap-index header'larını giriyoruz. Encoding'i dileğinize göre değiştirebilirsiniz.
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
       <sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
    
    // Ana etiketleri girdikten sonra sitemap'ları döngü ile listeliyoruz.
    for($i=0; $i<$index_sayi; $i++){
    echo "<sitemap>
          <loc>http://www.sivas.net.tr/sitemap.php?sayfa=".($i+1)."</loc>
          <lastmod>$date</lastmod>
       </sitemap>\n";
    }
    
    // Son olarak sitemap-index sonlandırma etiketini girip index'i bitiriyoruz.
    echo "</sitemapindex>";
    
    // Eğer GET ile aldığımız sayfa değişkeni numerik ise bu kodlar çalışacak.
    else:
    
    // Sayfa numarasına göre 6000'lik veri alınıyor.
    $sorgu=mysql_query("SELECT `id` FROM `sayfalar` ORDER BY `id` ASC LIMIT ".(($sayfa-1)*6000).",6000");
    
    // Sitemap ana xml etiketleri giriliyor.
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
    <urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
     xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">\n";
    
    // Alınan 6000'lik parça döngü ile yazdırılıyor.
    while($sonuc=mysql_fetch_assoc($sorgu)):
    
    echo "  <url>
                    <loc>http://www.sivas.net.tr/KentRehberiDetay-".$sonuc[id].".html</loc>
                    <lastmod>$date</lastmod>
                    <changefreq>daily</changefreq>
                    <priority>0.5</priority>
            </url>\n";
    
    endwhile;
    
    // Son olarak sitemap'ı sonlandırma etiketini yazdırıp dosyayı kapatıyoruz.
    echo '</urlset>';
    
    endif;
    ?>
  • 12-10-2012, 00:57:32
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım veritabanında tarih sütunun yok mu. Sorguyu alırken:

    SELECT `id` FROM `sayfalar`
    yerine:

    SELECT id, tarih  FROM `sayfalar`
    olarak alıp, kodda da
    <lastmod>$date</lastmod>
    yerine

    <lastmod>$sonuc[tarih]</lastmod>
    gibi kullanacaksın.
  • 12-10-2012, 19:46:04
    #3
    Teşekkür ederim hocam sonunda çözüldü