Announcement

Collapse
No announcement yet.

RSS Feed auslesen und in Datenbank speichern - SQL wird nicht gespeichert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RSS Feed auslesen und in Datenbank speichern - SQL wird nicht gespeichert

    Hallo,

    ich möchte aus einem RSS-Feed Daten auslesen und dann in einer MySQL-Datenbank speichern, um die einzelnen Beiträge als Foren-Threads auszugeben. Allerdings wird der SQL-Befehl nicht ausgeführt. Hier der gesamte Code:

    PHP Code:
    <?php
    mysql_connect
    ("localhost""USERNAME""PASSWORT") or die("Keine Verbindung möglich: " mysql_error());
    mysql_select_db("DATNEBANK");
    $num 14;

    $xmlfile='http://www.hlportal.de/?site=newsfeed&do=shownewsfeed&news_cat_id=46&feed=RSS2';
    $xml simplexml_load_file(rawurlencode($xmlfile));

    if (
    $xml) {
        for (
    $i=$num$i>=0$i--) {
            
    $sql_topics "SELECT MAX(topic_id) FROM phpbb_topics";
            
    $sql_posts "SELECT MAX(post_id) FROM phpbb_posts";
            
    $num_rowst mysql_query($sql_topics);
            
    $num_rowsp mysql_query($sql_posts);

            
    $topic_id $num_rowst 1;
            
    $link $xml->channel->item[$i]->link;
            
    $title utf8_decode($xml->channel->item[$i]->title);
            
    $content utf8_decode($xml->channel->item[$i]->description);
            
    $content_md md5($content);
            
    $time strtotime($xml->channel->item[$i]->pubDate);
            
    $post_id $num_rowsp 1;

            
    $sql_write "INSERT INTO phpbb_topics
            (topic_id,forum_id,icon_id,topic_attachment,topic_approved,topic_reported,topic_title,topic_poster,topic_time,topic_time_limit,topic_views,topic_replies,topic_replies_real,topic_status,topic_type,topic_first_post_id,topic_first_poster_name,topic_first_poster_colour,topic_last_post_id,topic_last_poster_id,topic_last_poster_name,topic_last_poster_colour,topic_last_post_subject,topic_last_post_time,topic_last_view_time,topic_moved_id,topic_bumped,topic_bumper,poll_title,poll_start,poll_length,poll_max_options,poll_last_vote,poll_vote_change)
            VALUES
            ('
    $topic_id','23','0','0','1','0','$title','59','$time','0','1','0','0','0','0','$post_id','hlportal.de','105289','2','59','hlportal.de','105289','$title','1277476917','1277476919','0','0','0','','0','0','1','0','0')";

            
    $sql_write_post "INSERT INTO phpbb_posts
            (topic_id,forum_id,poster_id,icon_id,poster_ip,post_time,post_approved,post_reported,enable_bbcode,enable_smilies,enable_magic_url,enable_sig,post_username,post_subject,post_text,post_checksum,post_attachment,bbcode_bitfield,bbcode_uid,post_postcount,post_edit_time,post_edit_reason,post_edit_user,post_edit_count,post_edit_locked,enable_cbgm,post_id)
            VALUES
            ('
    $topic_id','23','59','0','127.0.0.1','$time','1','0','1','1','1','1','','$title','$content','$content_md','0','','ha2jru4v','1','0','','0','0','0','0','1')";

            
    $sql_write_posted "INSERT INTO phpbb_topics_posted
            (user_id,topic_id,topic_posted)
            VALUES
            ('2','
    $topic_id','1')";

            
    mysql_query($sql_write);
            
    mysql_query($sql_write_post);
            
    mysql_query($sql_write_posted);
        }
    }
    echo 
    "<h1>$num News gespeichert!</h1>";
    ?>
    Ich habe schon alle Variablen und Datenbank-Namen überprüft. Auch die Reihenfolge der Datenbankfelder stimmt mit der Datenbank überein.

    Folgender Code funktioniert auch nicht richtig:

    PHP Code:
    <?php
    mysql_connect
    ("localhost""USERNAME""PASSWORT") or die("Keine Verbindung möglich: " mysql_error());
    mysql_select_db("DATENBANK");
    $num 14;

    $xmlfile='http://www.hlportal.de/?site=newsfeed&do=shownewsfeed&news_cat_id=46&feed=RSS2';
    $xml simplexml_load_file(rawurlencode($xmlfile));

    if (
    $xml) {
        for (
    $i 0$i <= $num$i++) {
            
    $sql_topics "SELECT MAX(topic_id) FROM phpbb_topics";
            
    $num_rowst mysql_query($sql_topics);
            
    $topic_id intval($num_rowst);
            
            
    $sql_posts "SELECT MAX(post_id) FROM phpbb_posts";
            
    $num_rowsp mysql_query($sql_posts);
            
    $post_id intval($num_rowsp);

            
    $link $xml->channel->item[$i]->link;
            
    $title utf8_decode($xml->channel->item[$i]->title);
            
    $content utf8_decode($xml->channel->item[$i]->description);
            
    $content_md md5($content);
            
    $time strtotime($xml->channel->item[$i]->pubDate);

            
    /* $sql_write = "INSERT INTO phpbb_topics
            (topic_id,forum_id,icon_id,topic_attachment,topic_approved,topic_reported,topic_title,topic_poster,topic_time,topic_time_limit,topic_views,topic_replies,topic_replies_real,topic_status,topic_type,topic_first_post_id,topic_first_poster_name,topic_first_poster_colour,topic_last_post_id,topic_last_poster_id,topic_last_poster_name,topic_last_poster_colour,topic_last_post_subject,topic_last_post_time,topic_last_view_time,topic_moved_id,topic_bumped,topic_bumper,poll_title,poll_start,poll_length,poll_max_options,poll_last_vote,poll_vote_change)
            VALUES
            ('$topic_id','23','0','0','1','0','$title','59','$time','0','1','0','0','0','0','$post_id','hlportal.de','105289','2','59','hlportal.de','105289','$title','1277476917','1277476919','0','0','0','','0','0','1','0','0')";

            $sql_write_post = "INSERT INTO phpbb_posts
            (topic_id,forum_id,poster_id,icon_id,poster_ip,post_time,post_approved,post_reported,enable_bbcode,enable_smilies,enable_magic_url,enable_sig,post_username,post_subject,post_text,post_checksum,post_attachment,bbcode_bitfield,bbcode_uid,post_postcount,post_edit_time,post_edit_reason,post_edit_user,post_edit_count,post_edit_locked,enable_cbgm,post_id)
            VALUES
            ('$topic_id','23','59','0','127.0.0.1','$time','1','0','1','1','1','1','','$title','$content','$content_md','0','','ha2jru4v','1','0','','0','0','0','0','1')";

            $sql_write_posted = "INSERT INTO phpbb_topics_posted
            (user_id,topic_id,topic_posted)
            VALUES
            ('2','$topic_id','1')";

            mysql_query($sql_write);
            mysql_query($sql_write_post);
            mysql_query($sql_write_posted); */
            
              
    echo "Topic-ID - "$topic_id ."<br /><br />";
            echo 
    "Link - "$link ."<br /><br />";
            echo 
    "Titel - "$title ."<br /><br />";
            echo 
    "Content - "substr($content020) ."...<br /><br />";
            echo 
    "MD5 - "$content_md ."<br /><br />";
            echo 
    "Time - "$time ."<br /><br />";
            echo 
    "Post - "$post_id ."<br /><br /><br />";
        }
    }
    echo 
    "<h1>$num News gespeichert!</h1>";
    ?>
    Hier habe ich die SQL-Befehle auskommentiert, um nicht die Datenbank zu füllen. Ganz unten habe ich einfach mal alle Variablen ausgeben lassen. Für jedes XML-Item. Da sieht man, dass die Topic-IDs und die Post-IDs falsch sind (siehe hier: http://xea-design.de/rss2.php ), alles andere Stimmt. Die Post-IDs sollten ca. bei 11000 anfangen, die Topic-IDs ca. bei 50. Ich kann mir das alles nicht erklären. Ich sehe da keinen logischen Fehler drin.

    Vielleicht kann mir ja hier geholfen werden. Ich hoffe, ich konnte alles verständlich erklären und bedanke mich im Vorraus für jede Hilfe!

    Mit freundlichen Grüßen,
    Xea

  • #2
    Hallo,
    Originally posted by Xea View Post
    PHP Code:
    <?php
    ...
            
    $sql_topics "SELECT MAX(topic_id) FROM phpbb_topics";
            
    $sql_posts "SELECT MAX(post_id) FROM phpbb_posts";
            
    $num_rowst mysql_query($sql_topics);
            
    $num_rowsp mysql_query($sql_posts);

            
    $topic_id $num_rowst 1;
    ...
    Das kann so auch nicht funktionieren! Sieh dir mal das Handbuch zu mysql_query() an. Diese Funktion hat als Rückgabewert einen Resourcentyp und nicht etwa einen Teil aus dem Select!
    ...bei SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine neue Ergebnis-Kennung, die Sie an die Funktion mysql_fetch_array() und andere Funktionen, die mit Ergebnistabellen umgehen können, übergeben können.
    Du mußt also noch mit mysql_fetch_row() Den Datensatz aus der Cursorresource abholen.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Vielen Dank, Falk! Jetzt funktioniert alles einwandfrei! Ich muss das mysql_fetch_row() wohl ausversehen gelöscht haben, als ich den Code aufgeräumt habe.

      Comment

      Working...
      X