Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenübergabe an RSS-Feed

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenübergabe an RSS-Feed

    Hallo,
    ich betreibe ehrenamtlich ein System für Feuerwehren / HiOrgs zur Veröffentlichung von Einsatzberichten.

    Die Daten werden online in ein System eingegeben.
    bisher hat folgender Code
    Pastebin_Code_altdie Daten in eine xml-Datei geschrieben und beim nächsten Einsatz überschrieben.


    Nun wurde mir empfohlen, den RSS sauberer zu codieren und nicht immer mit einem Eintrag neu zu erzeugen, sondern zu erweitern.
    Dazu wurde mir folgende Anleitung ans Herz gelegt:
    http://xml-rss.de/xml-rss-feed-mit-p...-erstellen.htm

    gesagt getan, den Code entsprechend übernommen, (bisher nur mit Demo-Inhalt ohne DB-Abfragen)
    mit dem Ergebnis, dass ich ne weiße Seite bekomme :-/


    hier der Code wie ich Ihn nun in der Datei habe.
    Pastebin_Code_neu/aktuell


    Hier noch die komplette Datei
    http://pastebin.com/AF2cRG2s


  • #2
    Ich denke, "PHP-Fortgeschrittene" ist hier bei weitem verfehlt. Denn es gibt bei uns den Debugging: Leitfaden. Eine "weisse Seite" ist keine Fehlerbeschreibung.

    Zudem mein üblicher Standardhinweis: Ob du den ganzen Feed neu erzeugst oder nur ein neues Element einfügst... Naja. Ich hoffe so oder so, dass du nicht alle x tausend Einträge immer im Feed drin hast. Also würde ich dir die Verwendung einer Template-Engine (Twig, Smarty, ...) nahe legen.
    GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

    Kommentar


    • #3
      PHP-Code:
      if($sendrss == 1)
                              {
                                                   
                                      
      fwrite($xml = new DOMDocument('1.0''UTF-8');
                                              
      $xml->formatOutput true;
       
                                              
      $roo $xml->createElement('rss');
                                              
      $roo->setAttribute('version''2.0');
                                              
      $xml->appendChild($roo);
       
                                              
      $cha $xml->createElement('channel');
                                              
      $roo->appendChild($cha);
                                             
                                              
      $hea $xml->createElement('title',
                                                      
      utf8_encode('Name des RSS Feed'));
                                              
      $cha->appendChild($hea);
       
       
                                                
      $hea $xml->createElement('description',
                                                      
      utf8_encode('Feed Beschreibung'));
                                              
      $cha->appendChild($hea);
       
       
                                                
      $hea $xml->createElement('language',
                                                      
      utf8_encode('de'));
                                              
      $cha->appendChild($hea);
       
       
                                                
      $hea $xml->createElement('link',
                                                      
      htmlentities('http://xml-rss.de'));
                                              
      $cha->appendChild($hea);
       
       
                                                
      $hea $xml->createElement('lastBuildDate',
                                                      
      utf8_encode(date("D, j M Y H:i:s ").'GMT'));
                                              
      $cha->appendChild($hea);                                       
                                             
                                              
      $itm $xml->createElement('item');
                                              
      $cha->appendChild($itm);                                       
                                             
                                              
      $dat $xml->createElement('title',
                                                      
      utf8_encode('Titel der Nachricht'));
                                              
      $itm->appendChild($dat);
                                       
       
                                                
      $dat $xml->createElement('description',
                                                      
      utf8_encode('Die Nachricht an sich'));
                                              
      $itm->appendChild($dat);    
                                       
                                              
      $dat $xml->createElement('link',
                                                      
      htmlentities('Der Link zur Nachricht'));
                                              
      $itm->appendChild($dat);
                                       
                                              
      $dat $xml->createElement('pubDate',
                                                      
      utf8_encode('Datum der Nachricht'));
                                              
      $itm->appendChild($dat);
                                       
                                              
      $dat $xml->createElement('guid',
                                                      
      htmlentities('Einzigartige ID'));
                                              
      $itm->appendChild($dat);                                       
                                             
                                              
      $xml->save('rssfeed/dateiname.xml')
                                     
                                      );
                                      
      fclose($source); 
      Dann helfe ich dir mal beim erlernen vom debuggen.
      [MAN]fwrite[/MAN] ist eine Funktion und akzeptiert einen String.
      Das was du da mit der armen Funktion machst kann syntaktisch gar nicht funktionieren.

      Das allein erklärt schon die weiße Seite, wenn das error_reporting ausgeschaltet ist, was deine Debugging-Kenntnisse in etwa beschreibt (Nur nochmal ne Spitze in wg. Fortgeschritten )

      Der massive Einsatz von [MAN]utf8_encode[/MAN] zeigt ein Encoding-Problem, dass du nicht verschleppen solltest, das wird nur schlimmer.

      Wo wird deiner Meinung nach etwas ausgegeben?

      Desweiteren könntest du immer wiederkehrende Aufgaben kapseln.


      PHP-Code:
      $xmlHeadTags = [
          [
      'title',utf8_encode('Name des RSS Feed')],
          [
      'description',utf8_encode('Feed Beschreibung')],
          [
      'language',utf8_encode('de')],
          [
      'link',htmlentities('http://xml-rss.de')],
          [
      'lastBuildDate',date('D, j M Y H:i:s ').'GMT')]
      ];
      $xmlBodyTags = [
          [
      'title',utf8_encode('Titel der Nachricht')],
          [
      'description',utf8_encode('Die Nachricht an sich')],
          [
      'link',utf8_encode('Der Link zur Nachricht')],
          [
      'pubDate',utf8_encode('Datum der Nachricht')],
          [
      'guid',utf8_encode('Einzigartige ID')]
      ];
      $rssFileName 'rssfeed/dateiname.xml';
      function 
      appendChildsToXMLElement(DomDocument $xmlDomElement $e, array $xmlTags)
      {
          foreach(
      $xmlTags as $tag)
              
      $e->appendChild($xml->createElement($tag[0],$tag[1]));
      }
      if(
      $sendrss == 1)
      {
       
          
      $xml = new DOMDocument('1.0''UTF-8');
          
      $xml->formatOutput true;

          
      $root $xml->createElement('rss');
          
      $root->setAttribute('version''2.0');
          
      $xml->appendChild($root);

          
      $channel $xml->createElement('channel');
          
      $root->appendChild($channel);

          
      appendChildsToXMLElement($xml,$channel,$xmlHeadTags);

          
      $item $xml->createElement('item');
          
      $channel->appendChild($item);   

          
      appendChildsToXMLElement($xml,$item,$xmlBodyTags);                                     

          
      $xml->save($rssFileName);

          
      //Für die Ausgabe entweder
          
      echo $xml->saveXML();
          
      //oder
          
      echo file_get_contents($rssFileName);
          
          
      //....

      Ungetestet.

      Da kann man sicherlich noch mehr feilen, aber deine Syntaxfehler sind zumindest behoben und der Ansatz des kapselns und dem vermeiden von doppeltem Code ist nachzuvollziehen.
      War der Beitrag hilfreich? Dann Bedank dich mit einem klick auf .

      Kommentar

      Lädt...
      X