Php und Dom

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

  • Php und Dom

    Hallo an alle
    Ich bin gerade dabei PHP zu erlenen und stehe nun vor einem, für mich, nicht lösbarem Problem.
    Ich erzeuge eine XML-Datei und kann diese auch befüllen. Das klappt wunderbar.
    Nun möchte ich diese XML-Datei mit DOM wieder auslesen und mir in html ausgeben lassen.

    Ich lese mit PHP die xml-Datei ein.
    Der Code sieht so aus:

    $dom->load('./xml/xml_speicher.xml');

    $itemsStruktur = $dom->getElementsByTagName('daten');
    echo count($itemsStruktur);
    $i = 0;
    foreach ( $itemsStruktur as $itemStruktur )
    {
    $arrDom[$i]['imgid'] = $itemStruktur->getAttribute( 'imgid' );
    $arrDom[$i]['artikelname'] = $itemStruktur->getAttribute( 'artikelname' );
    $arrDom[$i]['preis'] = $itemStruktur->getAttribute( 'preis' );
    $arrDom[$i]['bestellnr'] = $itemStruktur->getAttribute( 'bestellnr' );
    $arrDom[$i]['urlshop'] = $itemStruktur->getAttribute( 'urlshop' );
    $arrDom[$i]['anmerkung'] = $itemStruktur->getAttribute( 'anmerkung' );
    $arrDom[$i]['name'] = $itemStruktur->getAttribute( 'name' );
    $arrDom[$i]['stk'] = $itemStruktur->getAttribute( 'stk' );

    //print_r ($arrDom[$i]);
    }


    Nun habe ich alles in einem Array stehen.
    Aber, und das ist nun mein nicht lösbares Problem, wie bekomme ich die Daten in die Variablen um diese in html anzeigen zu lassen?

    Ich danke euch im vorraus für eure bemühungen

    Gruß
    Linuxfreak

  • #2
    na wenn die Daten schon im Array stehen, ist es ein leichtes das ganze noch auszugeben. Jetzt das Array einfach nochmal mit foreach durchlaufen und dir die Ausgabe Struktur zusammenbasteln. Wahrscheinlich ne Tabelle
    PHP-Code:
    <table>
     <tr>
      <th>Artikelname</th
      <th>Preis</th>
      <th>...</th>
     </tr>
     <tr>
      <td><?php echo $item['artikelname']; ?></td>
      <td><?php echo $item['preis']; ?></td>
     </tr>
    </table>
    wenn du die Daten nur einmal brauchst, kannst du die Ausgabe auch direkt in der foreachschleife machen in der du die Daten aus dem XML holst.
    PS: Evt wäre ne Datenbank nicht schlecht?!

    Kommentar


    • #3
      Genau bei dieser Schleife habe ich ein Problem.
      Ich finde keinen Ansatz dafür wie ich in dieser Schleife das Array in die Variablen bekomme.

      Gruß
      Linuxfreak

      Kommentar


      • #4
        Original geschrieben von krel
        PS: Evt wäre ne Datenbank nicht schlecht?!
        Oder zumindest Caching. Die DOM-Geschichten sind nämlich u.U. sehr langsam.
        PHP-Code:
        $datafile './xml/xml_speicher.xml';
        $cachefile './xml/xml_speicher.cache.php';
        if (
        filemtime($datafile) > filemtime($cachefile)) {
            
        $doc = new DOMDocument();
            
        $doc->load($datafile);
            
        $data = array();
            foreach (
        $doc->getElementsByTagName('daten') as $item) {
                
        $data[] = array(
                    
        'imgid' => $item->getAttribute('imgid'),
                    ...
                );
            }
            
        file_put_contents($cachefile'<'.'?php return ' var_export($datatrue) . '; ?>');
        } else {
            
        $data = include $cachefile;
        }

        // hier die Ausgabe mit Loop über $data 
        Zuletzt geändert von onemorenerd; 20.02.2009, 10:01.

        Kommentar


        • #5
          Danke für den Code mit dem Caching.
          Aber zuerst möchte ich erst die Ausgabe so halbwegs hinbekommen.

          Ich habe noch ein wenig geschrieben:

          $count = count($arrDom[$i]);
          for($i=0; $i < $count; $i++)
          {
          $imgid_1[$i] = $arrDom[$i]->imgid;
          $artikelname_1[$i] = $arrDom[$i]->artikelname;
          $preis_1[$i] = $arrDom[$i]->preis;
          $bestellnr_1[$i] = $arrDom[$i]->bestellnr;
          $urlshop_1[$i] = $arrDom[$i]->urlshop;
          $anmerkung_1[$i] = $arrDom[$i]->anmerkung;
          $name_1[$i] = $arrDom[$i]->name;
          $stk_1[$i] = $arrDom[$i]->stk;
          }

          Aber ich erreiche keine füllung der Variablen.
          Wo liegt bei mir der Fehler, uasser das ich mit PHP wenig erfahrung mitbringe?

          Kommentar


          • #6
            Gib doch mal das Array aus, in dem die Werte stecken sollen. Ist da überhaupt etwas drin?

            PHP-Code:
            echo "<pre>";
            print_r($arrDom[$i]);
            echo 
            "</pre>"
            ... und irgendwie bezweifle ich gerade, dass Dein error_reporting aufgedreht ist.
            MM Newmedia | MeinBlog

            Kommentar


            • #7
              Geht es um eine reine Ausgabe von Xml-Daten oder werden die Daten auch anderweitig verarbeitet?

              Wenn es nur um eine Ausgabe geht, nimm Xslt:
              http://de2.php.net/xslt
              http://de.selfhtml.org/xml/darstellung/index.htm
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar

              Lädt...
              X