есть таблица в бд, типа календаря, где есть число и месяц как вывести в одну таблицу месяц, и числа, в зависимости сколько их там, то есть как то так http://i080.radikal.ru/1302/8f/f6d596438744.jpg слева наша таблица в бд, а справа можно реализовать такой вывод из БД? или даже месяц лучше вывести из пределы таблицы, сверху, а таблица из 2 строчек и столбцов в зависимости сколько в базе есть, то есть дней в текущем месяце
прошу прощения, но что вы храните в календаре? вывести календарь легко и просто - время оно и в Африке время. другое дело вывести в календаре события из БД. но это тоже не такая сложная задача - в таблице всего три поля должно быть (идентификатор, дата, описание). можно еще добавить, но минимум такой будет.
вот то что "другое дело" - хранить события на каждой дате и вывести в календарный месяц одной строчкой с 1 числа по.....какое там в месяце или подскажите как и чего начать делать http://s020.radikal.ru/i716/1302/9e/f41cd283b348.jpg или есть какой то скрипт
Шашечки или ехать? Зачем забивать в базу календарь? Его можно выводить простым циклом получая количество дней в конкретном месяце конкретного года вызовом cal_days_in_month. Задача: хранить события в базе, с указанием даты, к которой "привязано" событие. Об этом говорит Ganzal. При построении календаря Вам известен год, месяц и текущий день. В каждой итерации цикла смотрите, есть ли в базе событие для этого дня и в этой ячейке пишете соответствующие пометки или ничего не пишете.
храните в таблице ММ-ЧЧ (ну или ГГГГ-ММ-ЧЧ). весь запрос к базе будет сведен к выбору всех строк, у которых месяц соответствует переданному например WHERE MONTH( `поле_даты_события` ) = MONTH( NOW( ) ) покажет все строки у которых месяц соответствует месяц текущего времени сервера. выбрали из базы, поместили в массив с ключами, соответствующими числам. далее сам календарь. в пхп легко узнать длину заданного месяца (сами найдете функцию?) и вот по этой длине надо просто дважды пройтись. первый раз просто печатаем ячейки с числами второй раз - в ячеку впишем события, если они есть в массиве, или неразрывный пробел, если событий на дату нет. Добавлено спустя 1 минуту 47 секунд: осторожнее с выражениями))) новички они такие... будут делать 28-31 запрос к базе))))
есть форма и 2 поля, где заносим день и статус на день (работает или нет, или коммандировка), по клику всё заносит ок (только не сделал ещё от повторного добавления этого же дня и месяца). вот. id|data|mouth |status 1 |01 |February|P 2 |02 |February|P 3 |03 |February|P 4 |04 |February|O и так далее и вывести в линию в 2 строчки, и столбцов количество равное количеству дат уже проблемка в выводе стоит(((
а какая проблемка-то стоит? я алгоритм описал. словами. план действий есть. теперь этот алгоритм несколькими строками реализуется на языке программирования пхп и получаем рабочий сценарий. работа выполнена, идем пить пиво. я отсюда не вижу какие проблемки это раз и два я не вижу ваших наработок чтоб понять какая проблемка. так что пока проблемкой буду лень считать. Добавлено спустя 11 минут 53 секунды: оффтоп если вы реализуете систему учета рабочего времени то рекомендую на битмапы сразу переходить. к примеру битмап abcd - где a - признак "работал", b - болел, c - командировка, d - был в офисе. 1001 (9) - работал в офисе - +к зарплате 0000 (0) - не был на работе, выходной. 0100 (4) - не работал, но болел - +к зарплате по больничному листу 1010 (10) - был в командировке - +к зарплате 0001 (1) - не работал, но был в офисе и пил кофе - вычтем из зарплаты ложку кофе и кусочек сахара. работать с ними просто: & 1 = 1 - все кто был в офисе & 9 = 9 - все кто был в офисе и работал & 8 - кому работал и тд... статусов значительно больше (см бухгалтерский учет) и битмапы немного иначе надо будет формировать, но система будет более гибкой.
Да, подумал о том же, когда написал, но понадеялся на интуицию пытливого ума. Вижу, что напрасно. Наверное, все же, не битмапы, а битовые поля? А-то сейчас начнет GD2 для проверки работников штудировать.
http://ru.wikipedia.org/wiki/Bitmapбит - бит, мап - карта. битовая карта. битовые поля это там где биты растут и вырастают в байтовые рощи))) но, согласен, в голове новичка это ближе к GD2 )))
это всё конечно здорово и битмапы, но мне так не надо заморачиваться, просто 3 статуса, которые буду писаться в бд и вовыдиться в виде календаря сеткой на месяц, который берёт из date месяца поэтому как бы и хочу узнать как вывести в таком виде, в 2 строки , всё в одной таблице. а то выводится, и на каждую строчку в таблице своя таблица в php поулчается/ Мне не надо полный табель учёта рабочего времени, а просто заносить в базу по дням, и выводить на главной для user ов
как выводите-то? я-то знаю правильный алгоритм, но я не сдам его вам без контрольной проверки знаний - вам же нужно понять, что вы сделали не так и как делать надо.
Код (Text): while ($row = mysql_fetch_assoc($result)) { $table .="<table border='1' cellspacing='1' cellpadding='1'>"; $table .= "<tr>"; $table .= "<td>".$row['data']."</td>"; $table .= "</tr>"; $table .= "<tr>"; $table .= "<td>".$row['status']."</td>"; $table .= "</tr>"; $table .= "</table>"; } echo $table; получается что каждая строка в своей таблице, наверно надо как то через условие сделать, и вывод идёт в столбец (((
БРРРРРРРРР. Код (PHP): $table=''; while($row=mysql_fetch_assoc($result)) { $table.='<table border="1" cellspacing="1" cellpadding="1"> <tr> <td> '.$row['data'].' </td> </tr> <tr> <td> '.$row['status'].' </td> </tr> </table>'; } echo $table;
сразу ошибка и нашлась - вы выводите по таблице на каждую итерацию. итераций должно быть две, как я уже говорил действия такие. 0. выбрали данные из таблицы. 1. узнали длину месяца. 2. бросили в поток начало таблицы и начало строки. 3. для всех чисел от 1 до длины месяца - печатаем по ячейке с выводом текущего значения итерации чисел месяца. 4. бросили в поток закрытие строки и открытие строки 5. для всех чисел от 1 до длины месяца - печатаем по ячейке с выводом подходящих данных для текущего "числи" из ранее выбранных из базы. 6. бросаем в поток закрытие строки и закрытие таблицы. готово. судя по вашему скрипту - вы сначала в строку все собираете, а потом кидаете в поток. ну не люблю я такой метод, но у него есть один плюс - одна итерация (вместо двух, о которых я говорил) 0. выбрали данные из таблицы. 1. узнали длину месяца. 2. для всех чисел от нуля до длины месяца 2.1 записываем в память №1 ячейку с текущим значением итерации чисел месяца 2.2 записываем в память №2 ячейку с подходящими данными для текущего "числи" из ранее выбранных из базы. 3. бросили в поток открытие_таблицы + открытие_строки + память1 + закрытие_строки + открытие_строки + память 2 + закрытие_строки + акрытие_таблицы. готово.