Hoi, ik wil graag deze rss feed via php in mijn mysql database plaatsen en daar gebruik ik dit script voor:
Dit werkt in principe wel maar ik loop tegen een paar cruciale problemen aan, namelijk:
1. Ik krijg een soort van XML code in mijn database, bij bijvoorbeeld de titel "Loss Of Smell Function - A Common..." krijg ik "Loss Of Smell Function
A Common..." Dat streepje wordt dus overgenomen als
en wordt ook zo op mijn pagina weergegeven, en dit streepje is maar een van de vele dingen waarbij dit gebeurt.
2. In de XML code staat bovenaan iets als <?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">. Dit wordt op de een of andere manier in het veld link opgenomen in de laaste entry in de database, in plaats van de link die in de xml staat aangegeven. Bij alle andere entry's wordt het veld link wel gewoon goed overgenomen, alleen bij de laatste niet
3. Voor de nieuwste entry wordt op de een of andere manier de titel van de pagina (Alzheimer's / Dementia News From Medical News Today) overgenomen in plaats van wat er in hed veld title in de xml wordt aangegeven. Dit gebeurt alleen bij de nieuwste entry, de rest doet het wel gewoon goed.
4. Hij zet nu de nieuwste entry als laatste in de database, bij mij staat nu de oudste entry dus bovenaan, dat moet andersom.
Iemand hier die weet hoe ik deze dingetjes kan fixen, of heeft misschien iemand een script dat gewoon veel beter is? :thumb:
PHP:
<?php
include 'database.php';
$URL="http://www.medicalnewstoday.com/rss/alzheimers.xml";
$f = fopen($URL, "r");
if($f){
$pre = "";
while(!feof($f))
{
$pre= fread($f, 1000);
$source = $source.$pre;
}
}
else
{
echo 'Unable to open '.$URL.'.';
die;
}
$total= substr_count($source, "<item>");
//extract necessary information into database
$pos=0;
for($loop=0;$loop<$total;$loop++)
{
$pubdate1 = strpos($source, "<pubDate>", $pos);
$pubdateend1 = strpos($source, "</pubDate>", $pubdate1);
$pubdate1 = $pubdate1 + 9;
$pubdateend1 = $pubdateend1 - $pubdate1;
$pubdate = substr($source, $pubdate1, $pubdateend1);
$pubdate = convert($pubdate);
$line1 = strpos($source, "<title>", $pos);
$end1 = strpos($source, "</title>", $line1);
$line1 = $line1 + 7;
$end1 = $end1 - $line1;
$title = substr($source, $line1, $end1);
$title = convert($title);
$line2 = $line1 + $end1 + 1;
$line2 = strpos($source, "<description>", $line2);
$end2 = strpos($source , "</description>" , $line2);
$line2 = $line2 + 13;
$end2 = $end2 - $line2;
$category = substr($source , $line2, $end2);
$category = convert($category);
$line3 = $line2 + $end2 + 1;
$line3 = strpos($source , "<link>" , $line3);
$end3 = strpos($source , "</link>" , $line3);
$line3 = $line3 + 6;
$end3 = $end3 - $line3;
$link = substr($source , $line3 , $end3);
$link = convert($link);
$pos = $line3 + $end3 + 1;
$invoegQuery = "INSERT INTO feedrss SET id = '', datetime='".$pubdate."', title='".$title."', category='".$category."', link='".$link."'";
$invoegResult = mysql_query($invoegQuery) or die (mysql_error());
}
function convert($string)
{
$string = htmlspecialchars($string,ENT_QUOTES);
return $string;
}
?>
Dit werkt in principe wel maar ik loop tegen een paar cruciale problemen aan, namelijk:
1. Ik krijg een soort van XML code in mijn database, bij bijvoorbeeld de titel "Loss Of Smell Function - A Common..." krijg ik "Loss Of Smell Function


2. In de XML code staat bovenaan iets als <?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">. Dit wordt op de een of andere manier in het veld link opgenomen in de laaste entry in de database, in plaats van de link die in de xml staat aangegeven. Bij alle andere entry's wordt het veld link wel gewoon goed overgenomen, alleen bij de laatste niet

3. Voor de nieuwste entry wordt op de een of andere manier de titel van de pagina (Alzheimer's / Dementia News From Medical News Today) overgenomen in plaats van wat er in hed veld title in de xml wordt aangegeven. Dit gebeurt alleen bij de nieuwste entry, de rest doet het wel gewoon goed.
4. Hij zet nu de nieuwste entry als laatste in de database, bij mij staat nu de oudste entry dus bovenaan, dat moet andersom.
Iemand hier die weet hoe ik deze dingetjes kan fixen, of heeft misschien iemand een script dat gewoon veel beter is? :thumb:
Laatst bewerkt: