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

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

Re: Generare sitemap automat

Mesajde ViezuREX » Lun Ian 28, 2013 11:09 am

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.


Ce bine ca ma pandeste si pe mine cineva ca sa-mi atraga atentia cand gresesc ... desi cred ca mi util era sa-l fi ajutat pe cadou.

Cadou, pune <xml version="1.0" encoding="UTF-8" ?>, ca sa il poti afisa escapeaza ?> din echo pentru ca altfel el o sa inteleaga ca acolo s-a terminat codul PHP.



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:18 am

Am facut cu echo :

Cod: Selectaţi tot

<?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 '<xml version="1.0" encoding="UTF-8" ?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
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>
';
echo '</urlset>';
echo '</xml>';
}
?>

Erori :
Eroare la analiza XML: nu este bine format
Adresă: http://www.scapadeplictiseala.tk/site.xml
Număr linie 1, coloană 37:
<xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
------------------------------------------------^
e problema cu semnu ? acolo . !!!

dar daca pun asa : <?xml version="1.0" encoding="UTF-8" ?>
da eroarea asta :
Eroare la analiza XML: nu este bine format
Adresă: http://www.scapadeplictiseala.tk/site.xml
Număr linie 8, coloană 11:
</urlset></xml><?xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-------------^
Adica la </xml>

ViezuREX scrie:
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.


Ce bine ca ma pandeste si pe mine cineva ca sa-mi atraga atentia cand gresesc ... desi cred ca mi util era sa-l fi ajutat pe cadou.

Cadou, pune <xml version="1.0" encoding="UTF-8" ?>, ca sa il poti afisa escapeaza ?> din echo pentru ca altfel el o sa inteleaga ca acolo s-a terminat codul PHP.

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 11:23 am

Eu nu inteleg cum dupa 100+ de posturi pe aici inca mai scoti perle d-astea de programare.
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:29 am

N0 c0mm3nt !
MihaiC scrie:Eu nu inteleg cum dupa 100+ de posturi pe aici inca mai scoti perle d-astea de programare.

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

Re: Generare sitemap automat

Mesajde ViezuREX » Lun Ian 28, 2013 11:54 am

Pai MihaiC, desi m-a "articulat", are dreptate, tu stii care este semnificatia ?> in PHP? Sau tot postezi in speranta ca cineva se va plictisi si iti va face scriptul?

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:58 am

la php stiu ca se foloseste <?php si ?>
Dar la xml nu stiu nimic, adica am generat pe un site un sitemap.xml si de acolo am extras

partea de sus <xml .....
si partea cum arata am facut cu php ca sa faca update automat in sitemap ca sa nu mai adaug eu manual.
acolo am vazut ca e <?xml .... ?>

ViezuREX scrie:Pai MihaiC, desi m-a "articulat", are dreptate, tu stii care este semnificatia ?> in PHP? Sau tot postezi in speranta ca cineva se va plictisi si iti va face scriptul?

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Re: Generare sitemap automat

Mesajde vectorialpx » Mar Ian 29, 2013 10:50 am

Nu are legatura cu PHP-ul. Si tag-ul de XML se inchide tot asa... trebuie doar sa fie intre ghilimele.

Cod: Selectaţi tot

<?xml version="1.0" encoding="UTF-8"?>
e foarte corect.

Problema ta este ca ai mai multe XML-uri intr-un singur fisier, ceea ce nu se poate.

Cod: Selectaţi tot

while($rand = mysql_fetch_array($rezultat)) {
    echo '<xml version="1.0" encoding="UTF-8" ?>';
e o imbecilitate. Cum sa pui header-ul in while? 8O
Rezultatul este, dupa cum se vede in documentul tau
<xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-thunderman.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-gabriel.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-alexandru73.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-firebleast.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-danuta1986.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>


In speranta ca vei rezolva problema si o sa scapam de acest thread, iti ofer un copy-paste:

Cod: Selectaţi tot

echo '<xml version="1.0" encoding="UTF-8" ?>'."\n";
while( $rand = mysql_fetch_array($rezultat) ) {
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
    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>
';
    echo '</urlset>';
}
echo '</xml>';

Avatar utilizator
inginerul
Average Member
Mesaje: 111
Membru din: Sâm Dec 01, 2012 11:34 pm
Contact:

Re: Generare sitemap automat

Mesajde inginerul » Mar Ian 29, 2013 3:27 pm

asta a fost cel mai amuzant topic:))
ti sa oferit raspunsul foarte clar pe forumul lui marplo. nu are ce cauta cod php in fisierul xml. acesta trebuie sa fie exact ca si cand l-ai scrie de mana fiecare litera in parte. fa un script care preia link-urile din baza de date si cu fwrite() le scrie in fisierul xml. trebuie putina imaginatie.

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

