OK, noch ne Frage. Ich komme mit der Abfrage einfach nicht klar.
Ich möchte jetzt alle Mitglieder ausgeworfen haben, die im aktuellen Jahr geehrt werden sollen. Und zwar sortiert nach 15, 25 und 50jähriger Vereinszugehörigkeit. Ich habe mir jetzt das bisherige Statement genommen und war der Meinung, dass ich es einfach abändern kann indem ich hier das "<" durch ein "=" ersetze:
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') < date_add(sysdate(), interval -15 year)
und die folgende, einschränkende Zeile
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') > date_add(sysdate(), interval -19 year)
weglasse. Irrtum! Geht nicht. Kommt gar nichts mehr raus!
Hier jetzt mal das, was ich "gebastelt" habe:
<table width="400" cellspacing="0" cellpadding="5" border="0" bordercolor = "red" borderstyle="solid" align="center">
<tbody>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
include_once($_SERVER['DOCUMENT_ROOT']. "/XXXX/adm_program/system/common.php");
//dieses Jahr
$this_year = date("Y");
function more_than_years($years, $intra_day)
{
$intra_year = substr($intra_day,0,4);
if($this_year - $intra_year < $years)
{
return true;
}
else
{
return false;
}
}
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -15 year)
WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";
$result = $g_db->query($sql);
$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Im Jahr $jahr seit 15 Jahren im Verein</font></u><br><br>";
while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);
//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen
if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>
</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -25 year)
WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";
$result = $g_db->query($sql);
$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Seit 25 Jahren im Verein</font></u><br><br>";
while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);
//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen
if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>
</td>
</tr>
<tr>
<td style="text-align: left;" colspan ="1">
<?php
$sql ="SELECT usr_id, row1id1.usd_value, row4id2.usd_value, row7id10.usd_value, row10id11.usd_value, rol_id
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
LEFT JOIN adm_user_data row1id1 ON row1id1.usd_usr_id = usr_id
AND row1id1.usd_usf_id = 1
LEFT JOIN adm_user_data row4id2 ON row4id2.usd_usr_id = usr_id
AND row4id2.usd_usf_id = 2
LEFT JOIN adm_user_data row7id10 ON row7id10.usd_usr_id = usr_id
AND row7id10.usd_usf_id = 10
LEFT JOIN adm_user_data row10id11 ON row10id11.usd_usr_id = usr_id
AND row10id11.usd_usf_id = 11
JOIN adm_user_data row10id20 ON row10id20.usd_usr_id = usr_id
AND row10id20.usd_usf_id = 20
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -50 year)
WHERE rol_id = 2
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY row1id1.usd_value ASC";
$result = $g_db->query($sql);
$jahr = date("Y");
echo "<u><font size=\"+1\" color = \"red\">Seit 50 Jahren im Verein</font></u><br><br>";
while($row = $g_db->fetch_array($result))
{
//Kleine erkl?ng
//Hier wird ein Userobjekt erzeugt welches alle Informationen ?? den User hat
$user = new User($g_db, $row['usr_id']);
//Jetzt wird z.B. das Eintrittsdatum abgefragt
$intra_day = $user->getValue("Mitglied seit");//Hier deinen Feldnamen eintragen
if(more_than_years(15, $intra_day))
{
echo "<b>".$user->getValue("Nachname")."</b>, <b>".$user->getValue("Vorname")."</b> seit " .date('d.m.Y', strtotime($intra_day)) ;
echo "<br>";
}
}
?>
</td>
</tr>
</tbody>
</table>
Ergebnis:
Im Jahr 2008 seit 15 Jahren im Verein
Seit 25 Jahren im Verein
Seit 50 Jahren im Verein
Leere! Warum?????
Ich kapier das einfach nicht. Wenn ich doch sage:
Ich will alles was dieses Jahr minus 15 Jahren ist sollte das doch so gehen:
AND str_to_date(row10id20.usd_value, '%Y-%m-%d') = date_add(sysdate(), interval -15 year)
Wo liegt mein Denkfehler??
Danke und einen guten Rutsch!
Gerhard