Hi!
- Hab ich so gelöst
$xml = simplexml_load_file("test.xml");
- Hapert es schon, das müsste doch das sein?
$xml = new SimpleXMLElement("event");
Mit 2. erstellst du ein Element. Aber das soll ja nicht irgendwie in der Luft hängen. Du willst doch ein Kind unterhalb des Wurzelelements hinzufügen. Nummer 1 ist schon richtig. Aber nun verweist $xml auf das Wurzelelement und da muss jetzt ein Kind rein.
3 und 4. Wäre dann doch:
$start = $xml->addAttribute("start","$_POST[start]");
$title = $xml->addAttribute("title","$_POST[title]");
Variablen müssen nicht in Anführungszeichen eingerahmt werden. Das ist völlig überflüssig. Allerdings sollte der Key-Name in Anführungszeichen eingefasst werden, sonst ist sich PHP nicht sicher, ob du eine Konstanten mit dem Namen meinst oder den Keys als Stringliteral. Und um dich jetzt noch etwas zu verwirren: bei innerhalb von ""-Strings notierten Array-Zugriffen kommen keine Anführungszeichen um den Key oder es wird so notiert: ${var['key']}. Aber Variablenersetzung in Strings brauchst du hier ja nicht.
> Und dann muss die Datei geschrieben werden:
> ~~~php
$handle = fopen("test.xml", "wb");
> fwrite($handle, $xml->asXML());
> fclose($handle);
file_put_contents() macht die Sache einfacher. Und noch einfacher wird es, wenn du dir im Handbuch die Beschriebung der Methode asXML() anschaust.
Klappt natürlich nicht :(
"Klappt nicht" klappt nie. Meine Vorstellungen von "klappt nicht" müssen nicht zwangsläufig mit deinen übereinstimmen. Und wenn du schon festgestellt hast, dass irgendwas nicht so läuft, wie du dir das vorstellst, dann beschreib das bitte, und zwar möglichst genau. Dazu ist auch der Inhalt von Variablen und die Funktionsergebnisse interessant, die von deinen Vorstellungen abweichen. Natürlich muss man sich diese Werte anzeigen lassen, aber das gehört zu den grundlegensten Debugging-Methoden.
Das mit dem "$_POST" benutze ich immer, weil ja später noch ein Formular dazukommt und ich ja definieren muss, von wo er die Eingabe nimmt oder?
Du musst "ihm" (wer auch immer das konkret ist) das geben, was "er" braucht. Und wenn Daten über $_POST ins Script kommen, musst du auch $_POST nehmen - logisch.
Lo!