Re: Generare sitemap automat

Mesajde MihaiC » Mar Ian 29, 2013 3:30 pm

Eu nu inteleg.
V-ati molipsit cu totii de la cel care a pornit topicul ?

eu stiu ca sitemap-ul tre' sa arate ceva de genul:

Cod: Selectaţi tot


<?xml version="1.0" encoding="UTF-8"?>
<urlset
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xml:ns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
    <url>
        <loc>http://pongo/fimax/</loc>
    </url>
    <url>
        <loc>http://pongo/fimax/despre/</loc>
    </url>
    <url>
        <loc>http://pongo/fimax/contact/</loc>
    </url>
</urlset>


declaratia aia trebuie sa aiba un semnul intrebarii la inceput, nu exista nici un tag "xml" care sa se inchida si ce e in loop e doar tagul "<url>" + ce e in el.

P.S.: @cadou : cand am nevoie sa fac ceva, intai ma documentez de acel lucru si dup-aia incep sa scriu coduri.
Citeste despre xml-uri, apoi gandeste-te ce structura trebuie sa aiba xml-ul tau si apoi fa scriptul.
Dev @ oblio.eu

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

Re: Generare sitemap automat

Mesajde cadou » Mar Ian 29, 2013 3:55 pm

Scz ca am intarziat cu raspunsul.
Poftim am facu exact ce mi-ai dat:
erori normal ca apar :
Eroare la analiza XML: nu este bine format
Adresă: http://www.scapadeplictiseala.tk/site.xml
Număr linie 1, coloană 37:
<xml version="1.0" encoding="UTF-8" ?>
------------------------------------------------^
Daca folosesc asa :
<?xml version="1.0" encoding="UTF-8"?>
eroare :
Eroare la analiza XML: gunoi după elementul document
Adresă: http://www.scapadeplictiseala.tk/site.xml
Număr linie 9, coloană 10:
</urlset><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
------------^
Cred ca am spus de cateva ori ca da folosesc asa <?xml version="1.0" encoding="UTF-8"?> si asa <xml version="1.0" encoding="UTF-8"?> da erori!

Cod: Selectaţi tot

<?php header("Content-type: text/xml"); require_once('conectare.php');
echo '<xml version="1.0" encoding="UTF-8" ?>'."\n";  pai mai sus spui ca e corect asa <?xml version="1.0" encoding="UTF-8"?> dar mai jos dai asa <xml version="1.0" encoding="UTF-8"?>
$cerereSQL = "SELECT * FROM `membri` ORDER BY id DESC";
$rezultat = mysql_query($cerereSQL);
while( $rand = mysql_fetch_array($rezultat) ) {
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
    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>
';
    echo '</urlset>';
}
echo '</xml>';
?>


vectorialpx scrie:Nu are legatura cu PHP-ul. Si tag-ul de XML se inchide tot asa... trebuie doar sa fie intre ghilimele.

Cod: Selectaţi tot

<?xml version="1.0" encoding="UTF-8"?>
e foarte corect.

Problema ta este ca ai mai multe XML-uri intr-un singur fisier, ceea ce nu se poate.

Cod: Selectaţi tot

