Door
Frank WD
op 15-07-2012 02:48
gewijzigd op 15-07-2012 12:31
1.912 views
Op het moment ben ik bezig om voor bepaalde onderwerpen van de website een RSS feed te maken. Dit lukt op het moment helemaal na wens, alleen loop ik tegen een probleem aan bij <pubDate>.
Mijn RSS word opgebouwd door middel van een database en SimpleXML. Zover ik kan lezen op internet houd de <pubDate> er een speciale date opbouw op na. Alleen weet ik dus niet hoe ik die moet op vragen in mijn Query.
Ik weet wel dat je door middel van:
DATE_FORMAT( p_date, '%d-%m-%Y' ) AS p_date
Een date na wens opbouw op te vragen, alleen de opbouw voor in de Query die ik nodig heb kan ik niet vinden. De opbouw die ik terug zal moeten krijgen is:
D, d M Y H:i:s T
Deze opbouw is dus voor de RSS item tag <pubDate>
Ik heb de volgende Query opbouw geprobeerd, omdat ik dacht het wel zal kloppen:
Ger, bedankt voor de reactie.
Alleen deze blijkt niet te werken. Ik krijg dan een lege feed terug.
Als ik met een Feed Validator kijk, krijg ik niet een duidelijke melding terug waar het dan mis gaat.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:..\rss\megaschijf.rss.php on line 39
SELECT id, artiest, titel, cover, weeknr, DATE_FORMAT(p_date, '%D, %d %M %Y %T UTC) AS pubdate FROM single ORDER BY id DESC
Haal ik nu de DATE_FORMAT weg, dan krijg ik de gegevens die ik wil. Alleen dan zonder de post-date.
Je controleert nu nog nergens of je query wel gelukt is, je stop het resultaat direct in mysql_num_rows() en die begint te zeuren. Doe altijd iets als:
<?php
$sql = '...';
if(!mysql_query($sql)) {
trigger_error(mysql_error().' In query: '.$sql);
}
else {
// ga verder met je script
}
?>
Joren, ik gebruik wel een fout afhandeling.
Ik gebruik de foutafhandeling van Wouter J op Github, dit samen met de connect naar db toe.
Ik zag net dat er bij het toevoegen van p_date in de database iets fout was gegaan.
Hij heeft de veld niet aan gemaakt. Ik heb hem nu aan gemaakt en het werkt nu wel.
Alleen hij pakt de p_date niet mee.
Als je foutafhandeling consequent gebruikt, verwacht ik niet de foutmelding die je nu krijgt. Je zou dan namelijk een foutmelding moeten krijgen op het uitvoeren van de query, dat is namelijk waar het fout gaat. En in dat geval biedt mysql_error() de mogelijkheid om een gedetailleerdere SQL foutmelding op te vragen en weer te geven.
Kortom, bij elke query die je uitvoert, zul je moeten controleren of hij gelukt is.