Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] dynamiczna tabelka i wyswietalnie w petli
Forum PHP.pl > Forum > Przedszkole
shpaque
Witam serdecznie i ponownie - myslalem ze mam archwalne swoje posty, ale niestety chyba serwer by tego nie wytrzymal.
Proszę o pomoc przy zrobieniu dynamicznej tabelki (3 kostki w linii, czyli 3 td w jednym tr smile.gif ) w zaleznosci od ilosci wpisow znalezionych w pliku. Kod wyglada nastepujaco:

  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. $category = $_GET['kat'];
  6. $grupas = array();
  7. $titles = array();
  8. $cat_all = 0;
  9. $cat_one = 0;
  10. $cat_two = 0;
  11. $cat_three = 0;
  12. $cat_four = 0;
  13. $cat_five = 0;
  14. $database = './db/actuals.db';
  15. $items = file($database);
  16.  
  17. foreach($items as $line)
  18. {
  19. list($grupa, $title, $article) = explode('|', trim($line));
  20. $grupas[$cat_all] = $grupa;
  21. $titles[$cat_all] = $title;
  22.  
  23. if ($grupa == "1")
  24. {
  25. $grupas[$cat_one] = $grupa;
  26. $cat_one++;
  27. }
  28. else if ($grupa == "2")
  29. {
  30. $grupas[$cat_two] = $grupa;
  31. $cat_two++;
  32. }
  33. else if ($grupa == "3")
  34. {
  35. $grupas[$cat_three] = $grupa;
  36. $cat_three++;
  37. }
  38. else if ($grupa == "4")
  39. {
  40. $grupas[$cat_four] = $grupa;
  41. $cat_four++;
  42. }
  43. else if ($grupa == "5")
  44. {
  45. $grupas[$cat_five] = $grupa;
  46. $cat_five++;
  47. }
  48. $cat_all++;
  49. }
  50.  
  51. if ($category == "1")
  52. {
  53. $rodzaj = "Budownictwo Mieszkaniowe";
  54. $i = $cat_one;
  55. }
  56. else if ($category == "2")
  57. {
  58. $rodzaj = "Obiekty Użyteczności Publicznej";
  59. $i = $cat_two;
  60. }
  61. else if ($category == "3")
  62. {
  63. $rodzaj = "Przestrzeń Publiczna";
  64. $i = $cat_three;
  65. }
  66. else if ($category == "4")
  67. {
  68. $rodzaj = "Obiekty Handlowe";
  69. $i = $cat_four;
  70. }
  71. else if ($category == "5")
  72. {
  73. $rodzaj = "Pozostałe Realizacje";
  74. $i = $cat_five;
  75. }
  76. else
  77. {
  78. $rodzaj = "Wszystkie";
  79. $i = $cat_all;
  80. }
  81.  
  82. echo "<table style='width:100%;text-align:center;' rows=>";
  83. echo "<div class='tytul'>";
  84. echo "<strong>$titles[$i]</strong>";
  85. echo "<br>";
  86. echo "<div class='kategoria'>Kategoria: <strong>$rodzaj</strong></span>";
  87. echo "</div></div>";
  88. echo "</table>";
  89. echo $i;
  90. ?>
JakubBab
Pokaż co masz w tym pliku bo od tych if-ów i else-if-ów aż głowa boli.
shpaque
W pliku nic nazdzwyczajnego, np:

  1. 1|Tytul tytul projektu|Opis projektu ble ble ble
  2. 4|Tytul innego projektu|Opis innego projektu ble ble ble



EDIT

Wziąłem sobie na tapoetę np grupę nr 3. Teraz tak. o ile mi liczy tyle co trzeba, to teraz jak wyswietlic ma (od konca tak jak petla for) tylko rekordy z grupy 3?

  1. else if ($category == "3")
  2. {
  3. $rodzaj = "Przestrzeń Publiczna";
  4. $i = $cat_three;
  5.  
  6. echo "<div class='kategoria'>Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  7. echo "<table style='width:100%;text-align:center;' rows=>";
  8.  
  9. for($x = $i - 1; $x >= 0; $x--)
  10. {
  11. echo "<div class='tytul'>";
  12. echo "<strong>$titles[$x]</strong>";
  13. echo "</div>";
  14. echo "<br>";
  15. }
  16.  
  17. echo "</table>";
  18. echo "<br>";
  19. }
