Hallo Mathias!
Wo bekommst du plötzlich $user her?! Was hat $user damit zu tun?
Sorry, das kommt noch aus dem original Skript woher ich den Code habe.
Mach doch bitte mal locker: Stelle uns den gesamten relevanten Code zur Verfügung, das XML vorher und das XML, wie du es haben willst.
Sorry, ich verzweifel langsam daran. Je mehr ich probiere desto weniger Überblick hab ich grad noch.
Hier die XML colors.php (nach dem Beispiel von PHP.net):
<?PHP
$xmlstr = <<<XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<colors>
<color>
<name>Orange</name>
<ton1>Rot</ton1>
<ton2>Gelb</ton2>
</color>
<color>
<name>Braun</name>
<ton1>Rot</ton1>
<ton2>Gruen</ton2>
</color>
</colors>
XML;
?>
Heraus kommen soll:
<?PHP
$xmlstr = <<<XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<colors>
<color>
<name>Orange</name>
<ton1>Rot</ton1>
<ton2>Gelb</ton2>
</color>
</colors>
XML;
?>
Hier der PHP Code der das bewerkstelligen soll:
// alle Fehler anzeigen
error_reporting(E_ALL | E_STRICT);
// Dokument als Textdokument anzeigen
header('Content-Type: text/plain');
// XML-Datei 'laden'
include('colors.php');
// XML zu Array
$xml = new SimpleXMLElement($xmlstr);
// Array durchlaufen solange es color-Elemente gibt und Element an $color übergeben
foreach($xml->xpath('color') as $color){
// Wenn Kind-Element ton2 'Gruen' ist
if($color->ton2 == 'Gruen'){
// lösche Element (funktioniert nicht)
unset($color[0]);
// sonst tue nichts
}
// Schleife beenden
}
// gib XML Daten aus
echo($xml->asXML());
// erstelle neuen Inhalt von colors.php
$xml_data = '<?PHP
$xmlstr = <<<XML
'.$xml->asXML().'
XML;
?>';
// schreibe neue Datei
$handle = fopen($login_file, "w");
flock($handle, LOCK_EX);
ftruncate($handle, 0);
fwrite($handle, $xml_data);
flock($handle, LOCK_UN);
Das ist jetzt genau der Code, der ausgeführt wird.
Alle Variablen, Arrays und Werte stehen hier jetzt genau so wie bei mir.
Es tut sich aber rein gar nichts, als ob das unset() ignoriert würde.
Christian