Hoi,
Mijn feed die ik wil maken werkt niet. Ik wil een feed maken waarbij een PHP bestand nieuwe vacatures ophaalt uit de databse. Kan iemand mij helpen ? De velden die ik wil meenemen staan bij SELECT.....FROM.

Dit is het PHP-bestand:

<?php
header 'content-Type: application/xml; charset=UTF-8'; //Het is een XML-bestand

echo '<rss version=\"2.0\">\n';
echo '<channel>\n';
echo '<title>Marks Pagina</title>\n ';
echo '<link>http://www.vacature-werkt.nl/Vacature-zoeken-feed.xml</link>\n ';
echo '<description>De RSS-feed van Marks Pagina.</description>\n ';
echo '<language>nl</language>\n';

// Verbinding maken
$conn = mysql_connect('******','*****','****');
if(!$conn) {
echo 'Error: cannot make connexion. Please contact ##.<br />';
} else {
echo 'There is an connexion with the database.<br />';
}

// Database selecteren
$db = mysql_select_db('*****');
if(!$db) {
echo 'Error: cannot make connexion. Please contact Search Jobs Abroad.<br />';
} else {
echo 'Database selected.<br />';
}

$qry = "SELECT id, naamvacature, vacaturebeschrijving FROM vacatures ORDER BY datum DESC LIMIT 10";

while($rss_feed = mysql_fetch_assoc($sql))
{
$id = $rss_feed['id'];
$naamvacature = $rss_feed['naamvacature'];
$datum = $rss_feed['datum'];
$vacaturebeschrijving = stripslashes($rss_feed['vacaturebeschrijving']);
$vacaturebeschrijving = htmlspecialchars($vacaturebeschrijving); //Alle html tekens omzetten in leesbare tekens

echo '<item>\n';
echo '<title>'.$naamvacature.'</title>\n';
echo '<pubdate>'.$datum.'</pubdate>';
echo '<link>http://www.jesite.nl/link/naar/het/artikel/'.id.'</link>\n';;
echo '<description>'.$vacaturebeschrijving.'...</description>\n';
echo '</item>\n';
echo '</channel>\n';
echo '</rss>';
?>


En dit is het XML-bestand:
<?xml version="1.0"?>
<rss version="2.0">
<channel>

<item>
<title>De titel van het item - 1</title>
<link>http://www.jesite.nl/link/naar/het/artikel/</link>;
<pubdate>Wed, 24 Feb 2010 19:05:58 +0000</pubdate>
<creator>Auteur</creator>
<description>Het hele artikel, een gedeelte of een samenvatting ervan.</description>
</item>

<item>
<title>De titel van het item - 2</title>
<link>http://www.jesite.nl/link/naar/het/artikel/</link>;
<pubdate>Wed, 24 Feb 2010 19:05:58 +0000</pubdate>
<creator>Auteur</creator>
<description>Het hele artikel, een gedeelte of een samenvatting ervan.</description>
</item>

</channel>
</rss>
Hoi, hij is nu RSS valid maar nog niet geheel correct:

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

line 8, column 0: Missing atom:link with rel="self" [help]

Als ik bij HELP ga kijken wordt ik niet veel wijzer.......

Hoezo missen mijn item's > ? Die zijn toch ge-echoed ?
ik items zie die niet terug komen in je uiteindelijk feed? (zie validator)

Over die melding van de validator:

Solution

If you haven't already done so, declare the Atom namespace at the top of your feed, thus:

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">;

Then insert a atom:link to your feed in the channel section. Below is an example to get you started. Be sure to replace the value of the href attribute with the URL of your feed.

<atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />

Dit lijkt me wel duidelijk, zo ;-)?

Tags boven plaatsen, en een tagje in de <channel>-sectie. niet verplicht, maar mag wel.
Hoi,

Ik heb het nu alsvolgt, werkt nog steeds niet...


<?
// plaats de header
header("Content-Type: application/xml; charset=UTF-8");

// laad de database connectie
require("connecten.php");

// laad de 5 laatst toegevoegde artikelen uit de database
$sql = mysql_query("SELECT id, naamvacature, vacaturebeschrijving FROM vacatures ORDER BY id DESC LIMIT 5");

