Ik heb klassen Rankings
en DateFilter
gemaakt.
Elke classificeringsklasse heeft een klasse DateFilter
die de cutoff-datum moet produceren. Ik probeer een filter te kunnen maken zodat alles dat na die datum is gemaakt in een tabel wordt weergegeven.
De vergelijking werkt echter niet. Zie je een probleem?
Dit is mijn DateFilter-klasse:
<?php
include ("Filter.php");
class DateFilter extends Filter
{
//@param daysOld: how many days can be passed to be included in filter
//Ex. If daysOld = 7, everything that is less than a week old is included
private $interval;
public function DateFilter($daysOld)
{
$this->interval = new DateInterval('P'.$daysOld.'D');
}
//@Return: Returns a DateTime that is the earliest possible date to be included in the filter
function createLimitDate()
{
$now = new DateTime();
return $now->sub($this->interval);
}
//generates SQL code for checking date
//Ex. WHERE limitDate > created... if > means before
function genSQL()
{
$limitDate = $this->createLimitDate();
return $limitDate->format('Y-m-d') . " < 'created'";
}
}
?>
En mijn klassementsklasse:
<?php
class Rankings
{
private $filter;
//@params: $filty is the filter given to these rankings
public function Rankings($filty)
{
$this->filter = $filty;
}
//@return: returns the html code for the rankings
public function display()
{
echo '<table border="1" align="center">'.
'<tr align="center" style="font-weight:bold;">
<td>#</td><td>NAME</td><td>Date</td>
</tr>
';
//hardcoding DB
$where = $this->filter->genSQL();
$qry = mysql_query("SELECT * FROM `pix`
WHERE $where
");
if (!$qry)
die("FAIL: " . mysql_error());
$i = 1;
while($row = mysql_fetch_array($qry))
{
$name = $row['uniquename'];
$created = $row['created'];
echo ' <tr>
<td>'. $i . '</td>'.
'<td>' . $name . '</td>'.
'<td>'. $created . '</td>'.
'</tr>';
$i += 1;
}
echo '</table>';
echo $where;
}
}
?>
Ik noem het zo:
$test = new DateFilter(100);
$rankings = new Rankings($test);
$rankings->display();
In dat voorbeeld wordt niets weergegeven, hoewel ik zeker weet dat alles in mijn database minder dan 100 dagen geleden is geüpload.