Artikelliste mit Titel und Lead anzeigen.

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

  • Artikelliste mit Titel und Lead anzeigen.

    hallo Leute, ich hoffe ihr könnt einem XML- und PHP-Anfänger helfen...

    folgende Situation: Ich hab ein Verzeichnis mit dutzenden XML-Files. Jedes dieser File entspricht einem Artikel. Der Artikel besteht mehr oder weniger wie üblich aus einem Titel, Untertitel, Lead und Text.
    Auf meiner Website hab ich eine Artikel-Übersichtseite, auf der die Artikel aufgelistet sind, und zwar mit Titel und Lead und einem Link "weiter" um den ganzen Artikel zu lesen.

    Nun meine Frage: ist es mit PHP grundsätlich möglich diese Artikel-Übersichtsseite überhaupt zu realisieren? Auch ohne Datenbank? Falls ja bräuchte ich zwar nicht unbedingt den Code, aber ich wäre sehr froh, wenn ich ungefähr eine Richtung erfahren würde in die ich mich bewegen müsste.

    Auf dem Unix-Server ist PHP5 installiert.

    Danke

  • #2
    - Verzeichnis lesen
    - jede Datei öffnen
    - XML darin parsen oder Stringoperationen (evtl. schneller)
    - Titel und Lead ausgeben

    Falls die XML-Files über ein Script geschrieben/geändert/gelöscht werden, würde ich dieses Script so ändern, dass es die Übersichtsseite gleich mit erstellt/ändert. Dann geschieht das nämlich nur einmal pro Änderung an den XML Files statt bei jedem Aufruf der Übersichtsseite.

    Kommentar


    • #3
      also ich hab mir jetzt was zusammengebastelt (Profis unter euch werden jetzt wahrscheinlich gleich nen Lachanfall kriegen...). Bin wirklich noch Anfänger auf diesem Bereich (XML/PHP), hoffe aber doch, dass ich schon auf dem richtigen Weg bin...

      Ich hab ein Verzeichnis (xml) mit 5 xml-Dateien.
      Mit der Datei news.php rufe ich eine Seite auf, die von diesen 5 xml-Dateien den Titel (title) und den Lead (para) ausliest und darstellt.

      PHP-Code:
      <?php 

      $dir
      =$_SERVER["DOCUMENT_ROOT"];
      $dir.="/xmltransform/artikelliste/xml/";
      if (
      $handle opendir($dir)) {
      while (
      false !== ($file readdir($handle))) {
      if (
      $file!="." && $file!=".." && $file!=".DS_Store") { 
      $a++;
      $filename=$file;
      $file=strtok($file,".");

       
      $xml = new DomDocument();
       
      $xml ->load("xml/$filename");
       if(!
      $xml) {
        exit (
      "Fehler beim Parsen");
       }

      print (
      "$filename <br />");
       
              
      $xmlinhalt simplexml_load_file($filename); 
              if(
      $xmlinhalt) { 
                   
      echo 
      "<strong>$xmlinhalt->title</strong><br />"
      echo 
      "$xmlinhalt->para<br />";

              } 

      }
      }
      }
      closedir($handle);

      ?>
      Das Problem: nur der Inhalt der ersten xml-Datei wird angezeigt. Für alle anderen xml-Dateien bringt er einen Fehler:
      Warning: I/O warning : failed to load external entity "test2.xml" in /Applications/xampp/htdocs/xmltransform/artikelliste/news.php on line 27

      Line 27 wäre $xmlinhalt = simplexml_load_file($filename);

      Kann ich also mit simplexml_load_file nur ein xml-File laden?

      Bin wirklich froh um jede Hilfe. Danke!!!

      Kommentar


      • #4
        schääääääm... ich hab den Fehler selber gefunden....

        PHP-Code:
        $xmllead simplexml_load_file("xml/$filename");
        print(
        utf8_decode($xmllead->para)); 
        ich hab zwar mit $filename tatsächlich den Namen jedes xml-Files, jedoch muss ich dann nochmals angeben, wo sich diese Files befinden -> xml/$filename

        Der korrekte Code:

        PHP-Code:
        <?php 

        $dir
        =$_SERVER["DOCUMENT_ROOT"];
        $dir.="/xmltransform/artikelliste/xml/";
        if (
        $handle opendir($dir)) {
        while (
        false !== ($file readdir($handle))) {
        if (
        $file!="." && $file!=".." && $file!=".DS_Store") { 
        $a++;
        $filename=$file;
        $file=strtok($file,".");

         
        $xml = new DomDocument();
         
        $xml ->load("xml/$filename");
         if(!
        $xml) {
          exit (
        "Fehler beim Parsen");
         }

        $texttitel=$xml->getElementsByTagName("title");
        $anz_texttitel=$texttitel->length;

        $datum=$xml->getElementsByTagName("date");
        $anz_datum=$datum->length;

        $lead=$xml->getElementsByTagName("para");
        $anz_lead=$lead->length;

        $autor=$xml->getElementsByTagName("autor");
        $anz_autor=$autor->length;


        for (
        $at=0$at<$anz_texttitel;$at++) {
            
        $ct=$texttitel->item($at);

                if(
        $at=1) {    
                print (
        "<p><a href='artikel.php?artikel=$filename'>".utf8_decode($ct->nodeValue));
                print (
        "</a></p>");
                }

                
        $xmllead simplexml_load_file("xml/$filename");
        print(
        utf8_decode($xmllead->para));
        echo 
        "<hr />";

        }
        }
        }
        closedir($handle);

        ?>
        bin ich sooooo glücklich...

        Kommentar

        Lädt...
        X