Ankündigung

Einklappen
Keine Ankündigung bisher.

xml abfragen mit simple xml

Einklappen

Neue Werbung 2019

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

  • xml abfragen mit simple xml

    Hallo zusammen,

    ich habe folgende php und xml am start. Die xml ist voll mit unseren Produktdaten.
    PHP-Code:
     <html> 
        <head> 
            <title>XML Datei lesen</title> 
        </head> 
        <body> 
    <?php 
        $filename 
    'produkte.xml'
         
        if(
    file_exists($filename)) { 
            
    $xml simplexml_load_file($filename); 
            if(
    $xml) { 
                foreach(
    $xml->tarif as $tarif) { 
                
    ?> 
            <table> 
                <tr> 
                    <td></td> 
                    <td><?php echo $tarif->tarifbeschreibung ?></td> 
                </tr> 
                <tr> 
                    <td></td> 
                    <td><?php echo $tarif->tarifdetails ?></td> 
                </tr> 
                <tr> 
                    <td></td> 
                    <td><a href="<?php echo $tarif->tariflink ?>">link</td> 
                </tr> 
              <tr> 
                    <td></td> 
                    <td><img src="<?php echo $geraet->bild ?>"></td> 
                </tr> 
            </table> 
    <?php     
                

            } else { 
                echo 
    '        <p>Die Datei names '$filename .' konnte nicht geöffnet werden</p>'
            } 
        } 
    ?> 
        </body> 
    </html>
    PHP-Code:
    <?xml version='1.0'?>
    <system>
        <tarif>
            <tarifbeschreibung>50 freiminuten</tarifbeschreibung>
            <tarifdetails>in alle netze</tarifdetails>
            <tariflink>http://www.......</tariflink>
        </tarif>
        <geraet>
            <hersteller>nokia</hersteller>
            <bild>http://www........jpg</bild>
            
        </geraet>
    </system>
    Ich möchte nun die xml so abfragen das er auf einer seite nur ein bestimmtes Produkt mit den gewünschten features anzeigt. So das ich also pro Internetseite ein Produkt präsentieren kann. Hatt da einer ne Hilfestellung für mich, ich komm da leider nicht ganz weiter?


  • #2
    Was klappt nicht?
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      1. alles was in der XML unter geraet steht wird nicht eingelesen, da es verschachtelt ist.

      2. ich gerne auf der nächsten Internetseite ein anderes produkt anzeigen lassen möchte was ebenfalls in der xml hinterlegt ist. So zeigt er alle daten die in der xml sind.

      Kommentar


      • #4
        PHP-Code:
        foreach($xml->tarif as $tarif
        Wenn du es so machst, geht der Array-Zeiger ja auch nie auf das Element geraet.
        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar


        • #5
          klingt logisch, wie mach ichs da?

          ne zweite zeile?

          PHP-Code:
          foreach($xml->tarif as $tarif
          foreach(
          $xml->geraet as $geraet

          Kommentar


          • #6
            Wo denkst du hin?
            Hast du schonmal
            PHP-Code:
            foreach ($xml as $tarif_geraet) { } 
            versucht?
            Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

            Kommentar


            • #7
              PHP: SimpleXMLElement->xpath() - Manual
              XPath Tutorial
              "Mein Name ist Lohse, ich kaufe hier ein."

              Kommentar


              • #8
                Zitat von Manko10 Beitrag anzeigen
                Wo denkst du hin?
                Hast du schonmal
                PHP-Code:
                foreach ($xml as $tarif_geraet) { } 
                versucht?
                Geht irgendwie nicht.

                Ich komm nicht dahinter wie er alle array bereiche auslesen soll.
                Irgendwo bei foreach ist der Fehler, aber wooo?

                Kommentar


                • #9
                  Ich denke, ein print_r($xml) sollte die Erhellung bringen.
                  Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                  Kommentar


                  • #10
                    danke, aber ich bin absoluter noob in dem bereich.

                    Kommt der befehl zusätzlich rein oder wie?

                    Kommentar


                    • #11
                      print_r($xml);

                      und du kannst sehen, wie das Objekt $xml aufgebaut ist. Wenn du das gesehen hast, dürfte es dir leicht fallen, deinen Code dorthingehend zu korrigieren.
                      Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                      Kommentar


                      • #12
                        Bei SimpleXML bringt print_r() nichts, weil es gekapselte Objekte sind.

                        Ich sehe in deinem XML-Beispiel allerdings auch nur einen <tarif> Tag ..
                        "Mein Name ist Lohse, ich kaufe hier ein."

                        Kommentar


                        • #13
                          Wieso sollte print_r() nichts bringen? Diese Funktion arbeitet rekursiv und zwar bei Objekten genauso wie bei Arrays:
                          PHP-Code:
                          <?php
                          error_reporting
                          (E_ALL|E_STRICT);

                          $xml simplexml_load_string(
                              
                          '<?xml version="1.0"?>
                              <system>
                                  <tarif>
                                      <tarifbeschreibung>50 freiminuten</tarifbeschreibung>
                                      <tarifdetails>in alle netze</tarifdetails>
                                      <tariflink>http://www.......</tariflink>
                                  </tarif>
                                  <geraet>
                                      <hersteller>nokia</hersteller>
                                      <bild>http://www........jpg</bild>
                                      
                                  </geraet>
                              </system>'
                          );

                          print 
                          '<pre>';
                          print_r($xml);
                          print 
                          '</pre>';
                          ?>
                          Ausgabe:
                          Code:
                          SimpleXMLElement Object
                          (
                              [tarif] => SimpleXMLElement Object
                                  (
                                      [tarifbeschreibung] => 50 freiminuten
                                      [tarifdetails] => in alle netze
                                      [tariflink] => http://www.......
                                  )
                          
                              [geraet] => SimpleXMLElement Object
                                  (
                                      [hersteller] => nokia
                                      [bild] => http://www........jpg
                                  )
                          
                          )
                          Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                          Kommentar


                          • #14
                            Tatsache, war aber mal anders, eventuell beim Knotenzugriff?
                            "Mein Name ist Lohse, ich kaufe hier ein."

                            Kommentar


                            • #15
                              Ja. Das habe ich auch so in Erinnerung. Glaube nur bei Unterknoten gabs da tw. komische Seiteneffekte.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X