Organizing Lists

13 posts by 2 authors in: Forums > CMS Builder
Last Post: February 8, 2010   (RSS)

Re: [jtedescojam] Organizing Lists

By Chris - February 3, 2010

Hi jtedescojam,

Can you please post the complete PHP source code for your page? That way I'll be able to see your section name and field names to write you up a solution.
All the best,
Chris

Re: [chris] Organizing Lists

Sure... very simply put....

<?php foreach ($agendasRecords as $record): ?>

<p><a href="<?php echo $record['_link'] ?>"><?php echo $record['title'] ?> <?php echo $record['month_day'] ?> <?php echo $record['year'] ?></a></p><?php endforeach ?>

here's the page that displays the results.
http://www.pequannock.org/district/board-of-education/agendas2010.php
John Tedesco

Creative Director



JAM Graphics

Re: [jtedescojam] Organizing Lists

By Chris - February 5, 2010

Hi jtedescojam,

So you're using two textfields (month_day and year) instead of a date field? In your above example, month_day contains "January 11th", "January 25th," and "February 2nd"?

If that's the case, you can extract the month out of your month_day field and output headers whenever the month name changes, like this:

<?php $currentMonth = ""; ?>
<?php foreach ($agendasRecords as $record): ?>

<?php $words = explode(" ", $record['month_day']); ?>
<?php $monthNameInCaps = strtoupper(@$words[0]); ?>
<?php ?>
<?php if ($monthNameInCaps != $currentMonth): ?>
<?php $currentMonth = $monthNameInCaps; ?>
<p><b><?php echo $currentMonth; ?></b></p>
<?php endif; ?>

<?php ?>
<p><a href="<?php echo $record['_link'] ?>"><?php echo $record['title'] ?> <?php echo $record['month_day'] ?> <?php echo $record['year'] ?></a></p>

<?php endforeach; ?>


I hope this helps! Please let me know if you have any questions.
All the best,
Chris

Re: [chris] Organizing Lists

yeah that's more than perfect.. nicely done. I didn't use the 'Date field' because I couldn't figure out how to filter results from 2009 and 2010 on the page. I originally started that way, but I couldn't figure it out.

here's the result: http://www.pequannock.org/district/board-of-education/agendas20102.php

Would you be able to write in next to each line what they mean? I'd like to try to decipher it so I can use it in other contexts, but i don't understand $currenMonth, $words, explode, etc... I see there's some extra code in there because I included the 'day' in the month_day field.. so I'm not sure how I could use this in order contexts.

thanks again.
John Tedesco

Creative Director



JAM Graphics

Re: [jtedescojam] Organizing Lists

By Chris - February 5, 2010

Hi jtedescojam,

You can do this with a date field by supplying a "where" clause like: "YEAR(date) = 2010". Or, if you want the year supplied by the visitor: "YEAR(date) = '".mysql_escape($_REQUEST['year'])."'".

Here are some line numbers for reference:

[01] <?php $currentMonth = ""; ?>
[02] <?php foreach ($agendasRecords as $record): ?>
[03]
[04] <?php $words = explode(" ", $record['month_day']); ?>
[05] <?php $monthNameInCaps = strtoupper(@$words[0]); ?>
[06] <?php ?>
[07] <?php if ($monthNameInCaps != $currentMonth): ?>
[08] <?php $currentMonth = $monthNameInCaps; ?>
[09] <p><b><?php echo $currentMonth; ?></b></p>
[10] <?php endif; ?>
[11]
[12] <?php ?>
[13] <p><a href="<?php echo $record['_link'] ?>"><?php echo $record['title'] ?> <?php echo $record['month_day'] ?> <?php echo $record['year'] ?></a></p>
[14]
[15] <?php endforeach; ?>



[04] "explode" is PHP's "split", splitting on a space, we create a list ($words) of "January", "11th". Then we convert the first item in that list (the month) into all caps. [05]

[01] $currentMonth represents the last month which we wrote a header for. When the script starts, it's set to "". For every record, we check [07] if the record's month (in all caps) is the same as the last header we wrote. If it isn't, we output a header [09] and remember which header was output last [08].

This approach relies very much on your records being in order. ;)

I hope this helps! :)
All the best,
Chris

Re: [chris] Organizing Lists

Okay so you sold me on the "Date" field instead... so I've changed it to use the 'date' field now. Can you re-write the code accordingly? sorry.

this is what I have now.

<?php foreach ($agendasRecords as $record): ?>
<p><a href="<?php echo $record['_link'] ?>"><?php echo $record['title'] ?><br /><span class="agendadate"><?php echo date("D, M jS, Y g:i:s a", strtotime($record['date'])) ?></span></a></p><?php endforeach; ?>
John Tedesco

Creative Director



JAM Graphics

Re: [jtedescojam] Organizing Lists

By Chris - February 5, 2010

Hi jtedescojam,

Sure thing, all you need to do is replace these two lines:

<?php $words = explode(" ", $record['month_day']); ?>
<?php $monthNameInCaps = strtoupper(@$words[0]); ?>


with this:

<?php $monthNameInCaps = strtoupper(date('F', strtotime($record['date']))); ?>
All the best,
Chris

Re: [chris] Organizing Lists

Perfect.

While I'm at it... I'm trying to do something similar inside of Policies page... but instead of a month header to break up different months, I need a Policy title to break up different sets of policies... so right now I have a drop down to select which category of policies (10 options), then on the page I have 10 sets of viewer code, each with it's own specific filter... and 10 of these...

<p class="policyheader">0000 - Bylaws</p>
<?php foreach ($policies0000Records as $record): ?>
<p><?php foreach ($record['document'] as $upload): ?><a href="<?php echo $upload['urlPath'] ?>"><?php echo $record['policy_number'] ?> - <?php echo $record['policy_title'] ?></a><?php endforeach ?></p><?php endforeach ?>

<p class="policyheader">1000 - Administration</p>
<?php foreach ($policies1000Records as $record): ?>
<p><?php foreach ($record['document'] as $upload): ?><a href="<?php echo $upload['urlPath'] ?>"><?php echo $record['policy_number'] ?> - <?php echo $record['policy_title'] ?></a><?php endforeach ?></p><?php endforeach ?>
<?php if (!$policies1000Records): ?>
<p>Please be patient while we re-structure this section.</p>
<?php endif ?>

And so on.... if you can do this today, excellent! otherwise.. have a great weekend and thanks for assistance thus far.

http://www.pequannock.org/district/board-of-education/policies.php
John Tedesco

Creative Director



JAM Graphics

Re: [jtedescojam] Organizing Lists

By Chris - February 5, 2010

Hi jtedescojam,

Can you please post the top of that file? I'd need to know which field you're filtering on.
All the best,
Chris