Próbowałem wstawić nowe dane do istniejącego pliku XML, ale to nie działa. Oto mój plik xml:Wstawianie danych w pliku XML z PHP DOM
<list>
<activity>swimming</activity>
<activity>running</activity>
<list>
Teraz mój pomysł robił dwa pliki: stronę indeksu, gdzie wyświetla co jest w pliku i daje pole do wstawiania nowych elementów, a strona php który będzie wstawić dane do pliku XML. Oto kod do index.php:
<html>
<head><title>test</title></head>
</head>
<?php
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml', LIBXML_NOBLANKS);
$activities = = $xmldoc->firstChild->firstChild;
if($activities!=null){
while(activities!=null){
echo $activities->textContent.'<br/>';
activities = activities->nextSibling.
}
}
?>
<form name='input' action='insert.php' method='post'>
insert activity:
<input type='text' name='activity'/>
<input type='submit' value='send'/>
</form>
</body>
</html
i oto kod dla insert.php:
<?php
header('Location:index.php');
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml');
$newAct = $_POST['activity'];
$root = $xmldoc->firstChild;
$newElement = $xmldoc->createElement('activity');
$root->appendChild($newElement);
$newText = $xmldoc->createTextNode($newAct);
$newElement->appendChild($newText);
$xmldoc->save('sample.xml');
?>
Użytkownik ma dostęp do index.php, gdzie mógł zobaczyć listę bieżących działań obecny w pliku XML oraz pole tekstowe poniżej, w którym można wstawić nowe działania. Po kliknięciu przycisku wysyłania strona wywołałaby insert.php, która zawiera kod otwierający plik XML w drzewie DOM, wstawia nowy węzeł pod węzeł główny i wywołuje stronę index.php, gdzie użytkownik powinien być mógł zobaczyć listę działań, swoją nową aktywność tam pod innymi. To nie działa. Kiedy klikam przycisk, aby przesłać nowy wpis, strony się odświeżają i najwyraźniej nic się nie dzieje, XML jest taki sam jak poprzednio. Co zrobiłem źle? Chciałbym też wiedzieć, czy jest lepszy sposób na zrobienie tego.
sprawa była rzeczywiście coś tak głupie, jak pozwolenie plików ... im taką idiotkę. the missing = to literówka, więc nie stanowiło to problemu. bardzo dziękuję –
ha to się dzieje :) – Owen