Generare sitemap automat

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Generare sitemap automat

Mesajde cadou » Dum Dec 02, 2012 9:52 pm

Am vazut ca sitemap e important pentru site asa ca am cautat pe net cod de generare sitemap.
adica daca eu fac azi modificari si adaug inregistrari mie sa imi apara in sitemap rapid, pe loc, nu ca sa ma duc eu pe site-uri sa dau generare sitemap manual.
Am gasit 2 coduri.
Am inlocuit cum trebuie pe acolo in loc de domeniu am pus site-u meu, in loc de host parola si ce mai e pe acolo am completat tot dar da erori
primul e

Cod: Selectaţi tot


    <?php
    //include baza de date
    $db=mysql_connect($[b]dbhost[/b],$[b]dbuser[/b],$[b]dbpass[/b]);
    mysql_select_db($[b]dbdatabase[/b]);
    $mainPages = array(
    “http://www.domeniu.ro/”,
    “http://www.domeniu.ro/topuseri/”,
    “http://www.domeniu.ro/toparticole/”);
    //declara header si insceput sitemap
    header (‘Content-type: text/xml’);
    echo ‘<?xml version=”1.0″ encoding=”ISO-8859-1″ ?>’;
    echo ‘<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”>’;
    for($i=0; $i<count($mainPages); $i++){
    echo ‘<url>
    <loc>’. $mainPages[$i] .’</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    </url>’;
    }
    //genereaza categoriile
    $map_result = mysql_query(“SELECT id FROM categorii”);
    while ($map_row = mysql_fetch_array($map_result)) {
    $category = “http://www.domeniu.ro/categorie/” . $map_row['id'] . “/”;
    echo ”
    <url>
    <loc>”. $category  .”</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    </url>”;
    }
    //genereaza elementele
    $map_result = mysql_query(“SELECT id FROM articole WHERE aprobat = 1″);
    while ($map_row = mysql_fetch_array($map_result)) {
    echo ‘
    <url>
    <loc>http://www.domeniu.ro/articol/’. $map_row['id'] .’/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    </url>’;
    }
    //inchide sitemapul
    echo ‘
    </urlset>’;
    ?>

la al 2 lea am inlocuit pe acolo ce si cum trebuie dar afiseaza asa :

Acest fișier XML nu pare să aibă nicio informație de stil asociată lui. Mai jos este afișat arborele documentului.
<?phprequire_once('conectare.php');


$pagina = @$_GET['pagina'];
// how many rows to show per page
$drowsPerPagina = 50;

// by default we show first page
$paginaNum = 1;

// if $page defined, use it as page number
if(isset($pagina))
{
$paginaNum = $pagina;
}

// counting the offset
$offset = ($paginaNum -1) * $drowsPerPagina;


$sql = "select * from `statusuri` LIMIT $offset, $drowsPerPagina";
$result = mysql_query($sql, $database) or die(mysql_error());
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset>
";

{
while($row = mysql_fetch_array($result)) {
$URL = $row["status"];
echo "<url><loc>http://www.MYSITE.com/product_$URL.html</loc></url>";
}
}
?>
</urlset>

Al 2 lea cod este :

Cod: Selectaţi tot



    <?php

    require_once('conectare.php');


      $pagina = @$_GET['pagina'];
    // how many rows to show per page
    $drowsPerPagina = 50;

    // by default we show first page
    $paginaNum = 1;

    // if $page defined, use it as page number
    if(isset($pagina))
    {
        $paginaNum = $pagina;
    }

    // counting the offset
    $offset = ($paginaNum -1) * $drowsPerPagina;


    $sql = "select * from `statusuri` LIMIT $offset, $drowsPerPagina";
    $result = mysql_query($sql, $database) or die(mysql_error());
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9\">
    ";

    {
    while($row = mysql_fetch_array($result)) {
      $URL = $row["status"];
    echo "<url>
            <loc>http://www.MYSITE.com/product_$URL.html</loc>
          </url>";
    }
    }
    ?>
    </urlset>




ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Generare sitemap automat

Mesajde ViezuREX » Joi Dec 13, 2012 3:59 pm

Iti recomand sa folosesti aplicatia de aici http://enarion.net/tools/phpsitemapng/ . Nu stiu daca este cu adevarat insa mie mi s-a parut cea mai buna solutie.

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Dum Ian 27, 2013 12:07 am

Eu as fi vrut ceva automat
adica sa ia din baza de date datele
ViezuREX scrie:Iti recomand sa folosesti aplicatia de aici http://enarion.net/tools/phpsitemapng/ . Nu stiu daca este cu adevarat insa mie mi s-a parut cea mai buna solutie.

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Generare sitemap automat

Mesajde ViezuREX » Dum Ian 27, 2013 1:32 am

Cred a e mai buna solutia recomandata de mine, mai ales ca functioneaza similar cu crawler-ul Google. Daca vrei sa faci ceva care sa citeasca din DB este posibil dar trebuie sa ti-o faci singur(a) pentru ca nici o aplicatie nu poate stii cum iti construiesti tu link-urile.

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Dum Ian 27, 2013 11:21 am

Da am incercat sa fac dar imi da erorare dar nu inteleg de ce ?

Cod: Selectaţi tot

    <?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <?php
    require_once('conectare.php');

    $cerereSQL = "SELECT * FROM `membri` ORDER BY id DESC";
    $rezultat = mysql_query($cerereSQL);
    while($rand = mysql_fetch_array($rezultat))
    {
    echo "
    <url>
        <loc>http://www.scapadeplictiseala.tk/profil-$rand[nume].php</loc>
        <lastmod>2013-01-26</lastmod>
        <changefreq>always</changefreq>
        <priority>1.0</priority>
      </url>
    ";
    }
    ?>
    </urlset>

Dar afiseaza codu php folosit.


ViezuREX scrie:Cred a e mai buna solutia recomandata de mine, mai ales ca functioneaza similar cu crawler-ul Google. Daca vrei sa faci ceva care sa citeasca din DB este posibil dar trebuie sa ti-o faci singur(a) pentru ca nici o aplicatie nu poate stii cum iti construiesti tu link-urile.

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Generare sitemap automat

Mesajde ViezuREX » Dum Ian 27, 2013 12:29 pm

Fa urmatoarea modificare:

Cod: Selectaţi tot

 <loc>http://www.scapadeplictiseala.tk/profil-".$rand[nume].".php</loc>

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Dum Ian 27, 2013 2:40 pm

Cod: Selectaţi tot

<xml version="1.0" encoding="utf-8";>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php require_once('conectare.php'); $cerereSQL = "SELECT * FROM `membri` ORDER BY id DESC";
 $rezultat = mysql_query($cerereSQL);
while($rand = mysql_fetch_array($rezultat))
{
echo '
<url>
<loc>http://www.scapadeplictiseala.tk/profil-'.$rand['nume'].'.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
';
}
?>
</urlset>

Dar afiseaza asa :
try.JPG
try.JPG (209.6 KiB) Vizualizat de 4966 ori


ViezuREX scrie:Fa urmatoarea modificare:

Cod: Selectaţi tot

 <loc>http://www.scapadeplictiseala.tk/profil-".$rand[nume].".php</loc>

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Generare sitemap automat

Mesajde ViezuREX » Dum Ian 27, 2013 3:26 pm

Daca vrei sa se vada frumos in browser pune si tu cate un <br /> la sfarsitul fiecarei linii, adica dupa tag-ul de inchidere.

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Dum Ian 27, 2013 3:30 pm

Pai nu e bine cum afiseaza adica ma refer ca nu apare ca un fisier xml cum e un adevar sitemap.xml
ci google nu mi-l citeste asa !
spune ca nu recunoaste linia <xml version="1.0" encoding="utf-8";> ca nu e un format bun
ViezuREX scrie:Daca vrei sa se vada frumos in browser pune si tu cate un <br /> la sfarsitul fiecarei linii, adica dupa tag-ul de inchidere.

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Generare sitemap automat

Mesajde ViezuREX » Dum Ian 27, 2013 6:21 pm

Pentru a fi intrepretat de browser ca si XML trebuie sa pui inainte de linia de afisare

Cod: Selectaţi tot

header("Content-type: text/xml");

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Dum Ian 27, 2013 10:39 pm

sitemap.php, in htacces
regula RewriteRule ^sitemap\.xml/?$ sitemap.php [L]
Erori :
Eroare la analiza XML: niciun element găsit
Adresă: http://www.scapadeplictiseala.tk/site.xml
Număr linie 437, coloană 10:
</urlset>
-----------^
Care linie 437 ? eu am decat 10-12 linii de cod.

Cod: Selectaţi tot

<xml version="1.0" encoding="utf8_general_ci">
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php header("Content-type: text/xml"); require_once('conectare.php');
$cerereSQL = "SELECT * FROM `membri` ORDER BY id DESC"; $rezultat = mysql_query($cerereSQL);
while($rand = mysql_fetch_array($rezultat))
{
echo '
<url>
<loc>http://www.scapadeplictiseala.tk/profil-'.$rand['nume'].'.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
';
}
?>
</urlset>

ViezuREX scrie:Pentru a fi intrepretat de browser ca si XML trebuie sa pui inainte de linia de afisare

Cod: Selectaţi tot

header("Content-type: text/xml");

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Generare sitemap automat

Mesajde ViezuREX » Lun Ian 28, 2013 7:26 am

Ai uitat sa pui tag-ul de inchidere al XML-ului. Adauga la sfarsit </xml>

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Lun Ian 28, 2013 10:54 am

Ok acum afiseaza cum trebuie, dar cand il trimit la google ca sa indexeze zice asa :
Format fişier neacceptat
Sitemapul dvs. nu pare să fie într-un format acceptat. Asiguraţi-vă că acesta respectă Regulamentul nostru pentru sitemapuri , apoi retrimiteţi-l.

ViezuREX scrie:Ai uitat sa pui tag-ul de inchidere al XML-ului. Adauga la sfarsit </xml>

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Re: Generare sitemap automat

Mesajde MihaiC » Lun Ian 28, 2013 10:57 am

ViezuREX scrie:Ai uitat sa pui tag-ul de inchidere al XML-ului. Adauga la sfarsit </xml>


Aia e declaratia documentului, nu tag. Si e scrisa gresit.
Dev @ oblio.eu

cadou
Average Member
Mesaje: 133
Membru din: Mar Oct 30, 2012 4:53 pm
Contact:

Re: Generare sitemap automat

Mesajde cadou » Lun Ian 28, 2013 11:03 am

si ce este de facut ?
Ce am scris gresit ?
Asta e codul care il am in prezent

Cod: Selectaţi tot

<xml version="1.0" encoding="utf8_general_ci">
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php header("Content-type: text/xml"); require_once('conectare.php');
$cerereSQL = "SELECT * FROM `membri` ORDER BY id DESC"; $rezultat = mysql_query($cerereSQL);
while($rand = mysql_fetch_array($rezultat))
{
echo '
<url>
<loc>http://www.scapadeplictiseala.tk/profil-'.$rand['nume'].'.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
';
}
?>
</urlset>
</xml>

Daca modific linia asta : <xml version="1.0" encoding="utf8_general_ci"> in <?xml version="1.0" encoding="utf8_general_ci"?>
Imi da eroarea : Parse error: syntax error, unexpected T_STRING in /site.php on line 1
desi toate sitemapurile au aceea linie asa <?xml version="1.0" encoding="utf8_general_ci"?>

MihaiC scrie:
ViezuREX scrie:Ai uitat sa pui tag-ul de inchidere al XML-ului. Adauga la sfarsit </xml>


Aia e declaratia documentului, nu tag. Si e scrisa gresit.


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 31 vizitatori