matthiasschnueriger
Erfahrenes Mitglied
Ich mal wieder...
Idee: Bestehende XML-Datensätze in einem HTML-Formular anzeigen, bearbeiten und wieder abspeichern.
Meine XML-Struktur:
Dabei gibt es für das Tag <hauptkomponente> nur 2 Möglichkeiten und zwar "Dunkle Grundmasse" und "Helle Grundmasse". Dies soll über ein Radio-Button ausgewählt werden können.
Die <nebenkomponenten> sollen über eine Checkbox bearbeitet werden können.
Aktueller Stand: Scheinbar hat das schon mal jemand versucht (Link), deshalb habe ich mit diesem Code gestartet und versucht für mein XML-File anzupassen. Leider funktioniert es nicht ganz, die Verknüpfung zu meinem XML scheint zu klappen, allerdings wird der Datensatz nicht richtig bearbeitet.
Der Dateiname soll nicht editierbar sein, deshalb wird dieser ganz normal und ohne Textfeld ausgegeben.
Wie krieg ich es jetzt hin, dass der richtige Radio-Button und die richtigen Checkboxen (gemäss XML-Informationen) ausgewählt sind und ich diese aber ändern kann?
Mein PHP-Code (inkl. HTML Formular):
Idee: Bestehende XML-Datensätze in einem HTML-Formular anzeigen, bearbeiten und wieder abspeichern.
Meine XML-Struktur:
HTML:
<rezeptdaten>
<rezept>
<datei>xy.jpg</datei>
<hauptkomponente>Dunkle Grundmasse</hauptkomponente>
<nebenkomponente1>Haselnuss</nebenkomponente1>
<nebenkomponente2>Blaubeeren</nebenkomponente2>
</rezept>
<rezept>
<datei>abc.jpg</datei>
<hauptkomponente>Helle Grundmasse</hauptkomponente>
<nebenkomponente1>Walnuss</nebenkomponente1>
<nebenkomponente2>Heidelbeeren</nebenkomponente2>
<nebenkomponente3>Butter</nebenkomponente3>
<nebenkomponente4>Schokolade</nebenkomponente4>
</rezept>
</rezeptdaten>
Dabei gibt es für das Tag <hauptkomponente> nur 2 Möglichkeiten und zwar "Dunkle Grundmasse" und "Helle Grundmasse". Dies soll über ein Radio-Button ausgewählt werden können.
Die <nebenkomponenten> sollen über eine Checkbox bearbeitet werden können.
Aktueller Stand: Scheinbar hat das schon mal jemand versucht (Link), deshalb habe ich mit diesem Code gestartet und versucht für mein XML-File anzupassen. Leider funktioniert es nicht ganz, die Verknüpfung zu meinem XML scheint zu klappen, allerdings wird der Datensatz nicht richtig bearbeitet.
Der Dateiname soll nicht editierbar sein, deshalb wird dieser ganz normal und ohne Textfeld ausgegeben.
Wie krieg ich es jetzt hin, dass der richtige Radio-Button und die richtigen Checkboxen (gemäss XML-Informationen) ausgewählt sind und ich diese aber ändern kann?
Mein PHP-Code (inkl. HTML Formular):
PHP:
<?php
$file = "rezeptdaten.xml"; // Pfad zur Quelldatei
$xml = simplexml_load_file($file);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>XML-Editor</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
if (empty($_POST)) {
?>
<form action="<? echo $_SERVER['PHP_SELF']?>" method="post">
<?php
foreach ($xml as $node) {
$i++;
$hauptkomponente = $node->hauptkomponente;
$nebenkomponente = $node->nebenkomponente;
//
echo '<hr size="1"><b>'.(string)$node->datei.'</b><br>'; // Gibt den Dateinamen aus, kann nicht bearbeitet werden
echo "<input name=\"hauptkomponente_$i\" type=\"radio\" value=\"$hauptkomponente\" /> Grundmasse 1 <br>"; // Radio-Button 1
echo "<input name=\"hauptkomponente_$i\" type=\"radio\" value=\"$hauptkomponente\" /> Grundmasse 2 <br>"; // Radio Button 2
echo "<input name=\"nebenkomponente_$i\" type=\"checkbox\" value=\"$nebenkomponente\" /> Haselnuss<br>"; //Checkbox
echo "<input name=\"nebenkomponente_$i\" type=\"checkbox\" value=\"$nebenkomponente\" /> Walnuss<br>"; //Checkbox
echo "<input name=\"nebenkomponente_$i\" type=\"checkbox\" value=\"$nebenkomponente\" /> Baumnuss<br>"; //Checkbox
echo "<input name=\"nebenkomponente_$i\" type=\"checkbox\" value=\"$nebenkomponente\" /> Blaubeeren<br>"; //Checkbox
echo "<input name=\"nebenkomponente_$i\" type=\"checkbox\" value=\"$nebenkomponente\" /> Heidelbeeren<br>"; //Checkbox
echo "<input name=\"nebenkomponente_$i\" type=\"checkbox\" value=\"$nebenkomponente\" /> Brombeeren<br>"; //Checkbox
}
?>
<input type="submit" name="Submit" value="Speichern" />
</form>
</body>
</html>
<?php
} else {
foreach ($_POST as $key => $value) {
if($key != "Submit") {
$para = explode("_", $key);
$nr = $para[1];
$hauptkomponente = $para[0];
$xml->rezept[$nr-1]->$hauptkomponente = $value;
$xml->asXML($file);
}
}
echo "Datei gespeichert!\n";
echo "</body>\n";
echo "</html>";
}
?>
</body>
</html>