PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 2
kstkt Отправлено: 27 Февраля, 2017 - 08:48:59 • Тема: Динамическое изменение id у div элемента • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 50
Вопрос решен, извините за беспокойство.
kstkt Отправлено: 25 Февраля, 2017 - 15:59:51 • Тема: Динамическое изменение id у div элемента • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 50
Добрый день, уважаемые пользователи.
Прошу помочь в ситуации.

Пишу страничку для внесения информации о графиках сотрудника.
Количество таблиц зависит от количества секторов, на которых зарегистрированы сотрудники.
Количество записей каждой таблицы соответствует количеству сотрудников сектора.
Количество столбцов таблицы зависит от месяца, т.е. сколько дней, столько столбцов.

На странице в всплывающем окне заносится информация по конкретному дню, передается в обработчик с помощью AJAX, данные записываются в БД (тут проблем нет), проблема в том, что необходимо каждый раз при обновлении страницы, в зависимости от выбранных параметров раскрашивать определенным цветом ячейку таблицы, т.е. у меня к td с классом .day должно добавляться ид в формате: ТАБЕЛЬНЫЙ_НОМЕР_ГОД_МЕСЯЦ_ДАТА и потом по конкретному ид, который содержит нужное мне значение я буду раскрашивать ячейки с помощью JQuery.

Прошу помочь в решении проблемы.
Код динамической отрисовки таблиц:

PHP:
скопировать код в буфер обмена
  1. //Выбор всех операторов, сортировка по рабочему сектору
  2. $sql = "SELECT t1.tabNo, t1.sector, t2.otdelname, t1.name, t3.date, t3.cause
  3.               FROM operators as t1
  4.                JOIN otdel as t2 on t1.napravlenie = t2.id
  5.                LEFT JOIN day_detail as t3 on t1.tabNo= t3.tabNo
  6.            WHERE rol = '1'  
  7.                AND admin = 0
  8.           ORDER BY sector, name ASC
  9.         ";
  10. $query = mysqli_query($connect,$sql); //Выполнение запроса в БД;
  11.  
  12. //Результат выполнения загоняем в массив peopInfo
  13. $i=0;
  14. $j=0;
  15. $sector1 = -1;
  16. $cols = $countDay; // количество столбцов, td - Определяется динамически, зависит от месяца (сколько дней, столько столбцов)
  17. while ($auxiliaryArr = mysqli_fetch_assoc($query))
  18. {      
  19.         //массив peopleInfo содержит данные: табельный номер оператора, имя оператора, № сектора, имя сектора, дату по которой вносится информация, причину изменения записи
  20.         $peopleInfo[$i]['tabNo'] = $auxiliaryArr['tabNo'];
  21.         $peopleInfo[$i]['name'] = $auxiliaryArr['name'];
  22.         $peopleInfo[$i]['sector'] = $auxiliaryArr['sector'];
  23.         $peopleInfo[$i]['otdel'] = $auxiliaryArr['otdel'];
  24.         $peopleInfo[$i]['date'] = $auxiliaryArr['date'];
  25.         $peopleInfo[$i]['cause'] = $auxiliaryArr['cause'];
  26.        
  27.         if ($auxiliaryArr['sector'] != $sector1)
  28.                 {
  29.                         if ($i!=0)
  30.                         {
  31.                                 echo '</table>';
  32.                         }
  33.                         echo '<table class = "tableEmployee" ; <colgroup> <col width = "400px"; > </colgroup>';
  34.                         echo "<br>";
  35.                         echo '<caption id="sector";> '.$peopleInfo[$j]['otdel'].' </caption>';
  36.                         echo '<tr>
  37.                                         <td id="fio"; rowspan = "2";> ФИО </td>
  38.                                         <td id="tabNo"; rowspan="2";> Табельный номер </td>
  39.                                         <td id="day"; colspan="31"; style="background:#fffff";> Дата </td>
  40.                                 </tr>';
  41.                         //Выводим в таблицу строку с датой (прим.: 01, 02, 03)
  42.                                 $dateArr = Array(); //Вспомогательный массив
  43.                                 $d = 1; //Нумерация дня с 1-го числа каждого месяца
  44.                                 while ($d <= $countDay):
  45.                                         $dateArr[$d]['day'] = $d;
  46.                                         echo '<td id="chislo"> '.htmlspecialchars($dateArr[$d]['day']).' </td> ';
  47.                                         $sector1= $auxiliaryArr['sector']; //присвоение "пустой" переменной значения id сектора из массива $auxiliaryArr
  48.                                         $d++;
  49.                                 endwhile;
  50.                         //цикл динамичной отрисовки таблиц
  51.                 }
  52.                         echo "<tr>";
  53.                         for ($td=1;$td<$cols+2;$td++)
  54.                         {      
  55.                                 $id[$j] = strtoupper($peopleInfo[$j]['tabNo']);
  56.                                
  57.                                 if($td == 1)
  58.                                 {
  59.                                         echo "<th class='fio'; title='Внести информацию по сотруднику'>".$peopleInfo[$j]['name']."</th>";
  60.                                         echo "<th class='login';> ".strtoupper($peopleInfo[$j]['tabNo'])." </th>";
  61.                                 } else
  62.                                 {
  63.                                         echo "<td class='day' >".substr($peopleInfo[$j]['cause'],0,1)."</td>";
  64.                                 }
  65.                         }              
  66.                         echo "</tr>";                          
  67.                         $i++;
  68.                         $j++;
  69. }
  70. echo "</table>";



Пролистывание месяцев и, соответственно, изменение количество столбцов делаю с помощью функции в этом же файле:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $countDay = my_calendar(array(date("Y-m-d")));
  3. function my_calendar($fill=array()){
  4.   $month_names=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
  5.         if (isset($_GET['y']))
  6.                 $y=$_GET['y'];
  7.         if (isset($_GET['m']))
  8.                 $m=$_GET['m'];
  9.         if (!isset($y) OR $y < 1970 OR $y > 2037)
  10.                 $y=date("Y");
  11.         if (!isset($m) OR $m < 1 OR $m > 12)
  12.                 $m=date("m");
  13.  
  14.         $month_stamp=mktime(0,0,0,$m,1,$y);
  15.  
  16.         $prev=date('?\m=m&\y=Y',mktime (0,0,0,$m-1,1,$y));  
  17.         $next=date('?\m=m&\y=Y',mktime (0,0,0,$m+1,1,$y));
  18.         $i=0;
  19. ?>
  20.  
  21. <table class="tableMonth">
  22.  <tr>
  23.   <td>
  24.         <table>
  25.     <tr>
  26.      <td align="left"><a href="<? echo $prev . " " ?>"><<<&nbsp;&nbsp;</a></td>
  27.      <td id="month_year" align="center"><? echo $m.".".$y ?></td>
  28.      <td align="right"><a href="<? echo $next ?>">&nbsp;&nbsp;>>></a></td>
  29.     </tr>
  30.    </table>
  31.   </td>
  32.  </tr>
  33. </table>
  34.  
  35. <?PHP
  36. echo '<hr>';
  37. if ($m == 4 || $m == 6 || $m == 9 || $m == 11){
  38.         $countdays = 30;
  39.         return $countdays;
  40. } elseif ($m == 2){
  41.         $countdays = 28;
  42.         return $countdays;
  43. } else {
  44.         $countdays = 31;
  45.         return $countdays;
  46.         }
  47. }
  48. ?>


P.S. Проблем на стороне JavaScript кода нет, всё отрабатывается корректно.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB