0

私のコードの何が問題なのか誰にもわかりますか? 私が得ているエラーは次のとおりです。

致命的なエラー: 35 行目の /path/to/php/file.php の非オブジェクトに対するメンバー関数 saveXML() の呼び出し

基本的に、「AVAILABILITY」タグに設定された値に応じて UI を変更する XML nodeValue を更新しようとしています。

==================== 更新 ====================

XML ファイルは、('AVAILABILITY') タグ内の ('STATUS') ノードの新しい値で上書きされなくなりました。

================================================

XML 構造

<?xml version="1.0" encoding="UTF-8"?>
<WORK>
    <AVAILABILITY>
        <STATUS>0</STATUS> // Not being changed?!
    </AVAILABILITY>
    <SLIDE>
        <ID>YY001</ID>
        <TITLE>YourEdentity</TITLE>
        <LINK>http://youredentity.campearce.co.uk</LINK>
        <THUMB>your_ed.png</THUMB>
        <CAPTION>This is YourEdentity</CAPTION>
    </SLIDE>
</WORK>

PHP スクリプト:

<?php

$url = "../content/slides.xml";
$xml = simplexml_load_file($url);

if(!file_exists($url))
{
echo "Unable to locate file";
}
else
{
$root = $xml->WORK;
$slides = $root->SLIDE;

if(isset($_POST['action']) && !empty($_POST['action']))
{
    $action = $_POST['action'];
    switch($action)
    {
        case 'deleteslide' : delete_slide(); break;
        case 'createslide' : create_slide(); break;
        case 'changeavail' : change_avail($root, $_POST['status'], $xml, $url); break;
    }   
}
}

function change_avail($root_node, $status, $xml, $location){

$availability_node = $root_node->AVAILABILITY;
$status_node[0] = $availability_node->STATUS;
parse_str($status, $statustr);
$status_node[0] = $statustr;

file_put_contents($location, $xml->asXML());

echo $xml->asXML();
}

function save_toxml($xml, $location)
{
$fp = fopen($location, 'w');
fwrite($fp, $xml->asXML());
fclose($fp);
echo $xml->asXML();
}

?>
4

1 に答える 1

0

関数 change_avail には、変数 $xml がありませんでした。この変数を送信:

function change_avail($root_node, $status, DOMDocument $xml)
于 2012-10-11T10:14:55.007 に答える