XML problem i PHP
Hejsan,
efter att ha googlat och försökt förstå documentation så vänder jag mig tillslut till er.
Ska försöka göra en liten mini-chat där man kan skriva kommentarer på ett filmklipp, och allt ska sparas i en XML fil.
Jag har då lagt kommentarerna under det "game" som kommentarerna tillhör, vill gärna ha det i en fil.
Problemet är att jag inte riktigt vet hur jag ska lägga till ett nytt meddelande i filen, hade det varit under root vore det
inget problem, men när jag ska längre ner i XML-trädet så vet jag inte riktigt hur jag ska gå tillväga.
Har försökt med att gå ner igenom trädet med diverse "foreach()" loopar men får det inte att funka. Sedan så hittade jag en kod
från http://quest4knowledge.wordpress.com/2010/09/04/php-xml-creat....
Som jag sedan anpassade och fick det till detta:
function addMessage($message,$by,$id){
$dom = new DOMDocument();
$dataFilePath = 'xml/games.xml';
$dom->load($dataFilePath);
$game = $dom->documentElement;
$newMess = $dom->createElement('message',$message);
$newMess->setAttribute('by',$by);
$newMess->setAttribute('date',date("Y-m-d H:i:s"));
$xpath = new DOMXPATH($dom);
$result = $xpath->query('/games/game[@id="'.$id.'"/messages/message');
$game->childNodes->item(0)->parentNode->insertBefore($newMess,$result->item(0));
header("Content-type: text/xml");
echo $dom->saveXML();
}
XML:
<?xml version='1.0' encoding='utf-8'?>
<games>
<game name="LV - GT" date="2012-10-07" result="6-1" id='1' path="upload/games/gt.zip" loc='Borta'>
<messages>
<message by='1' message='sup ppl'/>
<message by='2' message='nothing, you then?'/>
<message by='3' message='wazzup ppl'/>
</messages>
</game>
<game name="LV - Mälarö" date="2012-10-12" result="3-6" id='2' path="upload/games/lvmal.zip" loc='Hemma'>
<messages>
<message by='1' message='test'/>
<message by='2' message='test2'/>
<message by='3' message='3333'/>
</messages>
</game>
</games>
Får följande error:
Warning: DOMXPath::query(): Invalid predicate in /customers/d/4/0/jakke.se/httpd.www/lvhc/php/gameChat.php on line 13 Warning: DOMXPath::query(): Invalid expression in /customers/d/4/0/jakke.se/httpd.www/lvhc/php/gameChat.php on line 13 Fatal error: Call to a member function item() on a non-object in /customers/d/4/0/jakke.se/httpd.www/lvhc/php/gameChat.php on line 14
Tack på förhand!
Mvh
Citera för svar