Кажется, вы не проверяли существование $_POST['number']
, и предупреждение возникает по мере того, как значение не задано, общая рекомендация - всегда проверять переменные, поэтому добавьте следующее к началу вашего кода:
if(isset($_POST['number'])) {
...
(рассмотреть проверки в отношении других переменных и функций-возвращений в конечной продукции, как хорошая практика программирования :)
PS: фактическая причина предупреждения является
вне диапазона задачи (PHP будет добавить узел a генерировать предупреждения). В следующем коде я просто проверил наличие индекса узла, а в случае небытия просто добавил новый узел (в этой простой реализации индекс нового узла необязательно равен
$_POST['number']
, вы можете изменить поведение в соответствии с вашими потребностями):
if(isset($_POST['number'])) {
$xml = simplexml_load_file('xml/item.xml');
if(isset($xml->item[$_POST['number']]))
$node = $xml->item[$_POST['number']];
else
$node = $xml->addChild('item');
$node->itemname = $_POST['name'];
$node->description = $_POST['description'];
$node->price = $_POST['price'];
file_put_contents('xml/item.xml', $xml->asXML());
}
Отказ от ответственности: сообщение об ошибке одного и того же вопроса в PHP 5.4.0 - 5.6.8 как следующее (я использую v5.5.8):
Предупреждение: main(): Нельзя добавить номер элемента элемента 5, если только 0 такихсуществуетэлементов в ...
предупреждающее сообщение в исходном сообщении гласит:
Предупреждение: Создание объекта по умолчанию из пустого значения в ...
Что именно то же сообщение, что и предупреждение, созданное при попытке $xml->item[null]
(в моей версии PHP).
На основании [this] (http://stackoverflow.com/a/8900730/4499267) одно из свойств, которые вы пытаетесь получить, не определено – Phate01
Не могли бы вы добавить вывод 'var_dump ($ _ POST) ; 'когда возникает проблема. – someOne
Не могли бы вы показать нам свой XML-файл. – splash58