RE: [PHP] Modifying Existing Text File From PHP Is Not Working
| From: | Alice Wei | Date: | Sun, 27 Jun 2010 16:06:19 +0000 |
| Subject: | RE: [PHP] Modifying Existing Text File From PHP Is Not Working | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-306463@lists.php.net to get a copy of this message | ||
> Subject: Re: [PHP] Modifying Existing Text File From PHP Is Not Working
> From: lexsimon@gmail.com
> Date: Sun, 27 Jun 2010 13:47:53 +0200
> To: ajwei@alumni.iu.edu
>
> You are closing your file too early. Close it outside the foreach.
> An other point : you should not 'edit' an XML file by this way ; use an XML api like
> dom or simplexml
>
> Regards
>
> --
> Alexandre Simon
> http://alex.zybar.net
>
Hi,
I did try changing the fclose to after all the brackets in my php file. On another note, I checked
the permission of my folder that I was attempting to write in, which all users have write, modify,
read and execute permissions. I don't see any 500 or permission denied errors, and I use IIS,
so I don't use apache.
It didn't work though, the suggestion you provided on simpleXML looks promising, and yet I am
writing not to the child, and plus I seem to be getting a 500 error. Another thing is, do I need to
"save" the file after all this echoing is done using simpleXML?
BTW, here is the code, which I am sure that I must have done something wrong here. Could anyone
please help me out here?
Thanks for your help.
Is it possible that I could do it the way I did it before by any chance?
<?php
$name= "Test";
$phone= "123-456-7890";
$email = "mymail@mail.com";
$comments = "Test Only";
//If file exists. append, otherwise create
$file = "messages.xml";
$xml = simplexml_load_file($file);
$xml-> messages[0]->addChild("message", "");
$xml -> message[0]->addChild("name",$name);
$xml -> message[0] ->addChild("phone",$phone);
$xml -> message[0] -> addChild("email",$email);
$xml-> message[0] -> addChild("comments",$comments);
echo $xml->asXML();
?>
Alice
> Le 27 juin 2010 à 13:20, Alice Wei <ajwei@alumni.iu.edu> a écrit :
>
> >
> > Hi,
> >
> > I have the code as in the following:
> >
> > <?php
> >
> > $name= "Test";
> > $phone= "123-456-7890";
> > $email = "myemail@mymail.com";
> > $comments = "Test Only";
> >
> > $string = "<message>\n<name>" . $name .
> > "</name>\n<phone>" . $phone . "</phone>\n<email>".
> > $email . "</email>\n<comments>" . $comments .
> > "</comments>\n</message>";
> >
> > //If file exists. append, otherwise create
> > $file = "messages.xml";
> > $fh = fopen($file,"a");
> > $lines = file($file);
> >
> > //Output a line of the file until the end is reached
> > foreach($lines as $line) {
> >
> > if (trim($line) == "<messages>") {
> >
> > $line = "<messages>" . $string; // If string, change it.
> > echo $line . "<br>";
> > fwrite($fh, $line);
> >
> > }
> > else {
> >
> > // If not don't write anything
> > echo $line . "<br>";
> >
> > }
> > fclose($file); // Close the file.
> > }
> > ?>
> >
> > For some reason, it is writing out the lines, but it is not f-writing to the file. Here is
> > the file that is meant to be edited:
> >
> > <messages>
> > <message>
> > <name>Me</name>
> > <phone>123-456-7890</phone>
> > <email>test@test.com</email>
> > <comments>This is my message board!</comments>
> > </message>
> > </messages>
> >
> > Have I missed something here? How come the file cannot perform fwrite actions?
> >
> > Thanks for your help.
> >
> > _________________________________________________________________
> > The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail.
> >
> > http://www.windowslive.com/campaign/thenewbusy?tile=multiaccount&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_4
_________________________________________________________________
The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail.
http://www.windowslive.com/campaign/thenewbusy?tile=multiaccount&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_4