Отбор по всем дням за месяц

com100

Новичок
Отбор по всем дням за месяц

Здравствуйте, гуру PHP и MySQL!

Есть таблица вида

|___date____|_zakaz__|__kolvo_|
|_2005-02-03_|_заказ1_|___12__|
|_2005-02-03_|_заказ2_|___10__|
|_2005-02-04_|_заказ3_|___18__|
|_2005-02-06_|_заказ4_|___11__|
|_2005-02-06_|_заказ5_|___15__|
|_2005-02-10_|_заказ6_|___14__|
|_2005-02-15_|_заказ7_|___12__|


Есть задача, сделать выборку из этой таблицы за определенный месяц. Выборка должна выглядеть вот так

|___date____|_zakaz__|__kolvo_|
|_2005-02-01_|_NULL_|__NULL__|
|_2005-02-02_|_NULL_|__NULL__||
|_2005-02-03_|_заказ1_|___12__|
|_2005-02-03_|_заказ2_|___10__|
|_2005-02-04_|_заказ3_|___18__|
|_2005-02-05_|_NULL_|___NULL__|
|_2005-02-06_|_заказ4_|___11__|
|_2005-02-06_|_заказ5_|___15__|
|_2005-02-07_|_NULL_|___NULL__|
|_2005-02-08_|_NULL_|___NULL__|
|_2005-02-09_|_NULL_|___NULL__|
|_2005-02-10_|_заказ6_|___14__|
......
|_2005-02-15_|_заказ7_|___12__|
......

Т.е. выводился полный список дней за месяц и по ним осуществлялся отбор.

Господа, буду благодарен за любую помощь!!!
 

Фанат

oncle terrible
Команда форума
выбираешь данные как обычно, только в цикл выборки еще вставляешь код, чтобы рисовал пустые строки.
 

com100

Новичок
Фанат, уделите мне немного времени пож-та.
Т.е. Вы хотите сказать, что необходимо воспользоваться средствами PHP, а не перекладывать необходимый вывод на плечи Mysql ???

Если не трудно, подскажите, как лучше реализовать цикл на прорисовку пустых строк.

т.е. сейчас, для вывода всех строк я пользуюсь примерно следующей конструкцией

$result=mysql_query("SELECT zakaz.*
FROM zakaz where MONTH(date)=2 AND YEAR(date)=2005 order by date");
while ($row = mysql_fetch_assoc($result)){
echo "$row[date]- $row[zakaz] -$row[kolvo] ";
}
 

Фанат

oncle terrible
Команда форума
в начале цикла делаешь переменную со значением 1.
в цикле сравниваешь ее с днем из базы.
если из базы больше, то в цикле выводишь пустые строки, выводишь день из базы и запоминаешь новую дату
 

com100

Новичок
Фанат, спасибо большое.
Но у меня не срабатывает алгоритм, если есть несколько заказов на один день. Возможно, в силу своего слабоумия, я не совсем правильно понял Вас.
Если не сильно Вас затруднит, пожалуйста, напишите примерный код к Вашему алгоритму.
Еще раз Спасибо.
 

Фанат

oncle terrible
Команда форума
я не думаю, что дело в слабоумии.
скорее, просто немного не хватает опыта.
Давай-ка лучше ты приведешь код, который написал, и попробуем найти ошибку вместе
 

com100

Новичок
Смотрите.
Приведу небольшой пример

$a=array('1','1','3','5','8','8');
$b=1;
for ($i;$i<count($a);$i++)
{
if ($b<$a[$i])
{
$b++;
echo "$b<br>";
$i--;
}
else
{echo "$a[$i]<br>";
}
}

необходимо, что бы получалось
1
1
2
3
4
5
6
7
8
8

К сожалению, так не получается...
 

Фанат

oncle terrible
Команда форума
что тестовый пример сделал - хорошо.
а вот насчет $i--; - это ты явно погрячился.

лучше, мне кажется, если $b<$a[$i], то вычислять разницу, и запускать цикл, который выводит пропуски.
а потом выводить $a[$i]
 
Сверху