PHP.SU

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


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

> Описание: Не получается реализовать уникальные ид каждой ячейки таблицы
kstkt
Отправлено: 25 Февраля, 2017 - 15:59:51
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




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

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

На странице в всплывающем окне заносится информация по конкретному дню, передается в обработчик с помощью 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 кода нет, всё отрабатывается корректно.

(Отредактировано автором: 25 Февраля, 2017 - 16:07:34)

 
 Top
Fart
Отправлено: 26 Февраля, 2017 - 21:04:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




Тут можно было бы помочь, но просматривая скрипт, отпадает желание.

Если составить таблицу и добавить динамики, то можно помочь написать, но при условии, что пхп будет только формировать данные и передавать js
 
 Top
kstkt
Отправлено: 27 Февраля, 2017 - 08:48:59
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Вопрос решен, извините за беспокойство.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB