controle: al in database?
Ik all rss feed van website af en slaag ze op in mijn database, maar nu wil ik controleren of ik die rssfeed al heb of niet.
Ik zou het zo doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
$hln = simplexml_load_file('http://www.hln.be/sport/belgischvoetbal/cercle-brugge/rss.xml');
foreach ($hln->channel->item as $nieuwsItem) {
$query = mysql_query("SELECT * FROM `nieuws`");
$nieuws = mysql_fetch_assoc($query);
if ($nieuws->titel != $nieuwsItem->title) {
mysql_query("INSERT INTO `nieuws` (`datum`, `beschrijving`, `link`, `titel`) VALUES ('$nieuwsItem->pubDate', '$nieuwsItem->description', '$nieuwsItem->link', '$nieuwsItem->title');");
}
}
?>
$hln = simplexml_load_file('http://www.hln.be/sport/belgischvoetbal/cercle-brugge/rss.xml');
foreach ($hln->channel->item as $nieuwsItem) {
$query = mysql_query("SELECT * FROM `nieuws`");
$nieuws = mysql_fetch_assoc($query);
if ($nieuws->titel != $nieuwsItem->title) {
mysql_query("INSERT INTO `nieuws` (`datum`, `beschrijving`, `link`, `titel`) VALUES ('$nieuwsItem->pubDate', '$nieuwsItem->description', '$nieuwsItem->link', '$nieuwsItem->title');");
}
}
?>
Maar dat werkt niet, weet iemand een beter voorstel?
Bedankt
Je kan beter controleren op zo'n manier:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$hln = simplexml_load_file('http://www.hln.be/sport/belgischvoetbal/cercle-brugge/rss.xml');
foreach ($hln->channel->item as $nieuwsItem)
{
$query = mysql_query("SELECT * FROM `nieuws` WHERE titel='".mysql_real_escape_string($nieuwsItem->title)."'");
if($query && mysql_num_rows($query) == 0)
{
mysql_query("INSERT INTO `nieuws` (`datum`, `beschrijving`, `link`, `titel`) VALUES ('$nieuwsItem->pubDate', '$nieuwsItem->description', '$nieuwsItem->link', '$nieuwsItem->title');");
}
}
?>
$hln = simplexml_load_file('http://www.hln.be/sport/belgischvoetbal/cercle-brugge/rss.xml');
foreach ($hln->channel->item as $nieuwsItem)
{
$query = mysql_query("SELECT * FROM `nieuws` WHERE titel='".mysql_real_escape_string($nieuwsItem->title)."'");
if($query && mysql_num_rows($query) == 0)
{
mysql_query("INSERT INTO `nieuws` (`datum`, `beschrijving`, `link`, `titel`) VALUES ('$nieuwsItem->pubDate', '$nieuwsItem->description', '$nieuwsItem->link', '$nieuwsItem->title');");
}
}
?>
Wat jij overigens doet met: fetch_assoc en $nieuws->titel klopt niet, je gebruikt de manier voor fetch_object met die notatie. je had daar ook $nieuws['titel'] moeten gebruiken.
Echter pak jij altijd hetzelfde record met jou controle, omdat je niet de wile methode gebruikt voor de $nieuws. (dit is standaard voor werken met SQL) Dus die controle gaat ook niet werken.
En waarom staan de vars binnen de quote's ;)
Wat ik dus nog even zou toevoegen is:
en de vars buiten de quotes