// plaats rss informatie
echo("<rss version=\"2.0\" xmlns:atom="http://www.w3.org/2005/Atom">\n";);
echo("<channel>\n");
echo("<title>Vacatures Werken</title>\n");
echo("<link>http://www.vacature-werkt.nl/Vacaturegegevens.php</link>\n";);
echo("<description>korte omschrijving van je website</description>\n");
echo("<language>nl</language>\n");

// laad de artikelen uit de database
while($rss_feed = mysql_fetch_assoc($sql))
{
// filter de extra slashes
$vacaturebeschrijving = stripslashes($rss_feed['vacaturebeschrijving']);

// zet alle html karakters om in leesbare tekens
$vacaturebeschrijving = htmlspecialchars($vacaturebeschrijving);

// plaats de artikelen
echo("<item>\n");
echo("<title>".$rss_feed['naamvacature']."</title>\n");
echo("<link>http://www.vacature-werkt.nl/Vacaturegegevens.php?id".$rss_feed['id']."</link>\n";);
echo("<description>".$vacaturebeschrijving."</description>\n");
echo("</item>\n");
}

// sluit de rss informatie
echo("<atom:link href="http://www.vacature-werkt.nl/Vacature-zoeken-feed2.php"; rel="self" type="application/rss+xml" />\n");
echo("</channel>\n");
echo("</rss>");
?>
ALs het om bovenstaande link gaat, krijg ik dit:

Server returned HTTP Error 500: Internal Server Error

Check je error_log eens...

Ook raad ik aan om eens naar de gegeven adviezen in dit topic te kijken. Wederom ontbreekt ook foutafhandeling, en zie ik op lijn 37 een niet ge-escapede double-quote.
Je bent je echo met een double-quote, en eindigt met een double-quote, nog niks mis mee.

Maar het is wel mis dat PHP zich dan verslikt in de double-quote voor http://www.w3.org/2005/Atom, die moet je net als de anderen uiteraard ook escapen door er een \ voor te plaatsen.

Idem dito moet je ook bij je tweede lijn doen.

Ik raad aan om eens een PHP tutorial te doen op bijv. www.phptuts.nl. Dit is een behoorlijke basic-fout die je wel zou moeten zien en begrijpen naar mijn mening.

over foutafhandeling staat een leuke tutorial op phpHulp. En een error_log, die heb je vast wel. Die zal je ergens in je FTP kunnen vinden, buiten je 'public_html' / 'www' of 'htdocs' map.
Hoi,

Ik krijg dan onderstaande, maar blijft een Server returned HTTP Error 500: Internal Server Error
<?
// plaats de header
header("Content-Type: application/xml; charset=UTF-8");

// laad de database connectie
require("connecten.php");

// laad de 5 laatst toegevoegde artikelen uit de database
$sql = mysql_query("SELECT id, naamvacature, vacaturebeschrijving FROM vacatures ORDER BY id DESC LIMIT 5");

// plaats rss informatie
echo("<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom">\n";);
echo("<channel>\n");
echo("<title>Vacatures Werken</title>\n");
echo("<link>http://www.vacature-werkt.nl/Vacaturegegevens.php</link>\n";);
echo("<description>korte omschrijving van je website</description>\n");
echo("<language>nl</language>\n");

// laad de artikelen uit de database
while($rss_feed = mysql_fetch_assoc($sql))
{
// filter de extra slashes
$vacaturebeschrijving = stripslashes($rss_feed['vacaturebeschrijving']);

// zet alle html karakters om in leesbare tekens
$vacaturebeschrijving = htmlspecialchars($vacaturebeschrijving);

// plaats de artikelen
echo("<item>\n");
echo("<title>".$rss_feed['naamvacature']."</title>\n");
echo("<link>http://www.vacature-werkt.nl/Vacaturegegevens.php?id".$rss_feed['id']."</link>\n";);
echo("<description>".$vacaturebeschrijving."</description>\n");
echo("</item>\n");
}

// sluit de rss informatie
echo("<a href="http://www.vacature-werkt.nl/Vacature-zoeken-feed2.php"; rel="self" type="application/rss+xml" />\n");
echo("</channel>\n");
echo("</rss>");
?>
Zie lijn 37. Die is fout.....
En zie ook mijn vorige post.
Gebruik dan ook gewoon enkele quotes en alleen dubbele voor de html.

Dus niet:
<?php
// plaats rss informatie
echo("<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom">\n";);
echo("<channel>\n");
?>

Maar:
<?php
// plaats rss informatie
echo '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">'; . PHP_EOL;
echo '<channel>' . PHP_EOL;
?>

Reageren