Scripts

xml genereren (rss-feed) vanuit Mysql

Kon het toch niet laten. Aan de hand van een eerder scriptje 'rss -> db' , ben ik vanaf scratch bijmezelf aan de slag gegaan en wat code geschreven die vanuit een MySQL db een xml gegereert, zodat er een rss button kan worden geplaatst, waarbij de bezoekers veranderingen in de db kunnen constateren middels een rss-feed reader. De code zoals hieronder is niet direkt te gebruiken voor eigen websites, maar het is wel leuk om als beginner het te bestuderen en evt. aan te passen. Hopelij heeft er iemand plezier aan. grt, Rene

xml-genereren-rssfeed-vanuit-mysql
[code]
<?php
session_start();

$authlevel=$_SESSION["userlevel"];
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 //EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<META NAME="GENERATOR" content="Microsoft FrontPage 6.0">
<META NAME="DESCRIPTION" CONTENT="thuisbioscoop"> 
<META NAME="KEYWORDS" CONTENT="films, thuisbioscoop"> 
<META NAME="WEB_AUTHOR"="Rene Wennekes">

<title>Top</title>

<link rel="stylesheet" href="film.css" type="text/css">
<script language="JavaScript1.2" src="menu_data.js"></script>



</head>

<body>

<div class="header">
</div>

<div class="navbar">

<?php
$filename="menu1.txt"; // Hier staan in een text bestand de links van de navigatiebar.
$fp=fopen($filename,"r");
while ($link=fgetcsv($fp, filesize($filename), ",")) {
  print "<a class=\"navbar\" target=\"$link[3]\" href=\"$link[1]\" TITLE=\"$link[2]\">$link[0]</a>";
  }
fclose ($fp);
?>

</div>
<!--
<script language="JavaScript1.2" src="menu_script.js"></script>
-->
<div class="main" STYLE="background-image: url(droom-theater3.jpg); background-repeat: no-repeat; background-attachment: fixed;">
<p>
<center>

<!-- Agenda -->

<p>
<center>
<b><font face="Arial" size="1">Agenda:</font></b><font face="Arial" size="2"></font><br><br>

<?php

$dbhost="localhost";
$dbuser="een gebruiker";
$dbpass="een wachtwoord";
$db="een database";

$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");

$sql="SELECT * FROM `agenda` order by 'datum' ASC";

$result=mysql_db_query("$db","$sql",$mysql_id) or die("Connectie met database is mislukt");

// XML/RSS bestand klaarmaken

if ($authlevel == "6") {
$filename="agenda.xml";
$fd=fopen($filename,"w") or die  ("XML bestand kan niet worden aangemaakt");
$xml_header=<<<XMLHEADER
<?xml version="1.0" encoding="windows-1252" ?> 
<rss version="2.0">
<channel>
  <title>Agenda Bioscoop Rene Wennekes</title> 
  <link>http://www.wennekes.info/homecinema</link> 
  <description>Agenda overzicht bioscoop van Rene Wennekes.</description> 
  <language>nl</language> 
  <copyright>Copyright (C) 2007 Rene Wennekes. Alle rechten voorbehouden.</copyright> 
  <image>
  <title>Dit is mijn logo</title> 
  <link>http://www.wennekes.info/homecinema</link> 
  <url>http://www.wennekes.info/rene.jpg</url> 
  </image>

XMLHEADER;
$file_error=fwrite($fd,$xml_header);
}

while ($line=mysql_fetch_row($result)) {
  $id=$line[0];         # ID van de agenda-item
  $id_titel=$line[1];   # De id van de film
  $date_us=$line[2];       # Datum (us formaat)
  $date_nl=substr($date_us,8,2)."-".substr($date_us,5,2)."-".substr($date_us,0,4);
  $time=$line[3];       # Tijd
  
  $sql2="SELECT * FROM `films` where id=$id_titel"; // Nu de film ophalen die hoort bij de id
  
  $result2=mysql_db_query("$db","$sql2",$mysql_id) or die("Connectie met database is mislukt");
  
  while ($line2=mysql_fetch_row($result2)) {
    $title=$line2[1];   # Titel van de film
    $year=$line2[3];   # Productiejaar van de film
    $length=$line2[4];   # Speelduur van de film
    $genre=$line2[7];   # Genre van de film
    $image=$line2[9];   # Afbeeldingpad van de film
    $decription=$line2[10];  # Omschrijving van de film
    # Indien plaatje aanwezig <img> tag aanmaken voor xml bestand
    if ($image != "") {
      $imageurl="<img src=\"http://www.wennekes.info/homecinema/DBase/images/$image\" align=\"left\" border=\"0\">";
      } else {
      unset ($imageurl); // Anders verschijnt er een plaatje van de vorige record als de huidige geen foto heeft.
      }
    
    print "<p>\n";
    print " Op $date_nl om $time<br><A HREF=\"filmdetail.php?filmnum=$id_titel\">$title</A> ($year),<br>$length minuten, $genre\n";

    print "</p>\n";
    
    // <item> tag met inhoud toevoegen aan xml bestand

if ($authlevel == "6") {
$public_date=date('D, d M Y H:i:s');
$xml_item="
<item>
\t<title>
\t<![CDATA[ <b>$date_nl $time </b>$title\n\t]]>
\t</title>
\t<link>http://www.wennekes.info/homecinema/filmdetail.php?filmnum=$id_titel</link>
\t<description>
\t<![CDATA[ 
\t$imageurl
\t<b>Jaar: </b>$year<br>
\t<b>Omschrijving: </b>
\t$description<br>
\t<br>
\t<b>Lengte: </b>$length<br>
\t<b>Genre: </b>$genre<br>
\t<br>
\t<b>Datum: </b>$date_nl<br>
\t<b>Tijd: </b>$time<br>
\t]]>
\t</description>
\t<pubDate>$public_date</pubDate>
</item>
";

$file_error=fwrite($fd,$xml_item);
} // Afsluiten lus van item in het xml bestand schrijven indien ingelogd als beheerder
    
    } // Afsluiten lus line 82
  
  } // Agenda records ophalen line 71

if ($authlevel == "6") {
// XML/RSS bestand afsluiten

$xml_footer=<<<XMLFOOTER

</channel>
</rss>
XMLFOOTER;
$file_error=fwrite($fd,$xml_footer);
fclose($fd);
print "<p>Er is een nieuwe versie van agenda.xml weggeschreven.</p>";
}

?>

<p><center><font face="Arial" size="1" color="#FF9933">(Wijzigingen 
voorbehouden)</font>
<br>
<a href="http://www.wennekes.info/homecinema/agenda.xml" target="_blank">
<img border="0" src="rss.gif" title="XML/RSS feed voor de filmagenda" width="26" height="26"></a>

</div>
</body>
</html>
[/code]

[i]Danny Roelofs : even de [ignore][code][/code][/ignore] tags toegevoegd.

Reacties

0
Nog geen reacties.