2013-11-13 1 views
0
$filter .="<option value='ALL' selected=selected> All Months - [" . $allcnt . "] </option>"; 

$query = "select LockerInfo_IDNo, ExpiryDate, count(LockerInfo_IDNo) count1 from lockerinfo 
      WHERE ExpiryDate<>'' 
      group by MONTH(ExpiryDate) 
      order by ExpiryDate "; 

$result = mysql_query($query) or die('101. Query failed: ' . mysql_error()); 
while ($row=mysql_fetch_array($result)){ 

    if($mnt==date("d-m-Y",$row['ExpiryDate'])) 
     $filter .="<option value='" . $row['ExpiryDate'] . "' selected=selected> " . $space1 . date("M",$row['ExpiryDate']) . " - [" . $row['count1'] . "]</option>"; 
    else 
     $filter .="<option value='" . $row['ExpiryDate'] . "'> " . $space1 . date("M",$row['ExpiryDate']) . " - [" . $row['count1'] . "]</option>"; 
} 


$filter .=" </select>"; 
echo $filter; 

Это был мой запрос в этом списке, значения должны группироваться по месяцам ... если этот запрос означает, что он показывает только 2 записи ... но у меня есть 535 значений в db .. .help меняФильтр по дате в контроле даты

+0

Что вы хотите делать именно? – Mohebifar

+0

Я хочу показать месяц только раз в год? – Poonthamilarsu

+1

_ "bt am havin 535 values ​​in db" _ - сколько значений _different_ месяца? Похоже, вы действительно не сейчас, что GROUP BY делает ... – CBroe

ответ

0

Попробуйте переписать запрос и увидеть, что в результатах:

 select YEAR(ExpiryDate) as expireYear, MONTH(ExpiryDate) as expireMonth, count(LockerInfo_IDNo) count1 
     from lockerinfo 
     WHERE ExpiryDate<>'' 
     group by YEAR(ExpiryDate) , MONTH(ExpiryDate) 
     order by 1, 2 

PHP скрипт, например:

$resultSet = []; 
/* uncomment to use real data 
    while ($row=mysql_fetch_array($result)) 
      $resultSet[] = $row; 
*/ 
// Example data start 
$resultSet[] = ['expireYear' => '2013', 'expireMonth' => '01', 'count1' => 12]; 
$resultSet[] = ['expireYear' => '2013', 'expireMonth' => '05', 'count1' => 20]; 
$resultSet[] = ['expireYear' => '2013', 'expireMonth' => '11', 'count1' => 30]; 
// Example data end 
$currentMonth = date('Ym'); 
$space1 = " "; 
foreach ($resultSet as $row){ 
    $ym = $row['expireYear'].$row['expireMonth']; 
    $text = date("Y M", mktime(0, 0, 0, $row['expireMonth'], 1, $row['expireYear'])) . " - [".$row['count1']."]"; 
    $filter .= "<option value='{$ym}' ".($currentMonth == $ym ? 'selected' : '')."> " . $space1 . $text . "</option>"; 
} 
echo "<select>".$filter."</select>"; 
+0

теперь его показ jan два раза oly – Poonthamilarsu

+0

Я хочу показать каждый месяц в tat listbox, которые находятся в поле d ... например jan 2013, имеющий 29 записей, может содержать 20 записей, которые он должен отображать только один раз в этом списке .. – Poonthamilarsu

+0

Вы должны иметь результаты из строк базы данных с данными типа: «' '2013', '01', 12' "," '2013 ',' 05 ', 20'", правильно? – Alexander