nospor
Co do 3td w jednym tr:
http://forum.nospor.pl/programowanie/php/d...co-4-ft337.html

Pamietaj ze nie tylko na tym forum znajdziesz kod. Google ma tego wiele
shpaque
Jakims cudem znalazłem dzielenie w swoim poście sprzed 2 lat, co dziwne Nospor - wcale nie mam tego w historii na koncie, dopiero przez wyszukiwarkę forum musialem znalezc...

  1. $i = $cat_three;
  2. $lk = 0; //Wartość początkowa liczby komorek
  3. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  4.  
  5. echo "<div class='kategoria'>Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  6. echo "<table style='width:100%;text-align:center;' col width='30%'>";
  7.  
  8. for($x = $i - 1; $x >= 0; $x--)
  9. {
  10. $lk++;
  11. echo "<td>";
  12. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  13. echo "<div class='cell tytul'>";
  14. echo "<strong>$titles[$x]</strong>";
  15. echo "</div>";
  16. echo "</a>";
  17. echo "</td>";
  18. if ($lk == $lkw)
  19. {
  20. echo "<tr>";
  21. $lk = 0;
  22. }
  23. }
  24. echo "</table>";
  25. echo "<br>";




Pozostaje problem jak zrobic zeby wyswietlal mi tylko rekordy tej kategorii, ktora jest zaznaczona (pobrana w $_GET)
nospor
Albo ja jestem slepy albo w swoim kodzie nie masz </tr> wiec generujesz niepoprawny kod tabelki. A ze ci to dziala to tylko i wylacznie dobra wola przegladarki.

Co do postow to one sa. Nie moja wina ze nie umiesz korzystac ze swojego profilu tongue.gif
shpaque
ok, dzieki to teraz pozostaja 2 nurtujace mnie dalej rzeczy:

- jak zrobic zeby wyswietlal TYLKO te rekordy, ktore sa zgodne grupą (cyfra) z pobranym $_GET['kat']?
- jak zrobic sztywne odstepy w tabeli miedzy wierszami (tr)?
nospor
ad1)
Caly ten kod ala:
$grupas[$cat_four] = $grupa;
$cat_four++;

To jakis zart. Wypadaloby to poprawic. Przeciez ty teraz o tym
$grupas[$cat_four] = $grupa;
nadpisujesz sobie rekordy.

ad2) css margin
shpaque
Niestety i w css i w stylu bezposerdnio tabeli cyz tr nic nie dziala - mniejsza o to


Mozesz mnie naprowadzic jak to zrobic zeby zarowno zliczal ile jest rekordow danej grupy, dodatkowo je porzadkowal tak zeby je wyswietlic po kolei od konca pliku?
nospor
Cytat
Niestety i w css i w stylu bezposerdnio tabeli cyz tr nic nie dziala
Albo myslimy o czym innym albo poprostu zle to zrobiles.


Nie
$grupas[$cat_four] = $grupa;
a:
$grupas[] = $grupa;
shpaque
no dobrze ale co to zmienia i co z tym robic?
viking
Zrób sobie prosty test.
$a[0] = 1;
$a[0] = 2;

echo $a[0];
$b[] =1;
$b[] =2;

var_dump($b);

