Avatar billede martin_shearer Nybegynder
11. marts 2014 - 15:14 Der er 9 kommentarer og
1 løsning

rss til mysql, vil ikke gemme felt

Hej
jeg har brug for lidt hjælp. jeg har nedenstående kode. hvor jeg forsøger at gemme noget rss feed til min database.
Det virker næsten, men jeg har en fejl, som jeg ikke kan få løst.

jeg henter data fra mit test feed her:

http://112-aarhus.dk/feeds/news2.php

Mit problem er at, den simpelthen IK vil gemme det data fra image tag. ligemeget hvad jeg gør.

jeg har prøvet at ændre indhold. så image tag. fx bliver flyttet til title. men så er det felt bare tomt.
Så jeg tror det måske kan være magpiess der ik kan hente, når koden indeholder .jpg ? Men jeg kan simpelthen ik finde løsningen.

Er der nogen der kan hjælpe mig. eller måske bare ligger inde med en anden simpel kode, der kan gøre det samme ?
her er koden
--------
<?php
require_once("connect.php");
define('MAGPIE_CACHE_ON', false);

require_once('magpierss/rss_fetch.inc');

$url = "http://112-aarhus.dk/feeds/news2.php";

$rss = fetch_rss($url);

foreach ($rss->items as $item){
    $title      = $item['title'];
    $description = $item['description'];
    $comments    = $item['comments'];
    $link    = $item['link'];
    $image    = $item['image'];
   
    if(preg_match('/\d{2}:\d{2}:\d{2}/', $comments, $match)) {
        $comments = $match[0];
    } else {
        $comments = '00:00:00';
    }
   
    $pubdate    = $item['pubdate'];
   
    $query = mysql_query("SELECT id FROM xxx_112 WHERE description = '".$description."' AND comments = '".$comments."' AND link = '".$link."' AND image = '".$image."' AND pubdate = '".$pubdate."' LIMIT 1");
    if(mysql_num_rows($query)==0)
    {
        $sql = "INSERT INTO odin_112(id,title,description,comments,link,image,pubdate,datotid) VALUES('','".$title."','".$description."','".$comments."','".$link."','".$image."''".$pubdate."',NOW())";
        // echo 'Jeg vil gerne indsætte<br />Title: ' . $title . '<br />Description: ' . $description . '<br />Comments: ' . $comments . '<br />link: ' . $link . '<br />image: ' . $image . '<br />Pubdate: ' . $pubdate . '<hr />';
        mysql_query($sql) or die(mysql_error());
    }
}

?>
----
Avatar billede arne_v Ekspert
11. marts 2014 - 15:21 #1
Hvilken fejl faar du?
Avatar billede arne_v Ekspert
11. marts 2014 - 15:23 #2
Et hurtigt blik paa koden siger at den er yderst upaalidelig. mysql_real_escape_string eller langt bedre mysqli/PDO med prepared statement er noedvendig.
Avatar billede martin_shearer Nybegynder
11. marts 2014 - 16:05 #3
fejlen er at den ikke vil gemme det tag fra image feltet. og har på fornemmelsen at det er pga. den magpiess som er included. det ikke kan håndtere .jpg for i databasen er feltet bare tomt
Avatar billede martin_shearer Nybegynder
11. marts 2014 - 16:15 #4
Jeg har prøvet med noget nyt fra bunden. som virker nogenlunde. har dog 2 fejl, som du måske kan hjælpe med i stedet ?

Med nedenstående kode.
1. Den viser ik æ,ø,å men andre mærkelige tegn i stedet for2.
2. Hver gang jeg køber mit cronjob for at læse scriptet. smider den dem i databasen, selvom de eksistere i forvejen, det skal jeg ha forhindret på en måde

<?php
require_once("connect.php");
$feeds = array('http://112-aarhus.dk/feeds/news2.php');
foreach( $feeds as $feed ) {
    $xml = simplexml_load_file($feed);

    foreach($xml->channel->item as $item)
    {
    $date_format = "j-n-Y"; // 7-7-2008
    echo date($date_format,strtotime($item->pubDate)); 
            echo '<a href="'.$item->link.'" target="_blank">'.$item->title.'</a>';
            echo '<div>' . $item->description . '</div>';

    mysql_query("INSERT INTO rss_112 (id, title, description, link, image, pubDate)
    VALUES (
        '',
        '".mysql_real_escape_string($item->title)."',
        '".mysql_real_escape_string($item->description=htmlspecialchars(trim($item->description)))."',
        '".mysql_real_escape_string($item->link)."',
        '".mysql_real_escape_string($item->image)."',
        '".mysql_real_escape_string($item->pubDate)."')");     
    }
}
?>
Avatar billede martin_shearer Nybegynder
11. marts 2014 - 16:18 #5
har fikset det med æøå, mangler bare noget for at den ik henter noget der allerede eksistere.
Avatar billede martin_shearer Nybegynder
11. marts 2014 - 16:43 #6
Tænker på om man kan putte et tjek ind i overstående kode. så den fx tjekker pubDate og ikke smider noget ind, der allerede findes ?
Avatar billede arne_v Ekspert
12. marts 2014 - 00:26 #7
smid et unikt index paa det felt eller den kombination af felter som ikke maa dubleres og haandter fejlen ved insert
Avatar billede arne_v Ekspert
12. marts 2014 - 00:27 #8
og et svar
Avatar billede martin_shearer Nybegynder
12. marts 2014 - 09:13 #9
er ik helt med på hvordan det gøre. kan du hjælpe ?
har jo allerede unik id på første id felt ?
Avatar billede martin_shearer Nybegynder
12. marts 2014 - 09:14 #10
nyeste kode er her

kan også fortælle mig, hvorfor denne funktion med NOW() ikke virker. Jeg vil gerne have at den smider dato+tid ned i et felt, på det klok den blev hentet.

<?php

require_once("connect.php");
$feeds = array('http://112-aarhus.dk/feeds/news2.php' );
foreach( $feeds as $feed ) {
    $xml = simplexml_load_file($feed);

    mysql_set_charset('utf8');
   
    foreach($xml->channel->item as $item)
    {
   
    $date_format = "j-n-Y"; // 7-7-2008
    echo date($date_format,strtotime($item->pubDate)); 
            echo ' <a href="'.$item->link.'" target="_blank">'.$item->title.'</a>';
            echo ' <div>' . $item->description . '</div>';
           
   
    mysql_query("INSERT INTO rss_112 (id, title, description, comments, pubdate, image, link, datotid)
    VALUES (
        '',
        '".mysql_real_escape_string($item->title)."',
        '".mysql_real_escape_string($item->description=htmlspecialchars(trim($item->description)))."',
        '".mysql_real_escape_string($item->comments)."',
        '".mysql_real_escape_string($item->pubDate)."',   
        '".mysql_real_escape_string($item->image)."',   
        '".mysql_real_escape_string($item->link)."',
        '".mysql_real_escape_string($item->NOW())."'
       
       
        )");     
    }
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Capgemini Danmark A/S

SAP Engagement Manager

Cognizant Technology Solutions Denmark ApS

Azure Architect