Returning a partial list

16 posts by 2 authors in: Forums > CMS Builder
Last Post: April 19, 2010   (RSS)

I have if currently setup in three categories:

<2500
2500-3500
>3500

If I did an "if <2500, else" I'd get all the other plans in the "else". What I want is to say:

If some plans <2500 exist, do this
If none <2500 exist, do this
If some plans 2500-3500 exist, do this
If none 2500-3500 exist, do this
If some plans >3500 exist, do this
If none >3500 exist, do this


All of these are displayed on the same page.

Thoughts?

-Dennis

Re: [dennisoneil] Returning a partial list

By Jason - April 16, 2010

Hi Dennis,

I think we found a solution. First, we're going to need to find out if there are any records for each condition. Put this code somewhere below where you do your query, but before your output:

<?php
$square_foot[0]=0;
$square_foot[1]=0;
$square_foot[2]=0;

foreach($productRecords as $record){
if($record['square_footage']<25)
$square_foot[0]++;
else if($record['square_footage']>=2500 && $record['square_footage']<=3000 )
$square_foot[1]++;
else if($record['square_footage']>=3000)
$square_foot[2]++;
}
?>


We now have an array that tells us how many records exist that fit each condition (0 if there are none)

Now we can output like this:

<div>
<?php foreach($productRecords as $record): ?>
<?php if($square_foot[0]==0): ?>
*NO RECORDS*
<?php elseif($record['square_footage']<2500): ?>
*RECORD*
<?php endif ?>
<?php endforeach ?>
</div>

<div>
<?php foreach($productRecords as $record): ?>
<?php if($square_foot[1]==0): ?>
*NO RECORDS*
<?php elseif($record['square_footage']>=2500 && $record['square_footager']<=3000): ?>
*RECORD*
<?php endif ?>
<?php endforeach ?>
</div>

<div>
<?php foreach($productRecords as $record): ?>
<?php if($square_foot[2]==0): ?>
*NO RECORDS*
<?php elseif($record['square_footage']>3000): ?>
*RECORD*
<?php endif ?>
<?php endforeach ?>
</div>


Here, you can replace *NO RECORDS* with whatever you want to display if there are no records for that condition. You can also replace *RECORD* with whatever you want if there are records that match that category.

Give that a try and let me know if that works for you.
---------------------------------------------------
Jason Sauchuk - Project Manager
interactivetools.com

Hire me! Save time by getting our experts to help with your project.
http://www.interactivetools.com/consulting/
Hi Jason,

Unfortunately, if doesn't seem to be working.

Below is the code I'm using above the doctype:

<?php
require_once "/home/kaine2/public_html/cmsAdmin/lib/viewer_functions.php";

list($communitiesRecords, $communitiesMetaData) = getRecords(array(
'tableName' => 'communities',
'where' => whereRecordNumberInUrl(1),
'limit' => '1',
));
$communitiesRecord = @$communitiesRecords[0]; // get first record

list($homesRecords, $homesMetaData) = getRecords(array(
'tableName' => 'homes',
'orderBy' => 'size',
));

?>


And here's what's in the page:

<?php
$square_foot[0]=0;
$square_foot[1]=0;
$square_foot[2]=0;

foreach($homesRecords as $record){
if($record['size']<2500)
$square_foot[0]++;
else if($record['size']>=2500 && $record['size']<=3000 )
$square_foot[1]++;
else if($record['size']>=3000)
$square_foot[2]++;
}
?>


<li><a id="community-floorplans-button" href="#"><span class="grey">Available Plans</span></a></li>
<ul class="community-floorplans-list">
<?php foreach($homesRecords as $record): ?>
<?php if($square_foot[0]==0): ?>
<?php elseif($record['size']<2500): ?>
<li><a id="small-homes-button" href="#">2,500 sq ft and below</a></li>
<?php break; ?>
<?php endif ?>
<?php endforeach ?>
<?php foreach($homesRecords as $record): ?>
<?php if($square_foot[1]==0): ?>
<?php elseif($record['size']>=2500 && $record['size']<=3000): ?>
<li><a id="large-homes-button" href="#">2,000 to 3,000 sq ft</a></li>
<?php break; ?>
<?php endif ?>
<?php endforeach ?>
<?php foreach($homesRecords as $record): ?>
<?php if($square_foot[2]==0): ?>
<?php elseif($record['size']>3000): ?>
<li><a id="larger-homes-button" href="#">3,000 sq ft and up</a></li>
<?php break; ?>
<?php endif ?>
<?php endforeach ?>
</ul>


Currently ALL of the <li>'s are being displayed despite the filter attempt.

You can see what I mean here:
http://208.79.239.28/~kaine2/calvert-county-new-communities.php?Covenant-Creek-1

If you click on the "Available Plans" button, then the "2500 sq ft and below" you'll see it empty. I was wanting to use this filter to remove the <li> altogether if there were no plans in that category.


Thanks again for all of your help.

Please let me know if you see an error I've made.
Thanks.
Hi Jason,

After no success with the revised code, but a successful "test" with the code you provided, I realized the error I was making. I was also filtering my results on the page by an second criteria. There WERE homes that fit the (<2500, etc) size criteria, but none were displayed because I was also filtering based on the presence of a price. I revised my page with the code below and its now working.


<?php
$square_foot[0]=0;
$square_foot[1]=0;
$square_foot[2]=0;

foreach($homesRecords as $record){
if($record['size']<2500)
$square_foot[0]++;
else if($record['size']>=2500 && $record['size']<=3000 )
$square_foot[1]++;
else if($record['size']>=3000)
$square_foot[2]++;
}
?>
<?php $field="price_".$_SERVER['QUERY_STRING']; ?>


<ul class="community-floorplans-list">
<?php foreach($homesRecords as $record): ?>
<?php if($square_foot[0]==0): ?>
<?php elseif($record['size']<2500 && $record[$field] != ""): ?>
<li><a id="small-homes-button" href="#">2,500 sq ft and below</a></li>
<?php break; ?>
<?php endif ?>
<?php endforeach ?>
<?php foreach($homesRecords as $record): ?>
<?php if($square_foot[1]==0): ?>
<?php elseif($record['size']>=2500 && $record['size']<=3000 && $record[$field] != ""): ?>
<li><a id="large-homes-button" href="#">2,500 to 3,000 sq ft</a></li>
<?php break; ?>
<?php endif ?>
<?php endforeach ?>
<?php foreach($homesRecords as $record): ?>
<?php if($square_foot[2]==0): ?>
<?php elseif($record['size']>3000 && $record[$field] != ""): ?>
<li><a id="larger-homes-button" href="#">3,000 sq ft and up</a></li>
<?php break; ?>
<?php endif ?>
<?php endforeach ?>
</ul>


Thanks so much for all your help.

-Dennis

Re: [dennisoneil] Returning a partial list

By Jason - April 19, 2010

Awesome! Glad it all works. :)
---------------------------------------------------
Jason Sauchuk - Project Manager
interactivetools.com

Hire me! Save time by getting our experts to help with your project.
http://www.interactivetools.com/consulting/