Brian Paquin

reporting errors (No Found Records)

7 posts in this topic

I have a PHP page that allows users to search our department directory (of people). It works, but if no records are found, then they get a header graphic and nothing else. I have looked online, and I think my FileMaker::IsError syntax is correct, but it does not display. Would someone look at the attached file and see what I've done wrong? (Once I get it to display an error code, I can customize it and trap for various errors, but right now I only get the header!) Thank you, Brian

namesearch.php

Share this post


Link to post
Share on other sites

Posted (edited)

There is an example on this page: https://jonathanstark.com/fm/web-publishing-with-filemaker-and-php.php

What you are looking for in this case is the part that gives "No Records Found," but there should really be some sort of $result.count() or similar like in FX.php where there is $result['foundCount'] as foundcount = 0 is not really an error; it's perfectly valid search result.

if (FileMaker::isError($result)) {
    if (! isset($result->code) || strlen(trim($result->code)) < 1) {
        echo '<tr>';
        echo '<td colspan="3">A System Error Occured</td>';
        echo '</tr>';
    } else {
        echo '<tr>';
        echo '<td colspan="3">No Records Found (Error Code: '.$result->code.')</td>';
        echo '</tr>';
    }
} else {
    $records = $result->getRecords();
    foreach ($records as $record) {
        echo '<tr>';
        echo '<td>' . $record->getField('Status') . '</td>';
        echo '<td>' . $record->getField('Type') . '</td>';
        echo '<td>' . $record->getField('Account Name') . '</td>';
        echo "</tr>";
    }
}

 

Edited by ggt667

Share this post


Link to post
Share on other sites

Thank you for the link! I modified the FileMaker::isError code, but the behavior is still the same. I also moved where the error is called on the page (attached). On the server I see a 401 error in the logs... Why does it bomb out when there is an error? Thank you, Brian

namesearch.php

Share this post


Link to post
Share on other sites

Does the following output anything?

<?php
echo "Code: " . $result->code; 
#Check for an error
if( FileMaker::isError( $result ) ) {
?>

 

Share this post


Link to post
Share on other sites

With the open brace, the page fails entirely.

Without the brace, it loads on a found set, but only says "Code: " without any code number.

When no records are found, I get the header and nothing else (the "Code: " is not present!).

Share this post


Link to post
Share on other sites

If I were you I'd create a new file with the following( still from the same link ) and adapt this to my database settings. To see if I could learn anything from this setup.

<?php

require_once ('Filemaker/Filemaker.php');
$fm = new FileMaker('TimeTracker.fp7', '127.0.0.1', 'esmith', 'f!r3crack3r');
$request = $fm->newFindAllCommand('associate_layout');
$request->addSortRule('Status', 1);
$request->addSortRule('Type', 2);
$request->addSortRule('Account Name', 3);
$result = $request->execute();

echo '<table border="1">';
echo '<tr>';
echo '<th>Status</th>';
echo '<th>Type</th>';
echo '<th>Account Name</th>';
echo '</tr>';
if (FileMaker::isError($result)) {
    if (! isset($result->code) || strlen(trim($result->code)) < 1) {
        echo '<tr>';
        echo '<td colspan="3">A System Error Occured</td>';
        echo '</tr>';
    } else {
        echo '<tr>';
        echo '<td colspan="3">No Records Found (Error Code: '.$result->code.')</td>';
        echo '</tr>';
    }
} else {
    $records = $result->getRecords();
    foreach ($records as $record) {
        echo '<tr>';
        echo '<td>' . $record->getField('Status') . '</td>';
        echo '<td>' . $record->getField('Type') . '</td>';
        echo '<td>' . $record->getField('Account Name') . '</td>';
        echo "</tr>";
    }
}
echo '</table>';

?>

 

Share this post


Link to post
Share on other sites

Thank you. I think it is now resolved. I "flipped" the code (before it was html with php, now it is php with html echoed), and found that the getRecords at the beginning of the file was creating a PHP FATAL error. Once that was moved to the else (like in your example), I stopped getting the FATAL error and got the 401 error I expected. Once again, thank you for your help!  Brian

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now