trondheim24 Skrevet 1. august 2004 Del Skrevet 1. august 2004 (endret) Hei! Jeg skal legge vg/dagbladet`s rss feed inn i en database, slik at jeg kan vise siste nyheter på siden min. Vet det kommer ett standar oppsett, men på denne måten kan jeg vise dem som jeg vil. Jeg har laget en fil som parser og legger inn, men har 2 problemer. 1. Når nyhetene legges inn i databasen, legges de inn uten noe form for sjekk at de finnes fra før. Derfor legges det inn duplisering av nyhetene. Tenkte en sjekk på de siste 100 nyhetene som er lagt inn skulle holde. Det må da sjekkes om overskrifta er lik den som ligger i databasen. 2. Denne fila må kunne startes som en cron jobb. Jeg har foreløpig laget den som en php fil. Hvordan kan man lage dette slik at en cron jobb kan legge inn automatisk hvert 5 min? Under her følger fila som er på "nybegynner" stadiet enda. -------------------------------------------------------------------------------------------- <? $filen = "http://www.dagbladet.no/rss/oppdatert.xml"; $result = ""; $query = ""; global $link; global $description; global $title; global $date; global $avis; global $test; function startElement($parser, $navn, $attrs) { global $denneTagg; $denneTagg = $navn; global $avis; switch ($navn) { case "CHANNEL": reset($attrs); while (list($key, $value) = each($attrs)){ if($key == "RDF:ABOUT"){ if($value == "http://www.dagbladet.no/"){ $avis = "Dagbladet"; }else if($value == "http://www.vg.no/export/Alle/rdf.hbs"){ $avis = "VG"; } echo $avis; } } break; case "NYHET": //echo "<i>$navn </i>"; break; case "TITLE": //echo "<i>$navn </i>"; break; case "LINK": //echo "<i>$navn </i>"; break; case "DESCRIPTION": //echo "<i>$navn </i>"; break; case "DC ATE": $date = $data; list ($year, $month, $day, $tid, $forskjell) = split ('[T+/.-]', $date); echo "Month: $month; Day: $day; Year: $year; Time: $tid, Forskjell: $forskjell<br>\n"; case "DC:DATE": //echo "<i>$navn </i>"; break; default: break; } } function sluttElement($parser, $navn) { global $denneTagg; switch ($navn) { case "NYHET": //echo "<i>$navn </i>"; break; case "TITLE": //echo "<i>$navn </i>"; break; case "LINK": //echo "<i>$navn </i>"; break; case "DESCRIPTION": //echo "<i>$navn </i>"; break; case "DC ATE": $date = $data; list ($year, $month, $day, $tid, $forskjell) = split ('[T+/.-]', $date); echo "Month: $month; Day: $day; Year: $year; Time: $tid, Forskjell: $forskjell<br>\n"; case "DC:DATE": //echo "<i>$navn </i>"; break; default: break; } $denneTagg = ""; } function mellomData($parser, $data) { global $denneTagg; global $result; global $query; global $title; global $link; global $description; global $date; global $flag; global $avis; switch ($denneTagg) { case "TITLE": $title = $data; break; case "LINK": $link = $data; break; case "DESCRIPTION": $description = $data; break; case "DC:DATE": $date = $data; list ($year, $month, $day, $tid, $forskjell) = split ('[T+/.-]', $date); echo "Month: $month; Day: $day; Year: $year; Time: $tid, Forskjell: $forskjell<br>\n"; case "DC:DATE": $date = $data; $flag = 1; break; default: break; } if($flag ==1 ){ die(mysql_error()); @mysql_select_db(nuke_nuke1) || die("Unable to select database"); $query = "insert into nuke_stories(aid,title, time, hometext, counter, informant, notes, link) values('$avis', '$title','$date', '$description', 0, '$avis', '$tid', '$link')"; //$query = "UPDATE nuke_authors SET counter=counter+1 where aid='Dagbladet'"; $this->result = mysql_query($query); print "spørringen er ". $query; $flag =0; } } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "sluttElement"); xml_set_character_data_handler($xml_parser, "mellomData"); if (!($fp = fopen($filen, "r"))) { die("Kan ikke finne xml filen: $filen"); } while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML feil: %s på linje %d",xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser))); } } xml_parser_free($xml_parser); ?> Noen forslag? På forhånd takk Endret 1. august 2004 av trondheim24 Lenke til kommentar
muffe Skrevet 1. august 2004 Del Skrevet 1. august 2004 hvis du vil kjøre fia som en cron job er det bare å sette noe sånt som dette inn i cron-fila di: wget http://127.0.0.1/hentnyhet.php /dev/null Det mangler litt der, bla. hvor ofte den skal kjøre, men det er jo opp til deg å bestemme. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå