0

Hi.

I need to create an RSS file from one table in my database. I'm using PHP5 and MySQL.

I have searched on this and tried to do it myself but i'm not sure what path to take. Should I use SimpleXML to do it?

I am hoping someone might be able to point me in the right general direction. So anyone done this before and can help me out?


Many thanks.

3
Contributors
4
Replies
5
Views
9 Years
Discussion Span
Last Post by rickya100
0

Hi RichAppsConsult,

Thanks for the page. I had actually come across that one when searching. I didn't use it as there seems to be bits that I don't need in it and I don't enderstand everything it uses such as the '<rdf:Seq>' namespace use.

I'm looking to just output 4 or 5 text fields from my DB (story_title, story, link, link_title, date) to a simple XML (in RSS format) file.

I don't need images etc and would love to keep it simple at first and just make sure I understand everything.

I see lots of stuff for parsing XML files and I can actually already do that OK but it is not as easy to find something coherent on the issue of outputting XML.

0

Since the XML output for an RSS is fairly static, I use smarty to generate it, instead of an XML parser.

0

Hi,

Thanks for the two replies.

I just got it working as the second comment came in. I thought would post up the code for others.

Basically it connects to a table and keeps adding text to the $xml_output variable and then writes what is in the variable to an xml file.

In it's current state I am still trying to get it to validate but it worked for me so should get you going.

<?php
$host = "localhost";
$user = "username";
$pass = "password";
$database = "name of DB";

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");

$query = "SELECT * FROM updates ORDER BY id DESC";
$resultID = mysql_query($query, $linkID) or die("Data not found.");

$xml_output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$xml_output .= "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
$xml_output .= "<channel>\n";
$xml_output .= "<title>Title of whole feed</title>\n";
$xml_output .= "<link>link for whole feed</link>\n";
$xml_output .= "<description>Description of whole feed</description>\n";
$xml_output .= "<language>en</language>\n";

for($x = 0; $x < mysql_num_rows($resultID); $x++){
    $row = mysql_fetch_assoc($resultID);
    $xml_output .= "\t<item>\n";
    $xml_output .= "\t\t<title>" . $row['title'] . "</title>\n";
    $xml_output .= "\t\t<link>" . $row['link_dest'] . "</link>\n";
    $xml_output .= "\t\t<description>" . $row['description'] . "</description>\n";
	$xml_output .= "\t\t<guid isPermaLink=\"true\">http://www.yoursite.com#".$row['id']."</guid>\n";
    $xml_output .= "\t</item>\n";
}

$xml_output .= "</channel>\n";
$xml_output .= "</rss>";

$filename_path = '../feeds/filename_'.$_COOKIE['lang'].'.xml';

$file_write = file_put_contents($filename_path, $xml_output);



?>
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.