Page 1 sur 1

Problème script php rss

Posté : 03 oct. 2007, 14:40
par Toons43
Bonjour à tous,

Je débute en PHP et j'ai un problème avec un script que j'aimerais utiliser pour mon site. Celui-ci permet de créer un flux RSS à partir de mes données dans ma baseSQL
En fait dans mon code je fais 2 requêtes sur 2 tables différentes, le problème est que l'url que je souhaite afficher prend les premières valeurs de ma table et non pas celles en rapport avec mes autres données.

Voici mon code

Code : Tout sélectionner

<? Header("content-type: application/xml"); // En-tête echo "<"."?xml version=\"1.0\" encoding=\"ISO-8859-1\"?"."> <rss version=\"2.0\"> <channel> <title>Flux RSS</title> <link>http://www.monsite.com</link> <description>Flux rss de mon site</description> "; // Connexion mysql_connect("localhost", "root", "123456"); // Connexion à MySQL mysql_select_db("maBaseMySQL"); // Sélection de la base coursphp // Sélection des fiches $RS = mysql_query("SELECT Description, Marchand, Date_fin FROM reduction ORDER BY Marchand"); $RS2 = mysql_query("SELECT Categorie, ID, Marchand FROM marchand") or die(mysql_error()); // Requête SQL // Listing while($val=mysql_fetch_array($RS) AND $val2 = mysql_fetch_assoc($RS2)) { echo " <item> <title>".$val["Marchand"]."</title> <link>http://www.monsite.com/repertoire/".$val2['Categorie']."/".$val2['ID']."-".$val2['Marchand'].".htm</link> <description>".$val["Description"]."</description> <pubDate>".gmdate('D, d M Y H:i:s',$val["Date_fin"])." GMT</pubDate> </item> "; } // Déconnexion mysql_close(); // Fin d'affichage echo " </channel> </rss> "; ?>
Les valeurs Categorie, ID et Marchand de la balise <link> ne correspondent pas avec la valeur Marchand de la balise <title>

Si vous pouviez m'aider, ce serait super sympa

D'avance merci

Bonne journée[/code]

Posté : 03 oct. 2007, 16:26
par Ryle
C'est normal, tes deux requêtes sont totalement indépendante et rien ne garantie que les résultats arriveront dans le même ordre, ni ne seront aussi nombreux dans une requête que dans l'autre.

Le mieux serait de faire une jointure entre tes deux tables et ramener les enregistrements dont tu as besoin dans une seule requête :
$sql = "SELECT r.description, r.marchand, r.date_fin, m.categorie, m.id
           FROM reduction r
           LEFT JOIN marchand m ON r.marchand = m.marchand
           ORDER BY r.marchand";
On effectue ainsi une jointure entre les deux tables reduction et marchand (c'est à dire que l'on va croiser les données des deux tables), sur la condition reduction.marchand = marchand.marchand, en donnant les alias "r" et "m" aux noms des tables pour alléger l'écriture :)

Posté : 03 oct. 2007, 16:45
par Toons43
Bonjour,

C'est génial ça fonctionne :D , j'avais lu quelques sujets sur les jointures mais je n'aivais pas vraimpent compris comment ça fonctionnait.

En tout cas merci milles fois

A bientôt