Przypisujesz ciągle do tego samego indeksu. Nie łatwiej było trzymać dane w sqlite?
shpaque
już mam. Troche zapewne na okolo, ale wszystklo dziala i caly kod wyglada tak (a moze da sie go jakos po prostu skrocic)?:

  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. $category = 0;
  5. if (isset($_GET['kat'])) {$category = $_GET['kat'];}
  6. $titles = array();
  7. $i = 0;
  8. $database = './db/actuals.db';
  9. $items = file($database);
  10.  
  11. if ($category == "1")
  12. {
  13. $rodzaj = "Budownictwo Mieszkaniowe";
  14. foreach($items as $line)
  15. {
  16. list($grupa, $title, $article) = explode('|', trim($line));
  17. if ($grupa == $category)
  18. {
  19. $titles[] = $title;
  20. $i++;
  21. }
  22. }
  23. $lk = 0; //Wartość początkowa liczby komorek
  24. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  25.  
  26. echo "<div class='kategoria'>";
  27. echo "Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  28. echo "<table class='tabelka'>";
  29.  
  30. for($x = $i - 1; $x >= 0; $x--)
  31. {
  32. $lk++;
  33. echo "<td class='tede'>";
  34. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  35. echo "<div class='cell tytul'>";
  36. echo "<strong>$titles[$x]</strong>";
  37. echo "</div>";
  38. echo "<div class='pasek-blue'></div>";
  39. echo "<div class='pasek-trans'></div>";
  40. echo "</a>";
  41. echo "</td>";
  42. if ($lk == $lkw)
  43. {
  44. echo "</tr>";
  45. echo "<tr>";
  46. $lk = 0;
  47. }
  48. }
  49. echo "</table>";
  50. echo "<br>";
  51. }
  52. else if ($category == "2")
  53. {
  54. $rodzaj = "Obiekty Użyteczności Publicznej";
  55. foreach($items as $line)
  56. {
  57. list($grupa, $title, $article) = explode('|', trim($line));
  58. if ($grupa == $category)
  59. {
  60. $titles[] = $title;
  61. $i++;
  62. }
  63. }
  64. $lk = 0; //Wartość początkowa liczby komorek
  65. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  66.  
  67. echo "<div class='kategoria'>";
  68. echo "Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  69. echo "<table class='tabelka'>";
  70.  
  71. for($x = $i - 1; $x >= 0; $x--)
  72. {
  73. $lk++;
  74. echo "<td class='tede'>";
  75. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  76. echo "<div class='cell tytul'>";
  77. echo "<strong>$titles[$x]</strong>";
  78. echo "</div>";
  79. echo "<div class='pasek-blue'></div>";
  80. echo "<div class='pasek-trans'></div>";
  81. echo "</a>";
  82. echo "</td>";
  83. if ($lk == $lkw)
  84. {
  85. echo "</tr>";
  86. echo "<tr>";
  87. $lk = 0;
  88. }
  89. }
  90. echo "</table>";
  91. echo "<br>";
  92. }
  93. else if ($category == "3")
  94. {
  95. $rodzaj = "Przestrzeń Publiczna";
  96. foreach($items as $line)
  97. {
  98. list($grupa, $title, $article) = explode('|', trim($line));
  99. if ($grupa == $category)
  100. {
  101. $titles[] = $title;
  102. $i++;
  103. }
  104. }
  105. $lk = 0; //Wartość początkowa liczby komorek
  106. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  107.  
  108. echo "<div class='kategoria'>";
  109. echo "Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  110. echo "<table class='tabelka'>";
  111.  
  112. for($x = $i - 1; $x >= 0; $x--)
  113. {
  114. $lk++;
  115. echo "<td class='tede'>";
  116. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  117. echo "<div class='cell tytul'>";
  118. echo "<strong>$titles[$x]</strong>";
  119. echo "</div>";
  120. echo "<div class='pasek-blue'></div>";
  121. echo "<div class='pasek-trans'></div>";
  122. echo "</a>";
  123. echo "</td>";
  124. if ($lk == $lkw)
  125. {
  126. echo "</tr>";
  127. echo "<tr>";
  128. $lk = 0;
  129. }
  130. }
  131. echo "</table>";
  132. echo "<br>";
  133. }
  134. else if ($category == "4")
  135. {
  136. $rodzaj = "Obiekty Handlowe";
  137. foreach($items as $line)
  138. {
  139. list($grupa, $title, $article) = explode('|', trim($line));
  140. if ($grupa == $category)
  141. {
  142. $titles[] = $title;
  143. $i++;
  144. }
  145. }
  146. $lk = 0; //Wartość początkowa liczby komorek
  147. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  148.  
  149. echo "<div class='kategoria'>";
  150. echo "Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  151. echo "<table class='tabelka'>";
  152.  
  153. for($x = $i - 1; $x >= 0; $x--)
  154. {
  155. $lk++;
  156. echo "<td class='tede'>";
  157. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  158. echo "<div class='cell tytul'>";
  159. echo "<strong>$titles[$x]</strong>";
  160. echo "</div>";
  161. echo "<div class='pasek-blue'></div>";
  162. echo "<div class='pasek-trans'></div>";
  163. echo "</a>";
  164. echo "</td>";
  165. if ($lk == $lkw)
  166. {
  167. echo "</tr>";
  168. echo "<tr>";
  169. $lk = 0;
  170. }
  171. }
  172. echo "</table>";
  173. echo "<br>";
  174. }
  175. else if ($category == "5")
  176. {
  177. $rodzaj = "Pozostałe Realizacje";
  178. foreach($items as $line)
  179. {
  180. list($grupa, $title, $article) = explode('|', trim($line));
  181. if ($grupa == $category)
  182. {
  183. $titles[] = $title;
  184. $i++;
  185. }
  186. }
  187. $lk = 0; //Wartość początkowa liczby komorek
  188. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  189.  
  190. echo "<div class='kategoria'>";
  191. echo "Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  192. echo "<table class='tabelka'>";
  193.  
  194. for($x = $i - 1; $x >= 0; $x--)
  195. {
  196. $lk++;
  197. echo "<td class='tede'>";
  198. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  199. echo "<div class='cell tytul'>";
  200. echo "<strong>$titles[$x]</strong>";
  201. echo "</div>";
  202. echo "<div class='pasek-blue'></div>";
  203. echo "<div class='pasek-trans'></div>";
  204. echo "</a>";
  205. echo "</td>";
  206. if ($lk == $lkw)
  207. {
  208. echo "</tr>";
  209. echo "<tr>";
  210. $lk = 0;
  211. }
  212. }
  213. echo "</table>";
  214. echo "<br>";
  215. }
  216. else
  217. {
  218. $rodzaj = "Wszystkie Realizacje i Projekty";
  219. foreach($items as $line)
  220. {
  221. list($grupa, $title, $article) = explode('|', trim($line));
  222. $titles[] = $title;
  223. $i++;
  224. }
  225. $lk = 0; //Wartość początkowa liczby komorek
  226. $lkw = 3; //Liczba komorek do wyswietlenia w wierszu
  227.  
  228. echo "<div class='kategoria'>";
  229. echo "Wybrana kategoria: <strong>$rodzaj</strong></span></div>";
  230. echo "<table class='tabelka'>";
  231.  
  232. for($x = $i - 1; $x >= 0; $x--)
  233. {
  234. $lk++;
  235. echo "<td class='tede'>";
  236. echo "<a href='./opis.php?tytul=$titles[$x]'>";
  237. echo "<div class='cell tytul'>";
  238. echo "<strong>$titles[$x]</strong>";
  239. echo "</div>";
  240. echo "<div class='pasek-blue'></div>";
  241. echo "<div class='pasek-trans'></div>";
  242. echo "</a>";
  243. echo "</td>";
  244. if ($lk == $lkw)
  245. {
  246. echo "</tr>";
  247. echo "<tr>";
  248. $lk = 0;
  249. }
  250. }
  251. echo "</table>";
  252. echo "<br>";
  253. }
  254. ?>
TotalnyLajkonik
Napisałeś sześc razy ten sam kod i pytasz czy da się skrócić?
  1. foreach($linie as $linia){
  2. list($kategoria, $tytul, $artykul) = explode('|', $linia);
  3.  
  4. if($wszystkie_kategorie || $kategoria == $zadana_kategoria){
  5. $tytuly[] = $tytul;
  6. }
  7. }

  1. $tabela = array_chunk($tytuly, 3);
  2.  
  3. $html = '<table>';
  4. foreach($tabela as $rzad){
  5. $html.= '<tr>';
  6. foreach($rzad as $element){
  7. $html.= '<td>'.$element.'</td>';
  8. }
  9. $html.= '</tr>';
  10. }
  11. $html.= '</table>';
  12.  
  13. echo $html;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.