Jump to content
View in the app

A better way to browse. Learn more.

FMForums.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

php find: setLogicalOperator

Featured Replies

Hi,

I am a newbie to php. I am having an issue with setLogicalOperator. I have the following scenario in FileMaker. I need to fetch all the records for which cDailySheetRecords =1.

The value of this calculation field is set based on logic,

If( (Upper(Left(Accession; 1)) & Final = "SN" ) or (cExpireFromDailySheet ≥ Get(CurrentDate)); 1; 0) --- (note: & is concatenation operator)

where, cExpireFromDailySheet = VMIS_ReleaseDate + 5. This will fetch the below 20 records in FileMaker. It will fetch the records if any one of the above conditions are true.

--------------------------------------------------------------------------------------------------------------------------------------------

Accession Final VMIS_ReleaseDate cExpireFromDailySheet cDailySheetRecords

S09-0723 N 1

S11-0178 N 1

D11-0302 Y 05/13/2011 05/18/2011 1

S11-0336 Y 05/12/2011 05/17/2011 1

S11-0339 Y 05/13/2011 05/18/2011 1

S11-0340 Y 05/13/2011 05/18/2011 1

S11-0341 Y 05/16/2011 05/21/2011 1

S11-0342 Y 05/16/2011 05/21/2011 1

S11-0343 N 1

S11-0344 Y 05/16/2011 05/21/2011 1

S11-0345 Y 05/16/2011 05/21/2011 1

S11-0346 Y 05/16/2011 05/21/2011 1

S11-0347 Y 05/16/2011 05/21/2011 1

S11-0348 N 1

S11-0349 N 1

S11-0350 N 1

S11-0351 N 1

S11-0352 N 1

S11-0353 N 1

S11-0354 N 1

--------------------------------------------------------------------------------------------------------------------------------------------

I have a old php filemaker interface code written sometime back to do the same for web, but it is fetching only 10 records from above. Those are

--------------------------------------------------------------------------------------------------------------------------------------------

Accession Final VMIS_ReleaseDate cExpireFromDailySheet cDailySheetRecords

S09-0723 N 1

S11-0178 N 1

S11-0343 N 1

S11-0348 N 1

S11-0349 N 1

S11-0350 N 1

S11-0351 N 1

S11-0352 N 1

S11-0353 N 1

S11-0354 N 1

--------------------------------------------------------------------------------------------------------------------------------------------

The old php code is given below:

--------------------------------------------------------------------------------------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-#W3C#DTD HTML 4.0 Transitional#EN">

<html>

<head>

<link rel="stylesheet" href="default.css" type="text/css" media="all" />

<title>Surgical Pathology DAILY Case Reports</title>

</head>

<body>

<form name="listForm" method="post" action="home.php">

<input type="hidden" name="page">

<?php include ("dbaccess.php"); ?>

<h1 id='maroon'>Surgical Pathology DAILY Case Reports</h1>

<?php

#Create the 'find' command and specify the layout

$findCommand =& $fm->newFindCommand('php');

$findCommand->addFindCriterion('Accession', 'S*');

$findCommand->setLogicalOperator('AND');

$findCommand->addFindCriterion('Final', 'N');

$findCommand->setLogicalOperator('OR');

$today = getdate();

$time = mktime(0, 0, 0, $today['mon'], $today['mday'], $today['year']) - 5*24*60*60;

$findCommand->addFindCriterion('VMIS_ReleaseDate', '>='.date('n/j/Y',$time));

$findCommand->setLogicalOperator('OR');

$findCommand->addFindCriterion('VMIS_ReleaseDate', '');

//$findCommand->addSortRule('RecModificationDate',1,FILEMAKER_SORT_DESCEND);

#Perform the find and store the result

$result = $findCommand->execute();

#Check for an error

if (FileMaker::isError($result)) {

echo $result->getMessage() . "</p>";

exit;

}

$records = $result->getRecords();

$totalCount = $result->getFoundSetCount();

echo "<a href='search.php'>Search Daily List</a>";

echo "<h2 id='maroon'>Total no of records: ".$totalCount."</h2>";

echo "<hr />";

#Retrieve and store the questionnaire_id of the active questionnaire

for ($i = 0; $i < $totalCount; $i++)

{

$record = $records[$i];

echo "<p>";

echo "<span id='title'>Clinician: </span>".$record->getField('Clinician')."&nbsp;&nbsp;&nbsp;&nbsp;";

echo "<span id='title'>Clinic Acc. No: </span>".$record->getField('Clinic')."&nbsp;&nbsp;&nbsp;&nbsp;";

echo "<span id='title'>Owner: </span>".$record->getField('Owner')."<br>";

echo "<span id='title'>Pathologist: </span>".$record->getField('Pathologist')."&nbsp;&nbsp;&nbsp;&nbsp;";

echo "<span id='title'>Pathology Accession: </span>".$record->getField('Accession')."&nbsp;&nbsp;&nbsp;&nbsp;";

echo "<span id='title'>Species: </span>".$record->getField('Species')."<br>";

echo "<span id='title'>Diagnosis: </span>".$record->getField('Preliminary Dx');

echo "</p>";

echo "<hr />";

flush();

}

?>

</form>

</body>

</html>

--------------------------------------------------------------------------------------------------------------------------------------------

I know the issue is coming from "setLogicalOperator" below. If you notice in the FileMaker code, we used "&" concatenation operator to do the same. But not sure how to implement the same logic in php. Since the php is using "AND", it is creating issues.

$findCommand->addFindCriterion('Accession', 'S*');

$findCommand->setLogicalOperator('AND');

$findCommand->addFindCriterion('Final', 'N');

I tried changing the above part as

$findCommand->addFindCriterion('Accession', 'S*');

$findCommand->setLogicalOperator('OR');

$findCommand->addFindCriterion('Final', 'N');

$findCommand->setLogicalOperator('OR');

$findCommand->addFindCriterion('Final', 'Y');

but this will fetch many records, which is not what I wanted. Also, tried other variations and combinations but not successful so far.

I would be glad, if any one can help me on this. Let me know if any other info is required.

Thanks,

Venkat Vallala

read up on newCompoundFindCommand; I think that's what you are looking for.

Here are some links to the documentation:

creating a compound find: http://www.fmforums.com/fms_help/api/FileMaker/FM.html#newCompoundFindCommand

compound find methods: http://www.fmforums.com/fms_help/api/FileMaker/FMC_CompoundFind.html

Edited by dansmith65

  • Author

read up on newCompoundFindCommand; I think that's what you are looking for.

Here are some links to the documentation:

creating a compound find: http://www.fmforums.com/fms_help/api/FileMaker/FM.html#newCompoundFindCommand

compound find methods: http://www.fmforums.com/fms_help/api/FileMaker/FMC_CompoundFind.html

Thanks !!

I will look into it.

Create an account or sign in to comment

Important Information

By using this site, you agree to our Terms of Use.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.