?
Solved

Automatic date archive

Posted on 2006-12-01
3
Medium Priority
?
185 Views
Last Modified: 2011-10-03
Hi there,

I am building a system that will monitor mortgage policies indefintiely from the date they are added to the system.  I therefore want to be able to see on a monthly, quarterly, yearly and bi-yearly basis how many mortgages were sold and by which advisers within the company.

When the policies are added to the database, they are added with the ( day its added) date along with the month number and year.

ie:

policy_added = 20061201
policy_added_mon = 12
policy_added_yr = 2006

Now i know how to manually add a select statement to see all of these policies by looking at thsi older question = http://www.experts-exchange.com/Web/Web_Languages/PHP/Q_21596727.html?query=archive&topics=103&showAll=true

But as the months and years go on i want the archive to build itself. Starting by a page where you select the timeframe you want to see

Monthly
Quarterly
Yearly
Bi-Yearly

You then select the year and then the month
OR
year and then quarter 1,2,3 or 4
OR
year
OR
years

But as a new month and in turn quarter and years go by i need these to automagically add to the archive links.

Any advice would be greatly appreciated!! Cheers :)
0
Comment
Question by:drews1f
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 8

Accepted Solution

by:
John Kawakami earned 1000 total points
ID: 18058334
This is a pretty general question.

If you have a relatively small number of policies (like a few hundred per year), and not many people view them too often, you can just write up the report queries in SQL, and do the queries dynamically.

First, come up with the report query:

SELECT policy, seller FROM sales GROUP BY seller ORDER BY seller

Then, based on the interval, you add an WHERE clause:

$start = "1/1/2006";
$end = "1/4/2006";
$sql = "SELECT policy, seller FROM sales WHERE saleDate >= $start AND saleDate < $end  GROUP BY seller ORDER BY seller";

The $start and $end should be set based on the type of query:
<?php
    function reportQuery( $queryType = 'annual', $year = Null, $month = Null )
    {
        // $year and $month should be the user-selected year and month
        // if they are not set, they default to the current year and month
        // $query type is set to the type of query you want
        if (!isset($queryType))
            $queryType = 'annual';
        if (!isset($year))
            $year = date('Y');
        if (!isset($month))
            $month = date('M');
        switch ($queryType) {
            case 'm':
                   if ($month==12) {
                       $start = "$month/1/$year"; $end = "1/1/".($year+1);
                   } else {
                       $start = "$month/1/$year"; $end = ($month+1)."/1/$year";
                   }
            break;
            case 'q1':
                   $start = "1/1/$year"; $end = "1/4/$year";
            break;
            case 'q2':
                   $start = "1/4/$year"; $end = "1/7/$year";
            break;
            case 'q3':
                   $start = "1/7/$year"; $end = "1/10/$year";
            break;
            case 'q4':
                   $start = "1/10/$year"; $end = "1/12/$year";
            break;
            case 'annual':
                   $start = "1/1/$year"; $end = "1/1/".($year+1);
            break;
            case 'biannual':
                   $start = "1/1/$year"; $end = "1/1/".($year+2);
            break;
        }
        $sql = "SELECT policy, seller FROM sales WHERE saleDate >= $start AND saleDate < $end  GROUP BY seller ORDER BY seller";
        return $sql;
    }
?>
0
 

Author Comment

by:drews1f
ID: 18059370
Can i use an 'UNTIL' statement to work backwards how many years there have been? and in turn how many months etc?

Ie if we were in 2008 and the first policies were added on august 2005

the loop will get the current year
then display it (2008)
then unless the current year is '2005' it does '-1 year'
then displays it (2007)
then unless the current year is '2005' it does '-1 year'
then displays it (2006)
then unless the current year is '2005' it does '-1 year'
then displays it (2005)

I can then do the same for months using the year logic :o
0
 
LVL 8

Expert Comment

by:John Kawakami
ID: 18092399
I'm not understanding the second question.

If you want to show multiple years, you can just specify a new interval like "5years" and then set up the dates accordingly.
0

Featured Post

WordPress Tutorial 1: Installation & Setup

WordPress is a very popular option for running your web site and can be used to get your content online quickly for the world to see. This guide will walk you through installing the WordPress server software and the initial setup process.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
Suggested Courses

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question