Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] dynamiczna tabelka i wyswietalnie w petli
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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 (IMG:style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
JakubBab
post
Post #2





Grupa: Zarejestrowani
Postów: 96
Pomógł: 2
Dołączył: 13.07.2015

Ostrzeżenie: (0%)
-----


Pokaż co masz w tym pliku bo od tych if-ów i else-if-ów aż głowa boli.
Go to the top of the page
+Quote Post
shpaque
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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. }


Ten post edytował shpaque 12.01.2017, 10:32:55
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
shpaque
post
Post #5





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
shpaque
post
Post #7





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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)?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
shpaque
post
Post #9





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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;
Go to the top of the page
+Quote Post
shpaque
post
Post #11





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


no dobrze ale co to zmienia i co z tym robic?
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
shpaque
post
Post #13





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
TotalnyLajkonik
post
Post #14





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 29.04.2015

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:40