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:[EMAIL PROTECTED]] > Sent: Monday, April 01, 2002 4:12 PM > To: Jay Fitzgerald > Cc: [EMAIL PROTECTED] > 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 > [EMAIL PROTECTED] > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >