djhamer Posted April 22, 2008 Share Posted April 22, 2008 I have a php/mysql site that currently displays data from a database. I need to add a filter to only include data prior to April 1st. Can someone please show me the correct code? All help is sincerely appreciated. <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; if (isset($_POST['filter'])){ // looking for filter request $filter = $_POST['filter']; if ($filter == 'Med Student') { $qry_insert = 'WHERE assess_role.id = 5 '; } elseif ($filter == 'Resident/Intern') { $qry_insert = 'WHERE assess_role.id = 2 OR assess_role.id = 3 '; } elseif ($filter == 'Staff Physician') { $qry_insert = 'WHERE assess_role.id = 1 '; } elseif ($filter == 'Mid-Level Provider') { $qry_insert = 'WHERE assess_role.id = 4 '; } else { $qry_insert = ''; } } else { $filter = 'All'; $qry_insert = ''; } echo '<form name="sorting" method="post" action="'.$_SERVER['PHP_SELF'].'">'; echo 'See: <input type="submit" name="filter" value=" All ">'; echo '<input type="submit" name="filter" value="Med Student">'; echo '<input type="submit" name="filter" value="Resident/Intern">'; echo '<input type="submit" name="filter" value="Staff Physician">'; echo '<input type="submit" name="filter" value="Mid-Level Provider">'; echo '</form>'; echo '<p> </p>'; echo '<p class="viewtitle">Assessment Report ('.$filter.') <span class=contract>'.$datetime.'<span></p>'; echo '<table>'; echo '<tr class="line0"><td>Name</td><td>Email</td><td>Role</td><td>Assessment</td><td align=right>Score</td><td>Failed</td></tr>'; $qry_users = "SELECT assess_registered_users.id, assess_registered_users.fname, assess_registered_users.lname, assess_registered_users.mi, assess_registered_users.email, assess_role.role AS role, assess_role.id AS roleid FROM assess_registered_users INNER JOIN assess_role ON assess_registered_users.roleid = assess_role.id ".$qry_insert."ORDER BY assess_registered_users.lname, assess_registered_users.fname"; $result_users = odbc_exec($dbcnx, $qry_users); if(!$result_users) { echo '<p class="error">Error in query of database - Users</p>'; } while (odbc_fetch_row($result_users)){ $ruid = odbc_result($result_users, 'id'); $fname = odbc_result($result_users, 'fname'); $lname = odbc_result($result_users, 'lname'); $mi = odbc_result($result_users, 'mi'); $email = odbc_result($result_users, 'email'); $roleid = odbc_result($result_users, 'roleid'); $role = odbc_result($result_users, 'role'); $line_count = 0; $num_passed = 0; $qry_assess = "SELECT assessment.id AS id, assessment.title AS title, assess_scores.assessid AS aid, assess_scores.reguserid AS ruid, assess_scores.numCorrect AS correct, assess_scores.numTotal AS total, assess_scores.wrongAnswers AS wrongAnswers, assess_scores.timesTaken AS timesTaken FROM assess_scores INNER JOIN assessment ON assess_scores.assessid = assessment.id WHERE assess_scores.reguserid = '$ruid'"; $result_assess = odbc_exec($dbcnx, $qry_assess); if(!$result_assess) { echo '<p class="error">Error in query of database - Assessments</p>'; } while (odbc_fetch_row($result_assess)){ $title = odbc_result($result_assess, 'title'); $correct = odbc_result($result_assess, 'correct'); $total = odbc_result($result_assess, 'total'); $wrongAnswers = odbc_result($result_assess, 'wrongAnswers'); $timesTaken = odbc_result($result_assess, 'timesTaken'); $passing = 85; $score = round($correct / $total * 100); $line_count++; $r = fmod($line_count, 2); if ($r > 0){ echo '<tr class="line1">'; } else { echo '<tr class="line2">'; } if ($line_count == 1) { $user_count++; echo '<td class=contract><span class=bold>'.strtoupper(trim($lname)).', '.strtoupper(trim($fname)).' '.strtoupper(trim($mi)).'</span></td><td class=contract>'.strtolower(trim($email)).'</td><td class=contract>'.trim($role).'</td>'; } else { echo '<td class=contract> </td><td class=contract> </td><td class=contract> </td>'; } echo '<td class=contract>'.trim($title).'</td><td class=contract align=right>'.$score.'</td>'; if ($score < $passing) { echo '<td class=contract align=center><img src="../images/icon_redflag.gif" height=12 width=12></td>'; } else { $num_passed++; echo '<td class=contract> </td>'; } echo '</tr>'; } if (odbc_fetch_row($result_assess,1)){ // out of while loop, but still need to make sure user has data before printing passed # switch ($roleid) { case 1: $num_per_role = 0; break; case 2: $num_per_role = 11; break; case 3: $num_per_role = 11; break; case 4: $num_per_role = 0; break; case 5: $num_per_role = 10; break; } if ($num_passed >= $num_per_role) { echo '<tr class="line3">'; } else { echo '<tr class="line4">'; } echo '<td class=contract> </td><td class=contract> </td><td class=contract> </td>'; echo '<td colspan=2 align=right class=contract><span class=complete>Completed '.$num_passed.' of '.$num_per_role.'</span></td>'; echo '<td class=contract> </td></tr>'; } } echo '</table>'; echo '<p> </p><p>'.$user_count.' Users Total</p>'; //} // Close Connection odbc_close($dbcnx); ?> Quote Link to comment Share on other sites More sharing options...
DarkWater Posted April 22, 2008 Share Posted April 22, 2008 I have a php/mysql site that currently displays data from a database. I need to add a filter to only include data prior to April 1st. Can someone please show me the correct code? All help is sincerely appreciated. <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; if (isset($_POST['filter'])){ // looking for filter request $filter = $_POST['filter']; if ($filter == 'Med Student') { $qry_insert = 'WHERE assess_role.id = 5 '; } elseif ($filter == 'Resident/Intern') { $qry_insert = 'WHERE assess_role.id = 2 OR assess_role.id = 3 '; } elseif ($filter == 'Staff Physician') { $qry_insert = 'WHERE assess_role.id = 1 '; } elseif ($filter == 'Mid-Level Provider') { $qry_insert = 'WHERE assess_role.id = 4 '; } else { $qry_insert = ''; } } else { $filter = 'All'; $qry_insert = ''; } echo '<form name="sorting" method="post" action="'.$_SERVER['PHP_SELF'].'">'; echo 'See: <input type="submit" name="filter" value=" All ">'; echo '<input type="submit" name="filter" value="Med Student">'; echo '<input type="submit" name="filter" value="Resident/Intern">'; echo '<input type="submit" name="filter" value="Staff Physician">'; echo '<input type="submit" name="filter" value="Mid-Level Provider">'; echo '</form>'; echo '<p> </p>'; echo '<p class="viewtitle">Assessment Report ('.$filter.') <span class=contract>'.$datetime.'<span></p>'; echo '<table>'; echo '<tr class="line0"><td>Name</td><td>Email</td><td>Role</td><td>Assessment</td><td align=right>Score</td><td>Failed</td></tr>'; $qry_users = "SELECT assess_registered_users.id, assess_registered_users.fname, assess_registered_users.lname, assess_registered_users.mi, assess_registered_users.email, assess_role.role AS role, assess_role.id AS roleid FROM assess_registered_users INNER JOIN assess_role ON assess_registered_users.roleid = assess_role.id ".$qry_insert."ORDER BY assess_registered_users.lname, assess_registered_users.fname"; $result_users = odbc_exec($dbcnx, $qry_users); if(!$result_users) { echo '<p class="error">Error in query of database - Users</p>'; } while (odbc_fetch_row($result_users)){ $ruid = odbc_result($result_users, 'id'); $fname = odbc_result($result_users, 'fname'); $lname = odbc_result($result_users, 'lname'); $mi = odbc_result($result_users, 'mi'); $email = odbc_result($result_users, 'email'); $roleid = odbc_result($result_users, 'roleid'); $role = odbc_result($result_users, 'role'); $line_count = 0; $num_passed = 0; $qry_assess = "SELECT assessment.id AS id, assessment.title AS title, assess_scores.assessid AS aid, assess_scores.reguserid AS ruid, assess_scores.numCorrect AS correct, assess_scores.numTotal AS total, assess_scores.wrongAnswers AS wrongAnswers, assess_scores.timesTaken AS timesTaken FROM assess_scores INNER JOIN assessment ON assess_scores.assessid = assessment.id WHERE assess_scores.reguserid = '$ruid'"; $result_assess = odbc_exec($dbcnx, $qry_assess); if(!$result_assess) { echo '<p class="error">Error in query of database - Assessments</p>'; } while (odbc_fetch_row($result_assess)){ $title = odbc_result($result_assess, 'title'); $correct = odbc_result($result_assess, 'correct'); $total = odbc_result($result_assess, 'total'); $wrongAnswers = odbc_result($result_assess, 'wrongAnswers'); $timesTaken = odbc_result($result_assess, 'timesTaken'); $passing = 85; $score = round($correct / $total * 100); $line_count++; $r = fmod($line_count, 2); if ($r > 0){ echo '<tr class="line1">'; } else { echo '<tr class="line2">'; } if ($line_count == 1) { $user_count++; echo '<td class=contract><span class=bold>'.strtoupper(trim($lname)).', '.strtoupper(trim($fname)).' '.strtoupper(trim($mi)).'</span></td><td class=contract>'.strtolower(trim($email)).'</td><td class=contract>'.trim($role).'</td>'; } else { echo '<td class=contract> </td><td class=contract> </td><td class=contract> </td>'; } echo '<td class=contract>'.trim($title).'</td><td class=contract align=right>'.$score.'</td>'; if ($score < $passing) { echo '<td class=contract align=center><img src="../images/icon_redflag.gif" height=12 width=12></td>'; } else { $num_passed++; echo '<td class=contract> </td>'; } echo '</tr>'; } if (odbc_fetch_row($result_assess,1)){ // out of while loop, but still need to make sure user has data before printing passed # switch ($roleid) { case 1: $num_per_role = 0; break; case 2: $num_per_role = 11; break; case 3: $num_per_role = 11; break; case 4: $num_per_role = 0; break; case 5: $num_per_role = 10; break; } if ($num_passed >= $num_per_role) { echo '<tr class="line3">'; } else { echo '<tr class="line4">'; } echo '<td class=contract> </td><td class=contract> </td><td class=contract> </td>'; echo '<td colspan=2 align=right class=contract><span class=complete>Completed '.$num_passed.' of '.$num_per_role.'</span></td>'; echo '<td class=contract> </td></tr>'; } } echo '</table>'; echo '<p> </p><p>'.$user_count.' Users Total</p>'; //} // Close Connection odbc_close($dbcnx); ?> Do you have a DATETIME column in your MySQL database that has the time that the data was made? Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 I believe so. In all tables I have a timestamp field or column. This gives the date/time that the information was entered. Quote Link to comment Share on other sites More sharing options...
craygo Posted April 22, 2008 Share Posted April 22, 2008 is it a timestamp or datetime field? makes a difference Datetime $now = date("Y-m-d G:i:s", strtotime("4/1/2008")); $qry_insert = "WHERE `datefield` < '$now' "; Timestamp $now = date("U", strtotime("4/1/2008")); $qry_insert = "WHERE `datefield < '$now' "; Ray Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 Sorry to sound like an idiot...but where exactly would that piece of code go? Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 As you can see below...I put the code in right below the $filter. This doesnt produce the desired result. <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; if (isset($_POST['filter'])){ // looking for filter request $filter = $_POST['filter']; $now = date("Y-m-d G:i:s", strtotime("4/1/2008")); $qry_insert = "WHERE `datefield` < '$now' "; if ($filter == 'Med Student') { $qry_insert = 'WHERE assess_role.id = 5 '; } elseif ($filter == 'Resident/Intern') { $qry_insert = 'WHERE assess_role.id = 2 OR assess_role.id = 3 '; } elseif ($filter == 'Staff Physician') { $qry_insert = 'WHERE assess_role.id = 1 '; } elseif ($filter == 'Mid-Level Provider') { $qry_insert = 'WHERE assess_role.id = 4 '; } else { $qry_insert = ''; } } else { $filter = 'All'; $qry_insert = ''; } echo '<form name="sorting" method="post" action="'.$_SERVER['PHP_SELF'].'">'; echo 'See: <input type="submit" name="filter" value=" All ">'; echo '<input type="submit" name="filter" value="Med Student">'; echo '<input type="submit" name="filter" value="Resident/Intern">'; echo '<input type="submit" name="filter" value="Staff Physician">'; echo '<input type="submit" name="filter" value="Mid-Level Provider">'; echo '</form>'; echo '<p> </p>'; echo '<p class="viewtitle">Assessment Report ('.$filter.') <span class=contract>'.$datetime.'<span></p>'; echo '<table>'; echo '<tr class="line0"><td>Name</td><td>Email</td><td>Role</td><td>Assessment</td><td align=right>Score</td><td>Failed</td></tr>'; $qry_users = "SELECT assess_registered_users.id, assess_registered_users.fname, assess_registered_users.lname, assess_registered_users.mi, assess_registered_users.email, assess_role.role AS role, assess_role.id AS roleid FROM assess_registered_users INNER JOIN assess_role ON assess_registered_users.roleid = assess_role.id ".$qry_insert."ORDER BY assess_registered_users.lname, assess_registered_users.fname"; $result_users = odbc_exec($dbcnx, $qry_users); if(!$result_users) { echo '<p class="error">Error in query of database - Users</p>'; } while (odbc_fetch_row($result_users)){ $ruid = odbc_result($result_users, 'id'); $fname = odbc_result($result_users, 'fname'); $lname = odbc_result($result_users, 'lname'); $mi = odbc_result($result_users, 'mi'); $email = odbc_result($result_users, 'email'); $roleid = odbc_result($result_users, 'roleid'); $role = odbc_result($result_users, 'role'); $line_count = 0; $num_passed = 0; $qry_assess = "SELECT assessment.id AS id, assessment.title AS title, assess_scores.assessid AS aid, assess_scores.reguserid AS ruid, assess_scores.numCorrect AS correct, assess_scores.numTotal AS total, assess_scores.wrongAnswers AS wrongAnswers, assess_scores.timesTaken AS timesTaken FROM assess_scores INNER JOIN assessment ON assess_scores.assessid = assessment.id WHERE assess_scores.reguserid = '$ruid'"; $result_assess = odbc_exec($dbcnx, $qry_assess); if(!$result_assess) { echo '<p class="error">Error in query of database - Assessments</p>'; } while (odbc_fetch_row($result_assess)){ $title = odbc_result($result_assess, 'title'); $correct = odbc_result($result_assess, 'correct'); $total = odbc_result($result_assess, 'total'); $wrongAnswers = odbc_result($result_assess, 'wrongAnswers'); $timesTaken = odbc_result($result_assess, 'timesTaken'); $passing = 85; $score = round($correct / $total * 100); $line_count++; $r = fmod($line_count, 2); if ($r > 0){ echo '<tr class="line1">'; } else { echo '<tr class="line2">'; } if ($line_count == 1) { $user_count++; echo '<td class=contract><span class=bold>'.strtoupper(trim($lname)).', '.strtoupper(trim($fname)).' '.strtoupper(trim($mi)).'</span></td><td class=contract>'.strtolower(trim($email)).'</td><td class=contract>'.trim($role).'</td>'; } else { echo '<td class=contract> </td><td class=contract> </td><td class=contract> </td>'; } echo '<td class=contract>'.trim($title).'</td><td class=contract align=right>'.$score.'</td>'; if ($score < $passing) { echo '<td class=contract align=center><img src="../images/icon_redflag.gif" height=12 width=12></td>'; } else { $num_passed++; echo '<td class=contract> </td>'; } echo '</tr>'; } if (odbc_fetch_row($result_assess,1)){ // out of while loop, but still need to make sure user has data before printing passed # switch ($roleid) { case 1: $num_per_role = 0; break; case 2: $num_per_role = 11; break; case 3: $num_per_role = 11; break; case 4: $num_per_role = 0; break; case 5: $num_per_role = 10; break; } if ($num_passed >= $num_per_role) { echo '<tr class="line3">'; } else { echo '<tr class="line4">'; } echo '<td class=contract> </td><td class=contract> </td><td class=contract> </td>'; echo '<td colspan=2 align=right class=contract><span class=complete>Completed '.$num_passed.' of '.$num_per_role.'</span></td>'; echo '<td class=contract> </td></tr>'; } } echo '</table>'; echo '<p> </p><p>'.$user_count.' Users Total</p>'; //} // Close Connection odbc_close($dbcnx); ?> Quote Link to comment Share on other sites More sharing options...
craygo Posted April 22, 2008 Share Posted April 22, 2008 obviously you need to change `datefield` to whatever the name of the field is that is holding your datetime. Also try echo'ing out your query before running it so you can see what it is trying to retrieve. $qry_users = "SELECT assess_registered_users.id, assess_registered_users.fname, assess_registered_users.lname, assess_registered_users.mi, assess_registered_users.email, assess_role.role AS role, assess_role.id AS roleid FROM assess_registered_users INNER JOIN assess_role ON assess_registered_users.roleid = assess_role.id ".$qry_insert."ORDER BY assess_registered_users.lname, assess_registered_users.fname"; echo "<br>Query: $qry_users<br>"; Ray Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 So, essentially...the code will look like this???: <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; $now = date("Y-m-d G:i:s", strtotime("4/1/2008")); $qry_insert = "WHERE `timestamp` > '$now' "; Quote Link to comment Share on other sites More sharing options...
craygo Posted April 22, 2008 Share Posted April 22, 2008 as long as your `timestamp` field is formated "2008-04-21 11:27:00". If not let us know what type of field `timestamp` is Ray Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 the field type is datetime and the format of the data in that field is "10/6/2006 10:42:39 AM" Quote Link to comment Share on other sites More sharing options...
craygo Posted April 22, 2008 Share Posted April 22, 2008 Sorry for not looking. I noticed that you are not using mysql, what type of database you using?? try this $now = date("m/j/Y g:i:s A", strtotime("4/1/2008")); Ray Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 its still not displaying the correct data. I'm trying to pull from the table "CourseTaken" in the timestamp field. I want it to display all entries prior to April 1. Here is the top part of the code that I have edited. <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; $now = date("Y-m-d G:i:s", strtotime("4/1/2008")); $qry_insert = "WHERE `CourseTaken.timestamp` > '$now' "; if (isset($_POST['filter'])){ // looking for filter request $filter = $_POST['filter']; if ($filter == 'Med Student') { $qry_insert = 'WHERE assess_role.id = 5 '; } elseif ($filter == 'Resident/Intern') { $qry_insert = 'WHERE assess_role.id = 2 OR assess_role.id = 3 '; } elseif ($filter == 'Staff Physician') { $qry_insert = 'WHERE assess_role.id = 1 '; } elseif ($filter == 'Mid-Level Provider') { $qry_insert = 'WHERE assess_role.id = 4 '; } else { $qry_insert = ''; } } else { $filter = 'All'; $qry_insert = ''; } Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 Sorry for not looking. I noticed that you are not using mysql, what type of database you using?? try this $now = date("m/j/Y g:i:s A", strtotime("4/1/2008")); Ray mysql / access Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 This is now what it looks like: <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; $now = date("m/j/Y g:i:s A", strtotime("4/1/2008")); $qry_insert = "WHERE `CourseTaken.timestamp` > '$now' "; if (isset($_POST['filter'])){ // looking for filter request $filter = $_POST['filter']; if ($filter == 'Med Student') { $qry_insert = 'WHERE assess_role.id = 5 '; } elseif ($filter == 'Resident/Intern') { $qry_insert = 'WHERE assess_role.id = 2 OR assess_role.id = 3 '; } elseif ($filter == 'Staff Physician') { $qry_insert = 'WHERE assess_role.id = 1 '; } elseif ($filter == 'Mid-Level Provider') { $qry_insert = 'WHERE assess_role.id = 4 '; } else { $qry_insert = ''; } } else { $filter = 'All'; $qry_insert = ''; } Quote Link to comment Share on other sites More sharing options...
craygo Posted April 22, 2008 Share Posted April 22, 2008 Well in order to work with access you have to use "#" surrounding your date <?php include '../physed_dbcnx.inc.php'; // database connection code - ** variable $dbcnx ** $datetime = date('n/j/y g:i:s A'); $user_count = 0; $now = date("m/j/Y", strtotime("4/1/2008")); // can change this $qry_insert = "WHERE `CourseTaken.timestamp` < #$now# "; // add the "#" here and "<" is prior if (isset($_POST['filter'])){ // looking for filter request $filter = $_POST['filter']; if ($filter == 'Med Student') { $qry_insert = 'WHERE assess_role.id = 5 '; } elseif ($filter == 'Resident/Intern') { $qry_insert = 'WHERE assess_role.id = 2 OR assess_role.id = 3 '; } elseif ($filter == 'Staff Physician') { $qry_insert = 'WHERE assess_role.id = 1 '; } elseif ($filter == 'Mid-Level Provider') { $qry_insert = 'WHERE assess_role.id = 4 '; } else { $qry_insert = ''; } } else { $filter = 'All'; $qry_insert = ''; } Ray Quote Link to comment Share on other sites More sharing options...
djhamer Posted April 22, 2008 Author Share Posted April 22, 2008 thanks for all your help...all solved! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.