RE: [PHP] RE: PHP/MySQL/XML
| From: | Hunter, Ray | Date: | Mon, 01 Apr 2002 23:15:14 +0000 |
| Subject: | RE: [PHP] RE: PHP/MySQL/XML | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-91040@lists.php.net to get a copy of this message | ||
One thing you need to thing about is if you are going to us DTDs. If you
are and they specify that you need the <ext></ext> elements then it is best
to add a space when nothing is contained in $ext...
Thank you,
Ray Hunter
Firmware Engineer
ENTERASYS NETWORKS
> -----Original Message-----
> From: Erik Price [mailto:pricee@hhbrown.com]
> Sent: Monday, April 01, 2002 4:12 PM
> To: Jay Fitzgerald
> Cc: php-general@lists.php.net
> Subject: Re: [PHP] RE: PHP/MySQL/XML
>
>
>
> On Monday, April 1, 2002, at 05:09 PM, Jay Fitzgerald wrote:
>
> > Ok....Thanks to all those who are helping me (sorry for
> > cross-posting)...
>
> That's okay. This script looks a lot better -- because you
> can actually
> -do- something with the output! :)
>
> > My scripts are working great except for one thing....when it queries
> > the db there are some fields that have a NULL value, thus when it
> > writes the XML file it does this:
> > <null_field></null_field>
>
> Yep.
>
> > What I would like to do is either place an in the
> XML tags for
> > all of these NULL fields - can I do an if / else statement
> in the code
> > I am using below??
>
> Yep. But look at the point where you have placed your pseudo-if/else
> statement. Read through this script as though you were the PHP
> processor -- what would happen? Well, you'd open the file for
> appending, you'd write your XML declaration and stylesheet PI, you'd
> write a few element names, and then you'd write a name pulled
> from your
> database. Fine, everything looks good up to this point... (continued
> below)
>
> > $phone_list = fopen("/usr/local/apache2/htdocs/test/phone_list.xml",
> > "w+");
> >
> > fwrite($phone_list, "<?xml version=\"1.0\"
> > encoding=\"ISO-8859-1\"?>\n");
> > fwrite($phone_list, "<?xml-stylesheet type=\"text/xsl\"
> > href=\"phone_list.xsl\"?>\n\n");
> >
> > fwrite($phone_list, "<test>\n");
> > fwrite($phone_list, "\t<phone_list>\n");
> >
> > while ($row = mysql_fetch_array($sql_result))
> > {
> > $name = $row["name"];
> > $ext = $row["ext"];
> > $title = $row["title"];
> > $home = $row["home"];
> > $pager = $row["pager"];
> > $cell = $row["cell"];
> > $email = $row["email"];
> >
> > fwrite($phone_list, "\t\t<employee>\n");
> > fwrite($phone_list, "\t\t\t<name>");
> > fwrite($phone_list, "$name");
> > fwrite($phone_list, "</name>\n");
>
> Here is where you're going to run into a problem. Take a
> close look at
> what would happen if there is an $ext, and what would happen
> if there is
> no $ext (in other words, simulate the if/else statement in your mind):
>
> > fwrite($phone_list, "\t\t\t<ext>");
> > // would need an if / else statement here
> > fwrite($phone_list, "$ext");
> > // end if / else statement here
> > fwrite($phone_list, "</ext>\n");
>
> See what's wrong? Regardless of whether or not there is an if/else
> statement, you are still going to do the following two lines of code:
>
> fwrite($phone_list, "\t\t\t<ext>");
>
> fwrite($phone_list, "</ext>\n");
>
> Because your if/else statement does not encompass these lines. What
> will the effect of this be? I'll show you:
>
> if there is an $ext
> <ext>123</ext>
> if there is no $ext
> <ext></ext>
>
> So, even if you use the pseudo if/else statement, you will
> still end up
> with a possibly empty <ext> element. If you changed your if/else
> statement to encompass this entire section of the code, however, then
> you can write <ext>123</ext> if there is an $ext variable or you can
> have nothing happen if there is no $ext. Here is what it would look
> like in pseudocode:
>
> // would need an if / else statement here
> fwrite($phone_list, "\t\t\t<ext>");
> fwrite($phone_list, "$ext");
> fwrite($phone_list, "</ext>\n");
> // end if / else statement here
>
> Does that make sense? This way, if there's no $ext variable,
> you don't
> end up writing the <ext> and </ext> element tags. So how do you
> construct the actual statement? Well, to be honest with you, I don't
> think you want to use an if/else statement at all -- a simple if
> statement will do the trick. It works just like this:
>
> if (!empty($ext)) {
> fwrite($phone_list, "\t\t\t<ext>");
> fwrite($phone_list, "$ext");
> fwrite($phone_list, "</ext>\n");
> }
>
> The empty() "function" (actually a language construct, but the
> difference isn't important) tests to see if there is actually
> any value
> attached to the $ext variable. And the exclamation point inverts the
> boolean value of the expression, meaning "if this is NOT
> true". So the
> if statement above simply says "if the value held by $ext is
> not empty,
> write three tabs + <ext> + $ext + </ext> to the file pointed to by
> $phone_list."
>
> The rest of your code looks good (closing the element tags
> and the file
> pointer).
>
> HTH,
>
> Erik
>
>
>
> ----
>
> Erik Price
> Web Developer Temp
> Media Lab, H.H. Brown
> pricee@hhbrown.com
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>