0
orders.xml
のような既存のXMLがない場合、データをXMLに保存する際に問題があります。しかし、既存のファイルがある場合は保存されます。これは、キャッチ可能な致命的なエラー:DOMDocument :: saveXML()に渡される引数1は、DOMNodeの文字列でなければなりません。
Catchable fatal error: Argument 1 passed to DOMDocument::saveXML() must be an instance of DOMNode, string given in C:\xampp\htdocs\CWP413\MidtermExam\buy.php on line 75"...
最初の行は別のフォームから製品を購入したときのフォームのロード用です。ここで
は私のコードです:
// script by candy21
$products =simplexml_load_file("product.xml") or die("ERROR");
foreach ($products->product as $product){
if($product['id']==$_GET['id']){
$id = $product['id'];
$name =$product->name;
$price = $product->price;
break;
}
}
if(isset($_POST['submitSave'])){
$quan = $_POST['quan'];
$total = $price * $quan;
$xml = new DOMDocument("1.0","UTF-8");
$xml -> preserveWhiteSpace = TRUE;
$xml -> formatOutput = true;
if(file_exists("orders.xml")){
$xml = simplexml_load_file('orders.xml');
$order = $xml->addChild('order');
$order->addChild('id', $id);
$order->addChild('name', $name);
$order->addChild('price', $price);
$order->addChild('quan', $quan);
$order->addChild('total', $total);
//echo "<xmp>" .$xml -> saveXML(). "</xmp>";
$xml->saveXML("orders.xml");
$xml=simplexml_load_file("orders.xml") or die("ERROR");
$a=1;
foreach($xml->children() as $order)
{
echo"<div class = 'orderlist' ";
echo"<b>Order No.:". $a++."</b><br>";
echo"Product Id: ".$order->id."<br>";
echo"Product Name: ".$order->name."<br>";
echo"Price: ".$order->price."<br>";
echo"Quantity Ordered: ".$order->quan."<br>";
echo"Total Price: ".$order->total."<br>";
echo"</div><br>";
}
}
else{
$orders = $xml -> createElement("orders");
$xml -> appendChild($orders);
$order = $xml -> createElement("order");
$orders -> appendChild($order);
$id = $xml -> createElement("id", $id);
$order -> appendChild($id);
$name = $xml -> createElement("name", $name);
$order -> appendChild($name);
$price = $xml -> createElement("price", $price);
$order -> appendChild($price);
$quan = $xml -> createElement("quan", $quan);
$order -> appendChild($quan);
$total = $xml -> createElement("total", $total);
$order -> appendChild($total);
$xml->saveXML("orders.xml");
$xml->saveXML($order->item(0));
$xml=simplexml_load_file("orders.xml") or die("ERROR");
$a=1;
foreach($xml->children() as $order)
{
echo"<div class = 'orderlist' ";
echo"<b>Order No.:".$a++."</b><br>";
echo"Product Id: ".$order->id."<br>";
echo"Product Name: ".$order->name."<br>";
echo"Price: ".$order->price."<br>";
echo"Quantity Ordered: ".$order->quan."<br>";
echo"Total Price: ".$order->total."<br>";
echo"</div><br>";
}
}
それとも、 '$ XML->( "orders.xml")を保存' –
はありがとうございました。できます :) – Candy083