• 20-11-2012, 10:20:32
    #1
    Üyeliği durduruldu
    <?
    // Önce mysql bağlantı bilgilerini içeren php dosyamızı include ediyoruz
    $mysqlhost="localhost";
    $mysqluser="ucretsiz_mp31";
    $mysqlpass="123331";
    $mysqldatabase="ucretsiz_mp3";
    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];
    
    //Tarihi belirtiyoruz. Burada format önemli. Format dışına çıkılmamalı. Eğer veritabanınızda her makalenin giriş tarihi varsa dinamik olarak onu da ekleyebilirsiniz. Burada sabit bir gün kullandım.
    $date="2009-11-07";
    
    // 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 `sarkid` FROM `sarkilar`"));
    // İ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 1000 kullanırım.
    $index_sayi=ceil($index_sayi / 1000);
    
    //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.*/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 1000'lik veri alınıyor.
    $sorgu=mysql_query("SELECT `sef` FROM `sarkilar` ORDER BY `sef` ASC LIMIT ".(($sayfa-1)*1000).",1000");
    $snt=mysql_query("SELECT `sef` FROM `sanatci` ORDER BY `sef` ASC LIMIT ".(($sayfa-1)*1000).",1000");
    
    // 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 1000'lik parça döngü ile yazdırılıyor.
    while($sonuc=mysql_fetch_assoc($sorgu)):
    while($fl=mysql_fetch_assoc($snt)):
    
    
    echo " <url>
    <loc>http://www.*.com/sarki/".$fl[sef]."/".$sonuc[sef]."-".$sonuc[sarkid].".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;
    ?>
    Aldığım Hata Bu Arkadaşlar Bir Türlü Çözemedim.

    Parse error: syntax error, unexpected T_ENDIF in /home/ucretsiz/public_html/sitemap.php on line 71
  • 20-11-2012, 10:25:27
    #2
    endwhile;

    olan yer

    endwhile;
    endwhile;

    olarak değişecek. 2 tane açık 2 tane kapatılmalı.
  • 20-11-2012, 10:28:56
    #3
    Üyeliği durduruldu
    çok teşekkür ederim miscel ustam saygılarımla.