Petits soucis avec le fonction echo

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Petits soucis avec le fonction echo

Message le Jeu Nov 29, 2007 22:08

Bonjour,

J'ai un petit soucis avec la fonction echo !

J'ai créer une table spéciale dans laquelle les adresses url rewrités sont automatiquement insérée.

Je souhaite maintenant générer un sitemap en utilisant ces données.

J'ai donc créé un fichier sitemap.php qui est le suivant :

Code: Tout sélectionner
<? echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'
?>
<? include ('dbconnect.php');

// on crée la requete SQL
$sql = "SELECT lien, datecreation FROM sitemap";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

if (mysql_num_rows($req) > 0)
{

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
   {   
echo '<url><br>
<loc>'.$data['lien'].'</loc><br>
<lastmod>'.$data['datecreation'].'</lastmod><br>
</url><br>';
   }
   }
echo '</urlset>';

// on ferme la connexion à mysql
mysql_close();
?>


Et j'ai mis en place dans mon fichier .htaccess :

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^sitemapconcours\.xml$ /sitemapconcours.php [QSA,L]


Les données sont bien récupérée de la base et j'ai bien accès au fichier sitemapconcours.xml...Mais par contre il n'affiche que le lien et la date de création...

EX :

http://www.monsite.fr/loteries-argent-4 ... -test.html
2007-11-29

Et je voudrais qu'il affiche :

Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.voilou.fr/loteries-argent-44-jeu-concours-voiloutest.html</loc>
<lastmod>2007-11-29</lastmod>
</url>
<urlset>


Je ne comprends pas pourquoi il n affiche pas les autres données car elles sont aussi englobée dans le 'echo'...

Quelqu un pourrait il m'éclairer?

Ah oui j'ai aussi essayé en mettant des double quotes autour de chaque mot mais en vain...

Merci


SuperCureuil
WRInaute passionné
WRInaute passionné
 
Messages: 662
Inscription: Ven Mar 09, 2007 9:44

Message le Jeu Nov 29, 2007 22:54

Le point-virgule à la fin du echo concerné peut-être ...

Parfois des heures pour une connerie du genre :wink:

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Jeu Nov 29, 2007 23:39

Mais il y a bien la virgule...si je l enleve cela ne marche plus et j aurai une page blanche....

J'ai trouvé la solution....

J'ai fait:

Code: Tout sélectionner
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>
&lt;urlset xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br>
xsi:schemaLocation=&quot;http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd&quot; xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&gt;<br>
<? include ('dbconnect.php');

// on crée la requete SQL
$sql = "SELECT lien, datecreation FROM sitemap";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

if (mysql_num_rows($req) > 0)
{

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
   {   
echo '&lt;url&gt;<br>
&lt;loc&gt;'.$data['lien'].'&lt;/loc&gt;<br>
&lt;lastmod&gt;'.$data['datecreation'].'&lt;/lastmod&gt;<br>
&lt;/url&gt;<br>';
   }
   }
echo '&lt;/urlset&gt;';

// on ferme la connexion à mysql
mysql_close();
?>


Par contre juste une question...

En allant sur :

http://www.voilou.fr/sitemap.xml > sitemap généré manuellement
http://www.voilou.fr/sitemapconcours.xml > sitemap généré en urlrewriting....

Le premier est reconnu sous le format xml et est en couleur...Alors que pour le second, ce n est pas le cas...cela posera t il probleme?

Merci

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Ven Nov 30, 2007 0:02

arf...Je me suis réjouis trop vite...google a refusé le sitemap...Da illeurs sous IE on me dit que le fichier n est pas valide...sous Firefox il affiche le fichier...


SuperCureuil
WRInaute passionné
WRInaute passionné
 
Messages: 662
Inscription: Ven Mar 09, 2007 9:44

Message le Ven Nov 30, 2007 0:16

Je n'y connais rien en url rewriting, donc je ne sais pas exactement ce que cela produit en utilisant cette méthode :wink:

Pour tes caractères spéciaux en utf 8 tu peux utiliser utf8_encode() et utf8_decode() pour l'affichage, c'est moins prise de tête.

Sinon, c'est pas une histoire de header, vu que tu génères le fichier avec du php ?

En première ligne :

Code: Tout sélectionner
header("Content-type: text/xml");


Puis tu affiches ton code et tu fais ta requête.

Chuis pas sûr mais bon :lol:

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Ven Nov 30, 2007 0:21

Hello merci de ton aide !

Voila j ai enfin réussi !

Alors le code de la page sitemap.php est :

Code: Tout sélectionner
<?
echo'<'.'?xml version="1.0" encoding="UTF-8"?'.'>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
'; ?>
<? include ('dbconnect.php');

// on crée la requete SQL
$sql = "SELECT lien, datecreation FROM sitemap";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

if (mysql_num_rows($req) > 0)
{

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
   {   
echo '<url>
<loc>'.$data['lien'].'</loc>
<lastmod>'.$data['datecreation'].'</lastmod>
</url>';
   }
   }
echo '</urlset>';

// on ferme la connexion à mysql
mysql_close();
?>


Apres j'ai fait dans un fichier .htaccess :

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^sitemapconcours\.xml$ /sitemapconcours.php [QSA,L]


Et voila...Maintenant ca récupère les liens et la date de création dans la base de donnée...Etant donné que j'ai quasi que des jeux concours sur mon site, j ai egalement créé un cronjob qui se charge de supprimer les entrées obsolètes de la table sitemap...Ce qui supprime automatiquement les données du sitemap !

Bonne soirée !


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités