Помогите с циклом вывода недостающих дат.

Статус
В этой теме нельзя размещать новые ответы.

anoden

Писатель
Регистрация
3 Мар 2012
Сообщения
8
Реакции
0
Есть такой код:
Код:
$ref_count = mysql_query("SELECTDATE_FORMAT(FROM_UNIXTIME(reg_date), '%d-%m-%Y') AS regdate, count(*)
FROM users
WHERE referral='".$_SESSION['id']."' AND reg_date <= UNIX_TIMESTAMP(NOW()) AND reg_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY))
group by DATE_FORMAT(FROM_UNIXTIME(reg_date), '%d-%m-%Y')
order by reg_date desc");
 
echo '<table width="100%" border="0" cellpadding="2" id="ref_table" cellspacing="0" class="table_ref2">
              <tr class="sites_table">
                <td>Дата</td>
                <td><b>Регистраций</b></td>
              </tr>';
 
while ($ref_group = mysql_fetch_assoc($ref_count)){
print'<tr>
<td class="title_text_tbl">'.$ref_group['regdate'].'</td>
<td class="title_text_tbl">'.$ref_group['count(*)'].'</td>
</tr>';
}

цель вывести количество регистраций сгруппированных по датам, но есть проблема, если регистраций в какой либо день не было, то эти дни пропускаются при выводе в таблицу, а хотелось бы избежать этого и чтобы в столбце Регистраций стоял "0". В раздел баз данных посоветовали сделать подцикл в цикле while который проверял бы недостающие даты и выводил их в таблицу, но все мои попытки найти решения ни к чему не превели. Заранее спасибо.
 
например перед запросом сгенерировать массив с датами и нулями, потом обновить массив данными из базы
PHP:
<?
//пустой массив
$data = array();
for($i=0;$i<7;$i++){
    $data[date("d-m-Y", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y")))] = 0;
}
 
//заполняем пустой массив датами что есть
$ref_count = mysql_query("SELECTDATE_FORMAT(FROM_UNIXTIME(reg_date), '%d-%m-%Y') AS regdate, count(*)
FROM users
WHERE referral='".$_SESSION['id']."' AND reg_date <= UNIX_TIMESTAMP(NOW()) AND reg_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY))
group by DATE_FORMAT(FROM_UNIXTIME(reg_date), '%d-%m-%Y')
order by reg_date desc");
while ($ref_group = mysql_fetch_assoc($ref_count)){
    $data[$ref_group['regdate']] = $ref_group['count(*)'];
}
 
//печатаем
echo '<table width="100%" border="0" cellpadding="2" id="ref_table" cellspacing="0" class="table_ref2">
              <tr class="sites_table">
                <td>Дата</td>
                <td><b>Регистраций</b></td>
              </tr>';
 
foreach($data as $date=>$count){
print'<tr>
<td class="title_text_tbl">'.$date.'</td>
<td class="title_text_tbl">'.$count.'</td>
</tr>';
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху