> > 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
> > __________________
> >
> > [email protected]
> > Prinzenalle 7
> > 40549 Düsseldorf
> > GERMANY
> > ________________________________________
> > From: Niel Archer [[email protected]]
> > Sent: Tuesday, May 12, 2009 7:16 PM
> > To: [email protected]
> > 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