Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2017
Помог: 0 раз(а)
|
Добрый день, уважаемые пользователи.
Прошу помочь в ситуации.
Пишу страничку для внесения информации о графиках сотрудника.
Количество таблиц зависит от количества секторов, на которых зарегистрированы сотрудники.
Количество записей каждой таблицы соответствует количеству сотрудников сектора.
Количество столбцов таблицы зависит от месяца, т.е. сколько дней, столько столбцов.
На странице в всплывающем окне заносится информация по конкретному дню, передается в обработчик с помощью AJAX, данные записываются в БД (тут проблем нет), проблема в том, что необходимо каждый раз при обновлении страницы, в зависимости от выбранных параметров раскрашивать определенным цветом ячейку таблицы, т.е. у меня к td с классом .day должно добавляться ид в формате: ТАБЕЛЬНЫЙ_НОМЕР_ГОД_МЕСЯЦ_ДАТА и потом по конкретному ид, который содержит нужное мне значение я буду раскрашивать ячейки с помощью JQuery.
Прошу помочь в решении проблемы.
Код динамической отрисовки таблиц:
PHP:
скопировать код в буфер обмена
//Выбор всех операторов, сортировка по рабочему сектору $sql = "SELECT t1.tabNo, t1.sector, t2.otdelname, t1.name, t3.date, t3.cause FROM operators as t1 JOIN otdel as t2 on t1.napravlenie = t2.id LEFT JOIN day_detail as t3 on t1.tabNo= t3.tabNo WHERE rol = '1' AND admin = 0 ORDER BY sector, name ASC "; $query = mysqli_query($connect,$sql); //Выполнение запроса в БД; //Результат выполнения загоняем в массив peopInfo $i=0; $j=0; $sector1 = -1; $cols = $countDay; // количество столбцов, td - Определяется динамически, зависит от месяца (сколько дней, столько столбцов) { //массив peopleInfo содержит данные: табельный номер оператора, имя оператора, № сектора, имя сектора, дату по которой вносится информация, причину изменения записи $peopleInfo[$i]['tabNo'] = $auxiliaryArr['tabNo']; $peopleInfo[$i]['name'] = $auxiliaryArr['name']; $peopleInfo[$i]['sector'] = $auxiliaryArr['sector']; $peopleInfo[$i]['otdel'] = $auxiliaryArr['otdel']; $peopleInfo[$i]['date'] = $auxiliaryArr['date']; $peopleInfo[$i]['cause'] = $auxiliaryArr['cause']; if ($auxiliaryArr['sector'] != $sector1) { if ($i!=0) { echo '</table>'; } echo '<table class = "tableEmployee" ; <colgroup> <col width = "400px"; > </colgroup>'; echo "<br>"; echo '<caption id="sector";> '.$peopleInfo[$j]['otdel'].' </caption>'; echo '<tr> <td id="fio"; rowspan = "2";> ФИО </td> <td id="tabNo"; rowspan="2";> Табельный номер </td> <td id="day"; colspan="31"; style="background:#fffff";> Дата </td> </tr>'; //Выводим в таблицу строку с датой (прим.: 01, 02, 03) $dateArr = Array(); //Вспомогательный массив $d = 1; //Нумерация дня с 1-го числа каждого месяца while ($d <= $countDay): $dateArr[$d]['day'] = $d; $sector1= $auxiliaryArr['sector']; //присвоение "пустой" переменной значения id сектора из массива $auxiliaryArr $d++; endwhile; //цикл динамичной отрисовки таблиц } echo "<tr>"; for ($td=1;$td<$cols+2;$td++) { if($td == 1) { echo "<th class='fio'; title='Внести информацию по сотруднику'>".$peopleInfo[$j]['name']."</th>"; echo "<th class='login';> ".strtoupper($peopleInfo[$j]['tabNo'])." </th>"; } else { echo "<td class='day' >".substr($peopleInfo[$j]['cause'],0,1)."</td>"; } } echo "</tr>"; $i++; $j++; } echo "</table>";
Пролистывание месяцев и, соответственно, изменение количество столбцов делаю с помощью функции в этом же файле:
PHP:
скопировать код в буфер обмена
<?PHP $countDay = my_calendar (array(date("Y-m-d"))); function my_calendar ($fill=array()){ $month_names=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"); $y=$_GET['y']; $m=$_GET['m']; if (!isset($y) OR $y < 1970 OR $y > 2037 ) if (!isset($m) OR $m < 1 OR $m > 12 ) $month_stamp=mktime(0 ,0 ,0 ,$m,1 ,$y); $prev=date('?\m=m&\y=Y',mktime (0 ,0 ,0 ,$m-1 ,1 ,$y)); $next=date('?\m=m&\y=Y',mktime (0 ,0 ,0 ,$m+1 ,1 ,$y)); $i=0; ?> <table class="tableMonth"> <tr> <td> <table> <tr> <td align="left"><a href="<? echo $prev . " " ?>"><<< </a></td> <td id="month_year" align="center"><? echo $m.".".$y ?></td> <td align="right"><a href="<? echo $next ?>"> >>></a></td> </tr> </table> </td> </tr> </table> <?PHP echo '<hr>'; if ($m == 4 || $m == 6 || $m == 9 || $m == 11){ $countdays = 30; return $countdays; } elseif ($m == 2){ $countdays = 28; return $countdays; } else { $countdays = 31; return $countdays; } } ?>
P.S. Проблем на стороне JavaScript кода нет, всё отрабатывается корректно.(Отредактировано автором: 25 Февраля, 2017 - 16:07:34)
|