So, nachdem das nun läuft, hab ich mich heute mal daran versucht das mittels PHP (also ohne XSLT) zu lösen:
Hier mal die PHP-Codes:
Für Ausgabe aller Autos:
<?php
$id = $_GET['id'];
if (file_exists("autos_php.xml")) {
$xml = simplexml_load_file("autos_php.xml");
$path ="/autos/auto";
if (!$res = $xml->xpath($path)) {
echo "Auto nicht vorhanden!";
}
else {
echo "<table border="1">";
echo "<tr>";
echo "<th>Marke</th>";
echo "<th>Modell</th>";
echo "<th>Preis</th>";
echo "<th>Adresse</th>";
echo "</tr>";
foreach ($xml->xpath('auto') as $auto) {
echo '<tr><td>', $auto->marke, '</td><td>', $auto->modell, '</td><td>', $auto->preis,'</td>';
foreach ($xml->xpath('//adresse') as $adresse) {
echo '<td>', $adresse->name, $adresse->strasse, $adresse->ort,'</td></tr>';
}
else {
exit("Konnte Datei nicht laden.");
}
?>
Und für die Daten eines Autos:
<?php
$id = $_GET['id'];
if (file_exists("autos_php.xml")) {
$xml = simplexml_load_file("autos_php.xml");
$path ="/autos/auto[@id=".$id."]";
if (!$res = $xml->xpath($path)) {
echo "Artikel nicht vorhanden!";
}
else {
echo "<table border="1">";
echo "<tr>";
echo "<td>Marke:</td>";
echo "<td>".$res[0]->marke."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Modell:</td>";
echo "<td>".$res[0]->modell."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Preis:</td>";
echo "<td>".$res[0]->preis."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Adresse:</td>";
echo "<td>";
foreach ($xml->xpath('//adresse') as $adresse) {
echo $adresse->name, $adresse->strasse, $adresse->ort,'<br />';
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>PS:</td>";
echo "<td>".$res[0]->ps."</td>";
echo "</tr>";
}
}
else {
exit("Konnte Datei nicht laden.");
}
?>
Läuft aber nicht auf meinem Apache. Also hab ich wohl was falsch.
Könntest du mir mal wieder auf die Sprünge helfen?
Was hab ich denn da schon wieder falsch?
Problem mit PHP ist, dass wir das nur ganz kurz angesprochen haben, aber diese Aufgabe für die Klausur auch mit PHP lösen müssen.
Zumindest so, dass erst ne Gesamtübersicht angezeigt wird und dann bei nem Klick auf eins der Autos wie gehabt ne Einzelübersicht kommt.
Die Einzelansicht wollte ich dann einfach so erzeugen lassen, dass bei dem Klick auf nen Link der Gesamtübersicht die ID des entsprechenden Autos mit an die PHP-Datei der Einzelübersicht geschickt wird und somit nur dieses Auto ausgegeben wird.
Das hier soll jetzt nur mal die Grobversion sein.
Da kommen später natürlich auch noch die anderen Daten hinzu.
Die Autos_php.xml hab ich nur soweit abgeändert, dass jedes Auto jetzt ne eigene ID hat.
Hier mal noch der angepasste XML-Code:
<?xml version="1.0"?>
<?xml-stylesheet href="autos_xsl.xsl" type="text/xsl" ?>
<autos>
<auto id="1">
<marke xml:link="simple" naechster="Maserati" href="mas1.xml">Maserati</marke>
<modell>Biturbo Coupé</modell>
<foto quelle="Maserati1.jpg"></foto>
<foto2 quelle="Maserati1_gross.jpg"></foto2>
<preis>EUR 1.111</preis>
<adresse>
<name>Helmut Müller</name>
<strasse>Schustereck 5</strasse>
<plz>66709</plz>
<ort>Rappweiler</ort>
</adresse>
<ps>75</ps>
<EZ>06/1984</EZ>
<art>Coupé</art>
<farbe>schwarz</farbe>
<kilometer>100.000km</kilometer>
<extras>keine</extras>
<kraftstoff>Benzin</kraftstoff>
<getriebe>Automatik</getriebe>
</auto>
<auto id="2">
<marke xml:link="simple" naechster="Audi" href="audi.xml">Audi</marke>
<modell>Audi A8</modell>
<foto quelle="Audi.jpg"></foto>
<foto2 quelle="Audi_gross.jpg"></foto2>
<preis>EUR 12.000</preis>
<adresse>
<name>Donald Duck</name>
<strasse>Feldweg 3</strasse>
<plz>54621</plz>
<ort>Entenhausen</ort>
</adresse>
<ps>125</ps>
<EZ>10/2001</EZ>
<art>4-Türer</art>
<farbe>silber</farbe>
<kilometer>40.000km</kilometer>
<extras>Klimaanlage
<extra>Automatik</extra>
<extra>Nebelscheinwerfer</extra>
<extra>Sitzheizung</extra>
</extras>
<kraftstoff>Benzin</kraftstoff>
<getriebe>Handschaltung</getriebe>
</auto>
<auto id="3">
<marke xml:link="simple" naechster="Maserati" href="mas2.xml">Maserati</marke>
<modell>Maserati Sportswagon</modell>
<foto quelle="Maserati2.jpg"></foto>
<foto2 quelle="Maserati2_gross.jpg"></foto2>
<preis>EUR 87.000</preis>
<adresse>
<name>Fred Feuerstein</name>
<strasse>Steinbruch 5</strasse>
<plz>66679</plz>
<ort>Losheim am See</ort>
</adresse>
<ps>340</ps>
<EZ>05/2005</EZ>
<art>Cabrio</art>
<farbe>blau</farbe>
<kilometer>25.000km</kilometer>
<extras>Klimaanlage
<extra>Automatik</extra>
<extra>Nebelscheinwerfer</extra>
<extra>Sitzheizung</extra>
<extra>Ledersitze</extra>
</extras>
<kraftstoff>Benzin</kraftstoff>
<getriebe>Handschaltung</getriebe>
</auto>
</autos>