Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Динамическое изменение id у div элемента
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Динамическое изменение id у div элемента

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

1. kstkt - 25 Февраля, 2017 - 15:59:51 - перейти к сообщению
Добрый день, уважаемые пользователи.
Прошу помочь в ситуации.

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

На странице в всплывающем окне заносится информация по конкретному дню, передается в обработчик с помощью 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 кода нет, всё отрабатывается корректно.
2. Fart - 26 Февраля, 2017 - 21:04:36 - перейти к сообщению
Тут можно было бы помочь, но просматривая скрипт, отпадает желание.

Если составить таблицу и добавить динамики, то можно помочь написать, но при условии, что пхп будет только формировать данные и передавать js
3. kstkt - 27 Февраля, 2017 - 08:48:59 - перейти к сообщению
Вопрос решен, извините за беспокойство.

 

Powered by ExBB FM 1.0 RC1