while($rand = mysql_fetch_array($rezultat)) {
    echo '<xml version="1.0" encoding="UTF-8" ?>';
e o imbecilitate. Cum sa pui header-ul in while? 8O
Rezultatul este, dupa cum se vede in documentul tau
<xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-thunderman.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-gabriel.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-alexandru73.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-firebleast.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset></xml><xml version="1.0" encoding="UTF-8" ?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.scapadeplictiseala.tk/profil-danuta1986.php</loc>
<lastmod>2013-01-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>


In speranta ca vei rezolva problema si o sa scapam de acest thread, iti ofer un copy-paste:

Cod: Selectaţi tot

echo '<xml version="1.0" encoding="UTF-8" ?>'."\n";
while( $rand = mysql_fetch_array($rezultat) ) {
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
    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>
';
    echo '</urlset>';
}
echo '</xml>';

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

Re: Generare sitemap automat

Mesajde cadou » Mar Ian 29, 2013 3:56 pm

Da ma bucur ca va amuzati pe seama mea
inginerul scrie:asta a fost cel mai amuzant topic:))
ti sa oferit raspunsul foarte clar pe forumul lui marplo. nu are ce cauta cod php in fisierul xml. acesta trebuie sa fie exact ca si cand l-ai scrie de mana fiecare litera in parte. fa un script care preia link-urile din baza de date si cu fwrite() le scrie in fisierul xml. trebuie putina imaginatie.

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

Re: Generare sitemap automat

Mesajde cadou » Mar Ian 29, 2013 3:59 pm

Chestia e ca inainte sa ma apuc sa fac acest cod de sitemap am creat unul online , lam descarcat mam uiat pe el cum arata.
si mam gandit ca partea asta :
<url>
<loc>http://pongo/fimax/</loc>
</url>
sa fac ceva cu php care sa genereze automat aceste <url> <loc>.
Dar pana la urma nu inteleg chestia cu randu asta :
<?xml version="1.0" encoding="UTF-8"?> de ce imi da eroare .
adica corect e asa <?xml version="1.0" encoding="UTF-8"?> dar daca folosesc asa da eroare.
De aceea am facut acest topic !

MihaiC scrie:Eu nu inteleg.
V-ati molipsit cu totii de la cel care a pornit topicul ?

eu stiu ca sitemap-ul tre' sa arate ceva de genul:

Cod: Selectaţi tot


<?xml version="1.0" encoding="UTF-8"?>
<urlset
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xml:ns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
    <url>
        <loc>http://pongo/fimax/</loc>
    </url>
    <url>
        <loc>http://pongo/fimax/despre/</loc>
    </url>
    <url>
        <loc>http://pongo/fimax/contact/</loc>
    </url>
</urlset>


declaratia aia trebuie sa aiba un semnul intrebarii la inceput, nu exista nici un tag "xml" care sa se inchida si ce e in loop e doar tagul "<url>" + ce e in el.

P.S.: @cadou : cand am nevoie sa fac ceva, intai ma documentez de acel lucru si dup-aia incep sa scriu coduri.
Citeste despre xml-uri, apoi gandeste-te ce structura trebuie sa aiba xml-ul tau si apoi fa scriptul.

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

Re: Generare sitemap automat

Mesajde MihaiC » Mar Ian 29, 2013 4:23 pm

Iti da eroare pentru ca ce e intre <? ?> ti-l evalueaza ca si cod php, si nu e.
Solutia simpla e sa pui cu echo

Cod: Selectaţi tot

echo '<?xml version="1.0" encoding="UTF-8"?>';


Scoate naiba creierul de la murat si foloseste-l.
Ce naiba ? Asta e o problema simpla.

Daca trebuia sa faci folosing DOMDocument ( http://php.net/manual/en/class.domdocument.php ) ?
Dev @ oblio.eu

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Re: Generare sitemap automat

Mesajde vectorialpx » Mar Ian 29, 2013 4:30 pm

MihaiC scrie:Eu nu inteleg.
V-ati molipsit cu totii de la cel care a pornit topicul ?

Te rog, nu ma ofensa in halul asta! :?
M-a luat putin mana pe di-nainte si am uitat ca acel <urlset> nu se repeta.
In fine, de acum nu mai postez la thread-urile domnului, ca ma enerveaza si-mi pierd concentrarea.

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

Re: Generare sitemap automat

Mesajde cadou » Joi Ian 31, 2013 5:12 pm

Uite ce am realizat, dar google zice ca nu e in format acceptat de ei

Cod: Selectaţi tot

<?php header("Content-type: text/xml"); require_once('conectare.php');
echo '<?xml version="1.0" encoding="utf8_general_ci"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
$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>
';
}
echo '</urlset>';
?>

Afiseaza cum trebuie e ok!


Înapoi la “Cod PHP”

Cine este conectat

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