У меня есть xml-файл, подобный этому -> examples.xml
<?xml version="1.0" encoding="UTF-8"?> <inventors> <person> <name>anie</name> <comment>good</comment> </person> </inventors>
Это мой php-файл -> index.php
<script src="http://code.jquery.com/jquery-latest.min.js"></script> <?php $xml = new DOMDocument('1.0', 'utf-8'); $xml->formatOutput = true; $xml->preserveWhiteSpace = false; $xml->load('examples.xml'); //Get item Element $element = $xml->getElementsByTagName('person')->item(0); //Load child elements $name = $element->getElementsByTagName('name')->item(0); $comment = $element->getElementsByTagName('comment')->item(0); //Replace old elements with new $element->replaceChild($name, $name); $element->replaceChild($comment, $comment); ?> <form method="POST" action=''> name <input type="text-name" value="<?php echo $name->nodeValue ?>" name="namanya" /> comment <input type="text-comment" value="<?php echo $comment->nodeValue ?>" name="commentnya"/> <input name="submit" type="submit" /> </form> <?php if (isset($_POST['submit'])) { $name->nodeValue = $_POST['namanya']; $comment->nodeValue = $_POST['commentnya']; htmlentities($xml->save('examples.xml')); } ?>
он не может работать, если я нажимаю кнопку submit, в браузере есть 2 результата ввода. если я нажимаю кнопку submit, я хочу, чтобы результат был новым.
Сначала ваша программа показывает форму, а затем сохраняет данные во-вторых. Поэтому, когда вы нажимаете кнопку «Отправить», программа сначала отображает форму с предыдущими данными, а затем сохраняет «новые» данные.
Поэтому следующий код работает хорошо.
<script src="http://code.jquery.com/jquery-latest.min.js"></script> <?php $xml = new DOMDocument('1.0', 'utf-8'); $xml->formatOutput = true; $xml->preserveWhiteSpace = false; $xml->load('examples.xml'); //Get item Element $element = $xml->getElementsByTagName('person')->item(0); //Load child elements $name = $element->getElementsByTagName('name')->item(0); $comment = $element->getElementsByTagName('comment')->item(0) ; //Replace old elements with new $element->replaceChild($name, $name); $element->replaceChild($comment, $comment); ?> <?php if (isset($_POST['submit'])) { $name->nodeValue = $_POST['namanya']; $comment->nodeValue = $_POST['commentnya']; htmlentities($xml->save('examples.xml')); } ?> <form method="POST" action=''> name <input type="text-name" value="<?php echo $name->nodeValue ?>" name="namanya" /> comment <input type="text-comment" value="<?php echo $comment->nodeValue ?>" name="commentnya"/> <input name="submit" type="submit" /> </form>