| Люди знающие, помогите пожалуйста, разобраться с кодом запроса ДБ который в настоящее время работает неверно.
Имеетса таблица в ДБ в которую занесены несколько тысяч слетов *(Events) с датой начала слета и датой конца, слеты проводят различные кролиководы из разных обьединений и обществ. Таблица показана на картинке тут: http://www.kleintiernews.de/images/forum_help/tabelle_kalender.gif ,a маска фильтра поиска тут: http://www.kleintiernews.de/images/forum_help/suche.gif .
В данный момент для фильтрации применяеться следующая функция составляющая запрос в ДБ, но она выдает неверные результаты, т.к. не учтены разные месяцы и годы, т.е. она как бы верна но только для случая когда месяц и год в интервале фильтра одинаков.
Дата записана в ДБ в видете слова 31.01.2008 (ее приходиться разрезать на составные части)
$verbandliste это название клуба или если равно 1 то все клубы
$von_t - день начала интервала поиска даты
$von_m - месяц начала интервала поиска даты
$von_y - год начала начала интервала поиска даты
$bis_t - день конца интервала поиска даты
$bis_m - месяц конца интервала поиска даты
$bis_y - год конца интервала поиска даты
$id ID слета в DB
$start
<?
function showKalender($verbandliste,$von_t,$von_m,$von_y,$bis_t,$bis_m,$bis_y,$id,$start) {
$monataktuel = date("m",time());
$anzahl_pro_zeile = 13; // Anzahl pages im PAGIN Menü
$display=10; // Anzeigen pro 1 Seite
$akt_zeilen_cont = 0;
if ( $verbandliste != "" && $von_t != "" && $von_m != "" && $von_y != "" && $bis_t != "" && $bis_m != "" && $bis_y != "" ) {
$query="SELECT * FROM menu WHERE id=".$id;
$result=mysql_query($query);
$row=mysql_fetch_array($result);
$title=$row['text'];
echo "<tr><td><span class='headlines'>".$title."<br><br></span></td></tr>";
if ( $verbandliste == 1) {
$query="SELECT * FROM kalender WHERE
menu_id=".$id."
AND
LPAD( SUBSTRING_INDEX( beginn, '.', 1 ) , 2, '0' ) >= $von_t
AND
LPAD( SUBSTRING_INDEX( beginn, '.', 1 ) , 2, '0' ) <= $bis_t
AND
LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( beginn, '.', 2 ) , '.', -1 ) , 2, '0' ) >= $von_m
AND
LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( beginn, '.', 2 ) , '.', -1 ) , 2, '0' ) <= $bis_m
AND
SUBSTRING_INDEX( beginn, '.', -1 ) >= $von_y
AND
SUBSTRING_INDEX( beginn, '.', -1 ) <= $bis_y
ORDER BY SUBSTRING_INDEX( beginn, '.', -1 ) , LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( beginn, '.', 2 ) , '.', -1 ) , 2, '0' ) , LPAD( SUBSTRING_INDEX( beginn, '.', 1 ) , 2, '0' )";
} else {
$query="SELECT * FROM kalender
WHERE
menu_id=".$id."
AND
LPAD( SUBSTRING_INDEX( beginn, '.', 1 ) , 2, '0' ) >= $von_t
AND
LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( beginn, '.', 2 ) , '.', -1 ) , 2, '0' ) >= $von_m
AND
SUBSTRING_INDEX( beginn, '.', -1 ) >= $von_y
AND
LPAD( SUBSTRING_INDEX( beginn, '.', 1 ) , 2, '0' ) <= $bis_t
AND
LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( beginn, '.', 2 ) , '.', -1 ) , 2, '0' ) <= $bis_m
AND
SUBSTRING_INDEX( beginn, '.', -1 ) <= $bis_y
AND
beschreibung5 LIKE '%".$verbandliste."%'
ORDER BY SUBSTRING_INDEX( beginn, '.', -1 ) , LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( beginn, '.', 2 ) , '.', -1 ) , 2, '0' ) , LPAD( SUBSTRING_INDEX( beginn, '.', 1 ) , 2, '0' )";
}
$result=mysql_query($query);
}
|
Помогите пожалуйста дополнить функцию что бы она правильно работала. | |