McFrosty1
02.02.2007, 18:39:26
Hallo,
ich bin relativ neu im Thema PHP und habe folgendes Problem:
Ich sollte zum Test einen kleinen Webshop erstellen. Dieser besteht aus 6 Dateien.
artikel.php, artikelliste.php, Artikel.inc, artikeldaten.xml, warenkorb.php und Warenkorb.inc
Wenn man die Datei "artikel.php" im Browser aufruft, sollte die Bestellseite angezeigt werden. Es werden aber nur die Preise, nicht die Titel der Bücher angezeigt.
Folgend die Dateien:
Hier "artikel.php"
<?php include("artikelliste.php")?>
<html>
<body>
<h1>Folgende Bücher können Sie bestellen</h1>
<?php
$artikelparser = new Artikelparser($datei);
foreach ($artikelparser->art as $nummer=>$art_objekt) {
print "<a href='warenkorb.php?artikel=$nummer'>";
print $art_objekt->$name;
print "</a> ".$art_objekt->preis." Euro<p>\n";
}
?>
</body>
</html>
Und die Datei "artikelliste.php":
<?php
include_once("Artikel.inc");
class Artikelparser{
var $nummer;
var $art;
var $aktuell;
var $titel;
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);
}
function startElement($parser, $name, $atts){
$this->aktuell= $name;
if($name == "ARTIKEL"){
$this->nummer= $atts["NUMMER"];
}
}
function endElement($parser, $name){
if($name == "ARTIKEL"){
$this->art[$this->nummer]= new Artikel($this->titel, $this->preis);
}
$this->aktuell="";
}
function cdata($parser, $text){
if($this->aktuell== "PREIS") $this->preis = $text;
if($this->aktuell== "TITEL") $this->titel = $text;
}
function getArtikelArray(){
return $this->art;
}
}
?>
und noch die Datei "artikeldaten.xml"
<?xml version="1.0"?>
<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 Märchen</name>
<preis>25.9</preis>
</artikel>
<artikel nummer="4004">
<name>Elric von Melnibonee</name>
<preis>29.9</preis>
</artikel>
</artikeldaten>
Vielleicht kann mir jemand helfen, was ich falsch gemacht habe.
Vielen Dank schon mal im Voraus.
Gruß
Sven
ich bin relativ neu im Thema PHP und habe folgendes Problem:
Ich sollte zum Test einen kleinen Webshop erstellen. Dieser besteht aus 6 Dateien.
artikel.php, artikelliste.php, Artikel.inc, artikeldaten.xml, warenkorb.php und Warenkorb.inc
Wenn man die Datei "artikel.php" im Browser aufruft, sollte die Bestellseite angezeigt werden. Es werden aber nur die Preise, nicht die Titel der Bücher angezeigt.
Folgend die Dateien:
Hier "artikel.php"
<?php include("artikelliste.php")?>
<html>
<body>
<h1>Folgende Bücher können Sie bestellen</h1>
<?php
$artikelparser = new Artikelparser($datei);
foreach ($artikelparser->art as $nummer=>$art_objekt) {
print "<a href='warenkorb.php?artikel=$nummer'>";
print $art_objekt->$name;
print "</a> ".$art_objekt->preis." Euro<p>\n";
}
?>
</body>
</html>
Und die Datei "artikelliste.php":
<?php
include_once("Artikel.inc");
class Artikelparser{
var $nummer;
var $art;
var $aktuell;
var $titel;
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);
}
function startElement($parser, $name, $atts){
$this->aktuell= $name;
if($name == "ARTIKEL"){
$this->nummer= $atts["NUMMER"];
}
}
function endElement($parser, $name){
if($name == "ARTIKEL"){
$this->art[$this->nummer]= new Artikel($this->titel, $this->preis);
}
$this->aktuell="";
}
function cdata($parser, $text){
if($this->aktuell== "PREIS") $this->preis = $text;
if($this->aktuell== "TITEL") $this->titel = $text;
}
function getArtikelArray(){
return $this->art;
}
}
?>
und noch die Datei "artikeldaten.xml"
<?xml version="1.0"?>
<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 Märchen</name>
<preis>25.9</preis>
</artikel>
<artikel nummer="4004">
<name>Elric von Melnibonee</name>
<preis>29.9</preis>
</artikel>
</artikeldaten>
Vielleicht kann mir jemand helfen, was ich falsch gemacht habe.
Vielen Dank schon mal im Voraus.
Gruß
Sven