Фильтрация результатов запроса ДБ интервалом дат

pelevin

Новичок
Фильтрация результатов запроса ДБ интервалом дат

Люди знающие, помогите пожалуйста, разобраться с кодом запроса ДБ который в настоящее время работает неверно.
Имеетса таблица в ДБ в которую занесены несколько тысяч слетов *(Events) с датой начала слета и датой конца, слеты проводят различные кролиководы из разных обьединений и обществ. Таблица показана на картинке тут:

,a маска фильтра поиска тут:


В данный момент для фильтрации применяеться следующая функция составляющая запрос в ДБ, но она выдает неверные результаты, т.к. не учтены разные месяцы и годы, т.е. она как бы верна но только для случая когда месяц и год в интервале фильтра одинаков.

Дата записана в ДБ в видете слова 31.01.2008 (ее приходиться разрезать на составные части)

$verbandliste это название клуба или если равно 1 то все клубы

$von_t - день начала интервала поиска даты
$von_m - месяц начала интервала поиска даты
$von_y - год начала начала интервала поиска даты
$bis_t - день конца интервала поиска даты
$bis_m - месяц конца интервала поиска даты
$bis_y - год конца интервала поиска даты
$id ID слета в DB
$start


PHP:
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); 
         

} 

[PHP]

Помогите пожалуйста дополнить функцию что бы она правильно работала
 

zerkms

TDD infected
Команда форума
задай конкретный вопрос. бесплатно тут не работают.
 

Фанат

oncle terrible
Команда форума
pelevin
тебе именно помочь разобраться, или все исправить за тебя?
если первое, то для начала начни разбираться с SQL запросом, а не с пхп кодом.
если второе, то, может, кто-то и откликнется, но, на мой взгляд, очень маловероятно
 

Фанат

oncle terrible
Команда форума
упрости задачу.
убери пхп, оставь только SQL.
сделай тестовую таблицу, в которой дата хранится в нормальном формате
 
Сверху