> > Hi
> > I'm sorry, but I don't understand well what you are trying to tell me.....
> > 
> > Let's imagine I want to modify an existent XML file called customers.xml
> > 
> > I should do this steps
> > 
> > $doc = new DOMDocument();
> > $doc->load('customers.xml');
> > $root = $doc->getElementsByTagName("customers"); // to take the root
> > 
> > .... // create one customer
> > 
> > $doc->save('customer.xml'); // to save the changes
> > 
> > that is exactly what I did in the else part (in the if, in the case the 
> > file customers.xml didn't exist, I create the file with only the root node).
> > Isn't is right?
> 
> Apologies.  I missed the '!' in the if and got the logic reversed.
> 
> You do not say what does or does not happen on the second attempt? Am I
> correct in assuming there is no change?

The problem appears to be with the line:

$root->appendChild($customer);

in your addXMLCustomer method.

This give me the following error:
PHP Fatal error:  Call to undefined method DOMNodeList::appendChild() in 
D:\Scripts\PHP\TESTS\DOM-test.php


> > For what concerns the two type of DOMDocument istantiation.... I forgot to 
> > chance them both :)
> > 
> > Thks
> > Maurizio Bellemo
> > Sytel Reply Deutschland
> > __________________
> > 
> > m.bell...@reply.it
> > Prinzenalle 7
> > 40549 Düsseldorf
> > GERMANY
> > ________________________________________
> > From: Niel Archer [...@chance.now]
> > Sent: Tuesday, May 12, 2009 7:16 PM
> > To: php-windows@lists.php.net
> > Subject: Re: [PHP-WIN] Problem with DOM
> > 
> > > 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??
> > 
> > It looks to me that you are creating a new DOM object for the file
> > existing condition, but not loading the actual file into the object with
> > $doc->load() or similar. Consequently you are creating a new file with
> > single entry each time.
> > Also, I wonder why your new DOMDocument()s have different parameters?
> > Wouldn't it be wise to make them the same to avoid possible problems?
> > 
> > 
> > > 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.
> > >
> > > --
> > > PHP Windows Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> > 
> > --
> > Niel Archer
> > niel.archer (at) blueyonder.co.uk
> > 
> > 
> > 
> > --
> > PHP Windows Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> > 
> > 
> > --
> > 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.
> > 
> > -- 
> > PHP Windows Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> > 
> 
> --
> Niel Archer
> 
> 
> 
> -- 
> PHP Windows Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

--
Niel Archer



--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to