Fájl írása for ciklusban (XML, PHP)

Fájl írása for ciklusban (XML, PHP)
2008-12-14T15:48:52+01:00
2008-12-15T00:23:59+01:00
2022-11-11T22:10:58+01:00
danyg
Sziasztok,

van egy xml fájlom, ami user adatokat tárol (elérhető nyelvek, menüpontok, stb.) Az idézett részlet csak a menüpontokat tartalmazza, 1 felhasználó esetében.

<user name="user" password="pass" admin="0"> <menu> <news title="1" date="1" lang="1" content="1" list="1"/> <events title="1" date="1" content="1" list="1"/> </menu> </user>

Az adminisztrátornak joga van új menüt létrehozni, ekkor minden user.xml-ben definiált user <menu> eleméhez új Node adódik.


// itt visszakapom a dom-objektumot $user = readXML(__XML_PATH__.'/user.xml'); // itt megkapom az összes <menu> elemet $menu = $user->getElementsBytagName('menu'); // ezt fogom hozzácsatolni $item = $user->createElement($title);

Ezt követően indul a for vezérlés, ami feladata
- megnyitogatja az xmlt
- hozzáadja az új gyermeket
- menti a fájlt
- bezárja a fájlt

for ($i=0;$i<$menu->length;$i++) { $handle = fopen(__XML_PATH__.'/user.xml', "w"); $menu->item($i)->appendChild($item); $item->setAttribute('content',1); $item->setAttribute('lang',1); fwrite($handle,$user->saveXML()); fclose($handle); }

A tapasztalt probléma az, hogy csak az utolsó felhasználó menüjébe veszi fel az új elemet, a többi user menüjéhez nem nyúl hozzá. Egyesével megcsinálja, de nem tudhatom sajnos, hogy hány felhasználó lesz a rendszerben (ezért kéne a for ciklus).

Valakinek ötlete/tapasztalata van ezügyben?
Válaszokat előre is köszönöm.

DanyG
Mutasd a teljes hozzászólást!
Próbáld így.
Az $itemet szerintem minden ciklusban létre kell hozni.

// itt visszakapom a dom-objektumot $user = readXML(__XML_PATH__.'/user.xml'); // itt megkapom az összes <menu> elemet $menu = $user->getElementsBytagName('menu'); for ($i=0;$i<$menu->length;$i++) { $handle = fopen(__XML_PATH__.'/user.xml', "w"); $item = $user->createElement($title); // ezt fogom hozzácsatolni $menu->item($i)->appendChild($item); $item->setAttribute('content',1); $item->setAttribute('lang',1); fwrite($handle,$user->saveXML()); fclose($handle); }
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd