Problem with DOM
| From: | Bellemo Maurizio | Date: | Tue, 12 May 2009 15:25:09 +0000 |
| Subject: | Problem with DOM | ||
| Groups: | php.windows | ||
| Request: | Send a blank email to php-windows+get-29326@lists.php.net to get a copy of this message | ||
Hi all,
I'm trying to create some XML from PHP code to save data about customers, but I found many
problem and it doesn't work.
The class Customer is quite simple I put it right below
<?php
class customer {
var $name;
var $phone;
function customer($name, $phone) {
$this->name = $name;
$this->phone = $phone;
}
function getName() {
return $name;
}
function setName($name) {
$this->name = $name;
}
function getPhone() {
return $phone;
}
function setPhone($phone) {
$this->phone = $phone;
}
function addXMLCustomer($dom, $root) {
$customer = $dom->createElement('customer');
$name_at = $dom->createAttribute('name');
$customer->appendChild($name_at);
$name_at_val = $dom->createTextNode($this->name);
$name_at->appendChild($name_at_val);
$phone_at = $dom->createAttribute('phone');
$customer->appendChild($phone_at);
$phone_at_val = $dom->createTextNode($this->phone);
$phone_at->appendChild($phone_at_val);
$root->appendChild($customer);
}
}
?>
the main page is simply a little form asking to introduce a new customer..... (the problem is not
when you try to create the XML file for the first time, but something on getElementsByTagName, that
is when you try to reopen the file... for example for a second customer....
<html>
<head>
<title>MCare administration</title>
<script type="text/javascript"
src="script/scriptaculous-js-1.8.2/prototype.js"></script>
<script type="text/javascript"
src="script/scriptaculous-js-1.8.2/scriptaculous.js"></script>
</head>
<?php
// require class file
require("customer.php");
$xmlfile = "C:/Users/Maurizio/Desktop/customers.xml";
if(!file_exists($xmlfile)) {
$doc = new DOMDocument('1.0', 'iso-8859-1');
$root = $doc->createElement('customers');
$doc->appendChild($root);
if (isset($_GET['add_customer']) &&
isset($_GET['new_customer_name'])
&& isset($_GET['new_customer_phone'])) {
$c = new customer($_GET['new_customer_name'],
$_GET['new_customer_phone']);
$c->addXMLCustomer($doc, $root);
}
$doc->save($xmlfile);
}
else {
$doc = new DOMDocument();
$doc->load($xmlfile);
$root = $doc->getElementsByTagName("customers");
if (isset($_GET['add_customer']) &&
isset($_GET['new_customer_name'])
&& isset($_GET['new_customer_phone'])) {
$c = new customer($_GET['new_customer_name'],
$_GET['new_customer_phone']);
$c->addXMLCustomer($doc, $root);
}
$doc->save($xmlfile);
}
?>
<body>
<div>
<fieldset><legend>Add new customer</legend>
<form method="get" action="<?php echo $_SERVER['PHP_SELF'];
?>">
<label for="new_customer_name">Name:</label>
<input id="new_customer_name" name="new_customer_name" type="text"
/>
<label for="new_customer_phone">Phone:</label>
<input id="new_customer_phone" name="new_customer_phone"
type="text" />
<button id="add_customer" name="add_customer"
type="submit">Add</button>
</form>
</fieldset>
</div>
</body>
</html>
Any suggestions??
Thks
Maurizio
--
The information transmitted is intended for the person or entity to which it is addressed and may
contain confidential and/or privileged material. Any review, retransmission, dissemination or other
use of, or taking of any action in reliance upon, this information by persons or entities other than
the intended recipient is prohibited. If you received this in error, please contact the sender and
delete the material from any computer.