tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
1341
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kwmaster kwmaster ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    21
    Hallo zusammen,

    ich möchte eine Twitter-Abfrage starten und das Ergebnis (ATOM-Feed) in eine mySQL-DB schreiben, jedoch klappt es nicht. Das hier ist mein Code:

    PHP-Code:
    <?php

    // Verbindung aufbauen, auswählen einer Datenbank
    $link mysql_connect("localhost""root""")
        or die(
    "Keine Verbindung möglich: " mysql_error());

    echo 
    "Verbindung zum Datenbankserver erfolgreich";

    mysql_select_db("atomtest") or die("Auswahl der Datenbank fehlgeschlagen");

    // Verbindung aufbauen zu ATOM-Feed

    $feed =  simplexml_load_file('http://search.twitter.com/search.atom?q=twitter');
    $children =  $feed->children('http://base.google.com/ns/1.0');

    $entries $children->entry;
    foreach (
    $entries as $entry) {

      
    $details $entry->children(http://base.google.com/ns/1.0');

      
    echo  $details->title ;


    // Ausführen einer SQL-Anfrage
    $query "INSERT INTO atomfeed (id, published, title,
    content, updated, author) VALUES ('
    $details->id', '$details->published',
    $details->title', '$details->content','$details->updated','$details->author->name')";

    $result mysql_query($query) or die("Anfrage fehlgeschlagen: " mysql_error());
    }


    // Schließen der Verbinung
    mysql_close($link);
    ?>
    Und hier ist ein Ausschnitt aus der einzulesenen XML-Datei:

    <?xml version="1.0" encoding="UTF-8"?>
    <feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/">
    <id>tag:search.twitter.com,2005:search/twitter</id>
    <link type="text/html" rel="alternate" href="http://search.twitter.com/search?q=twitter"/>
    <link type="application/atom+xml" rel="self" href="http://search.twitter.com/search.atom?q=twitter"/>
    <title>twitter - Twitter Search</title>
    <link type="application/opensearchdescription+xml" rel="search" href="http://search.twitter.com/opensearch.xml"/>
    <link type="application/atom+xml" rel="refresh" href="http://search.twitter.com/search.atom?q=twitter&amp;since_id=1172659661"/>
    <updated>2009-02-03T11:43:44Z</updated>
    <openSearch:itemsPerPage>15</openSearch:itemsPerPage>
    <link type="application/atom+xml" rel="next" href="http://search.twitter.com/search.atom?max_id=1172659661&amp;page=2&amp;q=twitter"/>
    <entry>
    <id>tag:search.twitter.com,2005:1172659661</id>
    <published>2009-02-03T11:43:44Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/x_bacon/statuses/1172659661"/>
    <title>@brunobelon Bom dia. Also, pago derre&#225;u, dois chicletes e um cart&#227;o magn&#233;tico de fiperama no teu Twitter. </title>
    <content type="html">&lt;a href="http://twitter.com/brunobelon"&gt;@brunobelon&lt;/a&gt; Bom dia. Also, pago derre&#225;u, dois chicletes e um cart&#227;o magn&#233;tico de fiperama no teu &lt;b&gt;Twitter&lt;/b&gt;. </content>
    <updated>2009-02-03T11:43:44Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/60834142/DSC00030-1_normal.jpg"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1172659661.atom"/>
    <author>
    <name>x_bacon (Felipe Vicente)</name>
    <uri>http://twitter.com/x_bacon</uri>
    </author>
    </entry>
    Das Problem ist, dass sich das Programm zwar zur DB verbindet, aber dann war es das... Parse Error line 19:

    PHP-Code:
    $details $entry->children(http://base.google.com/ns/1.0'); 
    Ich muß gestehen, ich bin kein guter Coder - habe mir alles aus dem Internet zusamengesucht und versucht nach bestem Wissen und Gewissen zusammenzusetzen

    Ich hoffe, ihr habt eine Idee...

    Gruß

    Kai
     
    Hat man ein Problem gelöst, tauchen neue auf...

  2. #2
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    PHP-Code:
    $details $entry->children('http://base.google.com/ns/1.0'); 
    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  3. #3
    kwmaster kwmaster ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    21
    Hi Doc,

    danke für die erste Hilfe (tja, wenn man als Dau auch sein PHP einfach im Notepad schreibt...)

    Die Fehlermeldung ist nun weg, jedoch macht das Programm trotzdem nichts.

    Nach der Meldung: Verbindung zum Datenbankserver erfolgreich ist mein Programm fertig, ohne weitere Ausgabe und ohne, dass irgend etwas in meiner Datenbank landet

    Vielleicht hast Du (oder jemadn anderes) noch eine Idee, woran es leigen kann!

    Die XML-Datei existiert definitiv und enthält auch Einträge...

    Danke nochmals und Gruß

    Kai
     
    Hat man ein Problem gelöst, tauchen neue auf...

  4. #4
    KingNothing KingNothing ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    54
    Ich weiß nicht, welche Daten genau in den Variablen stehen, aber diese sollten zumindest mit mysql_escape_string() für die sichere
    Verwendung einer MySQL-DB maskiert werden:
    PHP-Code:
    $query "INSERT INTO atomfeed (id, published, title, content, updated, author) VALUES ('";
    $query .= mysql_escape_string($details->id)."','";
    $query .= mysql_escape_string($details->published)."','";
    $query .= mysql_escape_string($details->title)."','";
    $query .= mysql_escape_string($details->content)."','";
    $query .= mysql_escape_string($details->updated)."','";
    $query .= mysql_escape_string($details->author->name)."')"
    Das könnte Dein Problem evtl. lösen...
    Falls das Feld id der DB-Tabelle ein INT ist, mußt Du evtl. die Hochkomma für $details->id weglassen:
    PHP-Code:
    $query "INSERT INTO atomfeed (id, published, title, content, updated, author) VALUES (";
    $query .= mysql_escape_string($details->id).",'";
    ... 
    // den Rest spar ich mir jetzt mal 
    Hab mir mal die XML-Manipulation auf php.net kurz angesehen.
    Habe zwar noch nie damit gearbeitet, aber ich könnte mir vorstellen, daß Du da etwas falsch verwendest?
    Ist aber nur ne Vermutung
    Geändert von KingNothing (05.02.09 um 12:49 Uhr)
     

  5. #5
    DeluXe DeluXe ist offline Funkjoker
    Registriert seit
    Jul 2004
    Ort
    Offenburg
    Beiträge
    847
    Leg dir bitte einen Editor mit Syntax-Highlighting zu!

    Ich meine im Sinne aller von uns zu sprechen, das wir nicht hier sind um irgendwelche fehlenden Kommas oder Punkte zu ergänzen.

    Allein durch das grobe überfliegen deines Codes sehe ich schon ein fehlenden single quote..

    Such einfach mal hier im Forum, mitlerweile gibt es ca. eine Hand voll ganz guter Editoren, die relative viele der im Web vertretenen Sprachen unterstützen.
     

  6. #6
    kwmaster kwmaster ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    21
    Hallo zusammen,

    danke erstmal für die Antworten, werden den Code heute ändern und testen.

    @DeluXe

    Kannst Du mir einen Editor empfehlen? Reicht da ein Editor oder sollte man evtl. das PDT von Eclipse nutzen als komplette Entwicklungsumgebung


    Gruß

    Kai
     
    Hat man ein Problem gelöst, tauchen neue auf...

  7. #7
    KingNothing KingNothing ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    54
    Ich denke, daß Dreamweaver ein sehr gutes PHP-Code Highlightning hat.
    Wenns kostenlos sein soll, würd' ich persönlich NotePad++ nehmen.
     

  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    mit simplexml_load_file() erhältst du bereits einen Zeiger auf das Root-Element, du musst also nur die <entry>'s abfischen.


    PHP-Code:
      $feed     =  simplexml_load_file('http://search.twitter.com/search.atom?q=twitter');
      
    $entries  =  $feed->entry;
      
      foreach (
    $entries as $entry
      {
        echo  
    '<br>'.$entry->title ;
         
        
    //Hier weiter mit dem DB-Gedöns

      

     

  9. #9
    kwmaster kwmaster ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    21
    DANKE AN ALLE

    Et löööft
     
    Hat man ein Problem gelöst, tauchen neue auf...

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.01.09, 07:33
  2. Antworten: 6
    Letzter Beitrag: 14.11.08, 07:29
  3. Antworten: 0
    Letzter Beitrag: 08.04.08, 20:38
  4. Antworten: 5
    Letzter Beitrag: 27.08.07, 15:50
  5. einlesen und abspeichern
    Von LZD im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 06.12.02, 19:11

Stichworte