php-windows Digest 12 May 2009 15:25:16 -0000 Issue 3621

Topics (messages 29326 through 29326):

Problem with DOM
        29326 by: Bellemo Maurizio

Administrivia:

To subscribe to the digest, e-mail:
        php-windows-digest-subscr...@lists.php.net

To unsubscribe from the digest, e-mail:
        php-windows-digest-unsubscr...@lists.php.net

To post to the list, e-mail:
        php-wind...@lists.php.net


----------------------------------------------------------------------
--- Begin 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.

--- End Message ---

Reply via email to