XML-Parser Problem - Shop(System)

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

  • XML-Parser Problem - Shop(System)

    Hallo Zusammen!

    Vielleicht kann mir jemand helfen, aber ich weiss nicht was in den dem Skript falsch ist oder noch fehlt.

    Es wird keine Ausgabe angezeigt, aber auch keine Fehlermeldung.

    PHP-Code:
     [B]artikel.php[/B]
    <?php session_start();  

    include(
    "artikelparser.php"); 
    $datei = new Artikelparser($nummer,$name,$art,$preis); 


    ?> 


    <?php 

    if ($_SESSION['login_okay']) 

        
    ?> 
    <html><head> 
    <title>Artikel</title> 
    <link rel="stylesheet" href="style.css"> 
    </head> 
    <body> 
        <h1>Folgende Bücher können Sie bestellen</h1> 
         
        <body> 
         
            <?php                 
                 
             
    function Artikelparser($datei){
             
             global 
    $nummer$name$art$preis;
                              
            foreach(
    $art as $nummer=>$art_objekt){ 
             
            print 
                
    "<a href='warenkorb.php?artikel=$nummer'>"
            print 
    $art_objekt->name
            print 
    "</a> ".$art_objekt->preis."Euro<p>\n"
            } 
           }
            
    ?> 

        <br> 
        <a href="index.php"><b>Zurück zur Login-Seite</b></a> 
        <?php 
        
    }  
        else { 
        
    ?> 
        </body> 
        </html> 
         
        <html> 
        <head> 
           <title>Kein Zugriff</title> 
            <link rel="stylesheet" href="style.css"> 
        </head> 
        <body>      
        Leider haben Sie keinen Zugriff auf diese Seite<br> 
        Bitte melden Sie sich auf der <a href="index.php"><b>Loginseite</b></a> an. 
        </body></html> 
        <?php 

    ?>
    PHP-Code:
    [B]artikelparser.php[/B]
    <?php     session_start();  
            include_once (
    "Artikel.inc");             
             
    $html "<html><body>";

    class 
    Artikelparser{
            
            var 
    $nummer
            var 
    $name
            var 
    $art
            var 
    $preis
        
        
        function 
    Artikelparser($datei){    
            
        
    $this->art=Array();    
        
        
        
    $xmlFile implode(""file("artikeldaten.xml"));
        
    $parser xml_parser_create();
        
    xml_set_object($parser$this);
        
    xml_set_element_handler($parser,"startElement","endElement");
        
    xml_set_character_data_handler($parser"cdata");
        
    xml_parse($parser$xmlFile);
        
    xml_parser_free($parser);
        print 
    $html;
        print 
    "</body></html>";
        
        }
    /*************************************
    Funktionsdeklarationen
    *************************************/

            
    function startElement($parser$name$atts){   
            
            global 
    $html$nummer$anzahl;
            
            switch(
    strtolower($name)){
                case 
    "artikel":            
                
    // Der globalen Variablen wird eine Überschrift hinzugefügt            
                    
    $name.="<h1>".$atts["NAME"]."</h1>";
                    
    $html.="<br>";
                    break;            
                case 
    "nummer":
                    
    $nummer=$atts["NUMMER"];
                    
    $html.="<hr>";
                    break;
                case 
    "anzahl":
                    
    $anzahl.="";
                    
    $html.="<br>";
                    break;
                case 
    "preis":
                    
    $preis=$atts["PREIS"];
                    break;
                }
            
            }
    /*            $this->aktuell= $name;   
                if($name == "ARTIKEL"){   
                    $this->nummer= $atts["NUMMER"];   
                }   
            }   */
            
    function endElement($parser$name){   
            
                global 
    $html;
                
                switch(
    strtolower($name)){
                    case 
    "artikel":
                        
    $html.="</h1>";
                        break;
                }
            }
            
            function 
    cdata($parser$text){
                global 
    $html;
                
                
    $html.=$text;
            }
            
     
               
    /*
            function cdata($parser, $text){   
                if($this->aktuell== "PREIS") $this->preis = $text;   
                if($this->aktuell== "TITEL") $this->titel = $text;   
            }   */

           
        
    function getArtikelArray(){   
            return 
    $this->art;   
        }   
    }
    ?>
    PHP-Code:
    und die [B]artikeldaten.xml[/B]
    <?xml version="1.0" encoding="iso-8859-1"?>
    <artikeldaten>
        <artikel nummer="1001">
            <name>Der Herr der Ringe</name>
            <preis>39.9</preis>
        </artikel>
        <artikel nummer="2002">
            <name>Der kleine Hobbit</name>
            <preis>19.9</preis>
        </artikel>
        <artikel nummer="3003">
            <name>Grimms Maerchen</name>
            <preis>25.9</preis>
        </artikel>
        <artikel nummer="4004">
            <name>Elric von Melnibonee</name>
            <preis>29.9</preis>
        </artikel>
    </artikeldaten>
    [COLOR=red]Die jetztige FALSCHE Ausgabe ist:[/COLOR]

    Folgende Bücher können Sie bestellen

    Zurück zur Login-Seite


    DIE RICHTIGE AUSGABE WÄRE:

    EDIT:

    Folgende Bücher können Sie bestellen
    Der Herr der Ringe 39.9Euro
    Der kleine Hobbit 19.9Euro
    Grimms Märchen 25.9Euro
    Elric von Melnibonee 29.9Euro
    Zurück zur Login-Seite


  • #2
    ...aber auch keine Fehlermeldung.
    Und das weisst du so sicher weil du dein error_reporting(E_ALL) gesetzt hast

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Verstehe das error_reporting nicht so ganz unter Manual.

      Reicht das zum anzeigen von Fehlermeldung.

      Bei mir werden immer noch keine Meldungen angezeigt.

      Wie kann ich das am besten einsetzten und wo könnte ich es einsetzen.

      Danke schön im Voraus.

      PHP-Code:
      include("artikelparser.php"); 
      $datei = new Artikelparser($nummer,$name,$art,$preis); 
       
      //Fehlermeldung ausgeben
      error_reporting(E_ALL); 

      Kommentar


      • #4
        PHP-Code:
        //immer als ERSTE Zeile deines Codes
        error_reporting(E_ALL);
        include(
        "artikelparser.php"); 
        $datei = new Artikelparser($nummer,$name,$art,$preis); 
        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Oh jetzt kommen ganz schön viele Fehlermeldungen, habe error_reporting an den Anfang gesetzt.

          EDIT:


          Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\PHP02\artikelparser.php on line 1

          Notice: Undefined variable: nummer in C:\xampp\htdocs\PHP02\artikel.php on line 4

          Notice: Undefined variable: name in C:\xampp\htdocs\PHP02\artikel.php on line 4

          Notice: Undefined variable: art in C:\xampp\htdocs\PHP02\artikel.php on line 4

          Notice: Undefined variable: preis in C:\xampp\htdocs\PHP02\artikel.php on line 4

          Notice: Undefined index: NAME in C:\xampp\htdocs\PHP02\artikelparser.php on line 41

          Notice: Undefined index: PREIS in C:\xampp\htdocs\PHP02\artikelparser.php on line 53

          Notice: Undefined index: NAME in C:\xampp\htdocs\PHP02\artikelparser.php on line 41

          Notice: Undefined index: PREIS in C:\xampp\htdocs\PHP02\artikelparser.php on line 53

          Notice: Undefined index: NAME in C:\xampp\htdocs\PHP02\artikelparser.php on line 41

          Notice: Undefined index: PREIS in C:\xampp\htdocs\PHP02\artikelparser.php on line 53

          Notice: Undefined index: NAME in C:\xampp\htdocs\PHP02\artikelparser.php on line 41

          Notice: Undefined index: PREIS in C:\xampp\htdocs\PHP02\artikelparser.php on line 53

          Notice: Undefined variable: html in C:\xampp\htdocs\PHP02\artikelparser.php on line 26




          Kommentar


          • #6
            Zeile 4: Du rufst deine Funktion mit Parametern auf die nicht existieren --> was soll denn die Fkt damit machen ? Dann gehst du bei jeder genannten Zeile mal nachschauen und versuchst die fraglichen Variablen mal auszugeben --> dabei kan var_dump() viel helfen.
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Nun sind alle Fehlerquellen beseitigt, aber es erscheint wieder die gleiche Anzeige wie am Anfang.

              Woran kann das liegen, das der Inhalt wieder nicht angezeigt wird. Verstehe das nicht.

              EDIT:
              Folgende Bücher können Sie bestellen

              Zurück zur Login-Seite

              Kommentar


              • #8
                Original geschrieben von jana_777
                Woran kann das liegen, das der Inhalt wieder nicht angezeigt wird. Verstehe das nicht.
                Das wirst du auch weiterhin nicht, wenn du kein Debugging betreibst. Also mache Kontrollausgaben, etc.


                Dass mehrmals <body> in einem Dokument allerdings hochgradiger Blödsinn ist, sollte wohl klar sein.

                Und das Schliessen von body und html erst im else-Teil ist auch fehlplatziert.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Danke. Probiere das mal aus. <body>usw. doppelt ist echt blödsinn.

                  Kommentar

                  Lädt...
                  X