TheWebMann
TheWebMann

Reputation: 115

I need help sorting out an if statement in a simplexml statement

Some basic background ...

I have a form that enters data to an xml file and another page that displays the data from teh xml depending that it meets the requirements . All of this I have managed to get done and thanks to a member on here I got it to show only the data as long as it has todays date and status is out . But I am left with the problem of trying to sort an if statement which needs to show data if it has it or show another div if not .

My Code ...

$lib  = simplexml_load_file("sample.xml");
$today = date("m/d/y");
$query = $lib->xpath("//entry[.//date[contains(., '$today')]] |    //entry[.//status[contains(., 'out')]]");


foreach($query as $node){

echo "<div id='one'>$node->name</div>
<div id='two'>$node->notes</div> 
<div id='three'><div class='front'>$node->comments</div></div>";
 }

So to reiterate if query returns matched data do the foreach else show another div

I only wish to know the right code for the if else statement if soneone could help with this I would be very grateful and will up vote any answer as soon as I have the reputation in place . I also apologise in advance if the question has been asked before or if it is too vague thanks again .

Upvotes: 0

Views: 46

Answers (1)

Nate Whittaker
Nate Whittaker

Reputation: 1966

If xpath fails to resolve the path, it will return false (see here). Wrap the foreach loop in a simple check:

if( $query ) {
    foreach($query as $node){
        ...
    }
}
else {
    // Echo the special div.
}

Since PHP is loose typed, if xpath happens to return an empty array, this check will also handle that case. Be aware that if the xpath call does return false, there may be a separate error at play that may require additional or alternative handling.

Upvotes: 2

Related Questions