使用SimpleXML在XML文件中创建新条目

时间:2013-11-07 02:37:36

标签: php xml simplexml

我正在尝试使用SimpleXML

向XML文件添加新条目

XML结构:

<events>
    <event id="1">
            <name>event name</name>
            <time>09:00</time>
            <endtime>09:30</endtime>
            <category>event category</category>
            <description>A description of event</description>
            <loc>location of event</loc>
            <picturePath>path to picture location</picturePath>
    </event>
 </events>

表单布局:

<form name ="createEvent" method="post" action="createEvent.php">
<input type="hidden" name="check_submit" value="1" />
<table border="1">
        <tr bgcolor="#FFA500">
            <th>Name</th>
            <th>Start Time</th>
            <th>End Time</th>
            <th>Category</th>
            <th>Description</th>
            <th>Location</th>
            <th>Picture Path</th>
            <th>Create</th>
        </tr>
        <tr>
            <td><input type="text" name="name" placeholder="Enter new event name..."/></td>
            <td><input type="text" name="time" placeholder="Enter event start time..."/></td>
            <td><input type="text" name="endtime" placeholder="Enter event end time..."/></td>
            <td><input type="text" name="category"/></td>
            <td><input type="text" name="description" placeholder="Enter a description of the event..."/></td>
            <td><input type="text" name="loc"/></td>
            <td><input type="text" name="picturePath" placeholder="Enter link to picture..."/></td>
            <td><input type="submit" name="create" class="box" value="Create"/></td>
        </tr>
        </table
        </form>

PHP提交文件(所有工作是什么):

<?php
if (array_key_exists('check_submit', $_POST)) {

$xml = new SimpleXMLElement ('http://odapp.unsw.adfa.edu.au/~z3370257/joel/practice/events-small.xml', null, true);

$id = count($xml->event);

$add = 1;
$newid = $id + $add;

$event = $xml->addChild('event');
$event->addAttribute('id', $newid);
$event->addChild('name', $_POST['name']);
$event->addChild('time', $_POST['time']);
$event->addChild('endtime', $_POST['endtime']);
$event->addChild('category', $_POST['category']);
$event->addChild('description', $_POST['description']);
$event->addChild('loc', $_POST['loc']);
$event->addChild('picturePath', $_POST['picturePath']);

$xml->asXML('http://odapp.unsw.adfa.edu.au/~z3370257/joel/practice/events-small.xml');

} else {
    echo "You can't see this page without submitting the form.";
}

?>

老实说,我想不出为什么这不起作用。我已经尝试将发布数据放入以下形式的数组中:

$newEvent = array(
'name' => $_POST['name']
etc.

$name = $_POST['name']
etc.

无济于事。我已经更改了文件的权限,因此它们都是读/写/执行的。我几乎要说它可能与服务器上的安全性有关,但它允许我轻松抓取数据,所以我不确定。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您的表单数据中没有任何值,因此请检查表单中的值。我在我的本地服务器上运行它,它工作正常。这是您精炼的表格代码......

<form name ="createEvent" method="post" action="createEvent.php">
<input type="hidden" name="check_submit" value="1" />
<table border="1">
<tr bgcolor="#FFA500">
    <th>Name</th>
    <th>Start Time</th>
    <th>End Time</th>
    <th>Category</th>
    <th>Description</th>
    <th>Location</th>
    <th>Picture Path</th>
    <th>Create</th>
</tr>
<tr>
    <td><input type="text" name="name" value="Meghendra" placeholder="Enter new event name..."/></td>
    <td><input type="text" name="time" value="15-11-2013" placeholder="Enter event start time..."/></td>
    <td><input type="text" name="endtime" value="15-12-2013" placeholder="Enter event end time..."/></td>
    <td><input type="text" name="category" value="Demo category"/></td>
    <td><input type="text" name="description" value="lorem ipsum is a dummy content." placeholder="Enter a description of the event..."/></td>
    <td><input type="text" name="loc" value="florida"/></td>
    <td><input type="text" name="picturePath" value="/uploads" placeholder="Enter link to picture..."/></td>
    <td><input type="submit" name="create" class="box" value="Create"/></td>
</tr>
</table
</form>