sokai's snippets
  4f2b39250ea26
Language: php
Length: 5,039 (164 lines)
Title: genAnwendungTabelle - extended
Creator: sokai
Date: Fri. Feb 3, 2012 02:32 AM
Visibility: Public


index / view raw
 
  1. function genAnwendungTabelle($id) {
  2. $fr_result = fnQueryNumberAndColumn('name', 'nummer', FR_TABLE, 'nummer', 'ASC');
  3. $a_result = fnQueryNumberAndColumn('name', 'nummer', A_TABLE, 'nummer', 'ASC');
  4. $fr_count = mysql_num_rows($fr_result);
  5. $a_count = mysql_num_rows($a_result);
  6.  
  7. if ($fr_count > 0 && $a_count > 0) {
  8. $data = $table = $bemerkungen = array();
  9. while($fr_arr = mysql_fetch_assoc($fr_result)) {$data['fr'][] = $fr_arr;}
  10. while($a_arr = mysql_fetch_assoc($a_result)) {$data['a'][] = $a_arr;}
  11. $table[0][] = 'Fachrichtung:';
  12. foreach($data['fr'] as $fr) {
  13. array_push($table[0], $fr['name']);
  14. }
  15. $table[1][] = 'Anwendung:';
  16. for($i = 0; $i <= $fr_count - 1; $i++) {
  17. array_push($table[1], 0);
  18. }
  19. for($i = 2; $i <= $a_count+1; $i++) {
  20. $a_nr = $i-1; // Start bei 1
  21. $table[$i][] = $data['a'][$i-2]['name'];
  22. for ($j = 1; $j <= $fr_count; $j++) {
  23. $fr_nr = $j; // Start bei 1
  24. $result = fnQueryNumberAndColumnWhere('nummer', 'fachrichtungnummer, anwendungnummer, bemerkung', OHKSHFRHA_TABLE, 'fachrichtungnummer = '.$fr_nr.' AND anwendungnummer = '.$a_nr.' AND kunststoffnummer = '.$id, 'nummer', 'ASC');
  25. $count = mysql_num_rows($result);
  26. array_push($table[$i], $count);
  27. while($bemerkungen_res = mysql_fetch_assoc($result)) {$bemerkungen[] = $bemerkungen_res;}
  28. }
  29. }
  30. $bemerkungen_count = array();
  31. $bemerkungen_count2 = array();
  32. foreach ($bemerkungen as $bemerkung) {
  33. $a = $bemerkung['anwendungnummer'];
  34. $fr = $bemerkung['fachrichtungnummer'];
  35. if (!isset($bemerkungen_count2[$a])) {
  36. $bemerkungen_count2[$a] = 0;
  37. }
  38. if (!isset($bemerkungen_count[$fr.'_'.$a])) {
  39. $bemerkungen_count[$fr.'_'.$a] = 0;
  40. }
  41. if (!empty($bemerkung['bemerkung'])) {
  42. $bemerkungen_count2[$a]++;
  43. $bemerkungen_count[$fr.'_'.$a]++;
  44. }
  45. }
  46. echo ' <table id="framatrix">'."n";
  47. $trcount = $litref_count = 1;
  48. $thead = $tfoot = $tbody = FALSE;
  49. foreach ($table as $rows => $row) {
  50. if (is_odd($trcount)) {
  51. $trclass = 'odd';
  52. } else {
  53. $trclass = 'even';
  54. }
  55. if ($trcount === 1) {
  56. echo ' <thead>'."n";
  57. echo ' <tr class="'.$trclass.'">'."n";
  58. } elseif ($trcount === 2) {
  59. echo ' <tr class="'.$trclass.'">'."n";
  60. $thead = TRUE;
  61. } elseif ($trcount === 3) {
  62. echo ' <tbody>'."n";
  63. echo ' <tr class="'.$trclass.'">'."n";
  64. $tbody = TRUE;
  65. } elseif ($trcount === count($table)) {
  66. echo ' </tbody>'."n";
  67. echo ' <tfoot>'."n";
  68. echo ' <tr>'."n";
  69. $tfoot = TRUE;
  70. } else {
  71. echo ' <tr class="'.$trclass.'">'."n";
  72. }
  73. $tdcount = 1;
  74. foreach ($row as $col => $cell) {
  75. if (is_odd($tdcount)) {
  76. $tdclass = 'odd';
  77. } else {
  78. $tdclass = 'even';
  79. }
  80.  
  81. $footnote = $spanclass = '';
  82. if ($cell === 0) {
  83. $celltext = '';
  84. } else {
  85. $celltext = $cell;
  86. }
  87.  
  88. if ($trcount > 2 && $tdcount > 1) {
  89. if ($tdcount != 1) {
  90. if (empty($celltext)) {
  91. $spanclass = 'empty_counter';
  92. } else {
  93. if (!in_array($trcount, array(1, 2)) && $tdcount > 1) {
  94. $spanclass = 'fra_counter';
  95. $fra = ($tdcount - 1).'_'.($trcount - 2);
  96. if (array_key_exists($fra, $bemerkungen_count)) {
  97. $footnote = '<cite class="footnote"><a href="#litref_'.$litref_count.'">'.$litref_count.'</a></cite>';
  98. $litref_count++;
  99. }
  100. }
  101. }
  102. } else {
  103. $spanclass = 'anwendung';
  104. }
  105. } else {
  106. $footnote = '';
  107. if ($trcount === 1) {
  108. $spanclass = 'fachrichtung';
  109. } else {
  110. $spanclass = 'anwendung';
  111. }
  112. }
  113.  
  114. if ($thead || ($trcount === 1 && !$thead)) {
  115. $out = ' <th ';
  116. } else {
  117. $out = ' <td ';
  118. }
  119. $out .= 'class="'.$tdclass.'"><span class="'.$spanclass.'">'.$celltext.'</span>';
  120. if (!empty($footnote)) {
  121. $out .= $footnote;
  122. }
  123. if ($thead || ($trcount === 1 && !$thead)) {
  124. $out .= '</th>';
  125. } else {
  126. $out .= '</td>';
  127. }
  128. echo $out."n";
  129. $tdcount++;
  130. }
  131. echo ' </tr>'."n";
  132. if ($thead) {
  133. echo ' </thead>'."n";
  134. $thead = FALSE;
  135. } elseif ($trcount === count($table)-1) {
  136. $tbody = FALSE;
  137. } elseif ($tfoot) {
  138. echo ' </tfoot>'."n";
  139. $tfoot = FALSE;
  140. }
  141. $trcount++;
  142. }
  143. echo ' </table>'."n";
  144. if ($litref_count > 1) {
  145. echo ' <div ="litref">'."n";
  146. $litref_count = 1;
  147. foreach ($bemerkungen_count as $key => $count) {
  148. $out = ' <p id="litref_'.$litref_count.'"><sup>'.$litref_count.'</sup> ';
  149. $sourceline = '';
  150. $fra = explode('_', $key);
  151. $fr = $fra[0];
  152. $a = $fra[1];
  153. foreach ($bemerkungen as $bemerkung) {
  154. if ($bemerkung['fachrichtungnummer'] === $fr && $bemerkung['anwendungnummer'] === $a) $sourceline .= $bemerkung['bemerkung'].'; ';
  155. }
  156. $sourceline = rtrim($sourceline, '; ');
  157. $out .= $sourceline.'</p>'."n";
  158. echo $out;
  159. $litref_count++;
  160. }
  161. echo ' </div>'."n";
  162. }
  163. }
  164. }