Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]pętla w tabeli
kmpl
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Mam tabelę gdzie chciałbym aby na stałe było 21 wierszy (taki wzór), ale nie zawsze wszystkie będą wypełnione danymi - w zależności od wpisu w bazie.
Układ wygląda tak:

  1. <table id=spis>
  2. <?
  3. echo "<tr>";
  4. echo "<td class ='lp'rowspan=2><center>Lp</center></td>";
  5. echo "<td class ='nazwa'rowspan=2><center>Nazwa</center></td>";
  6. echo "<td rowspan=2><center>Oznaczenie</center></td>";
  7. echo "<td rowspan=2><center>Jedn. miary</center></td>";
  8. echo "<td colspan=8><center>Stan w dniu</center></td>";
  9. echo "</tr>";
  10.  
  11.  
  12. echo "<tr>";
  13.  
  14. echo "<td height=120></td>";
  15.  
  16. echo "<td></td>";
  17. echo "<td></td>";
  18. echo "<td></td>";
  19. echo "<td></td>";
  20. echo "<td></td>";
  21. echo "<td></td>";
  22. echo "<td></td>";
  23. echo "</tr>";
  24.  
  25.  
  26. foreach ($list as $item) {
  27.  
  28. echo "<tr>";
  29. echo "<td>1.</td>";
  30. echo "<td>".$item->nazwa."</td>";
  31. echo "<td>".$item->JIM."</td>";
  32. echo "<td>szt.</td>";
  33. echo "<td></td>";
  34. echo "<td></td>";
  35. echo "<td></td>";
  36. echo "<td></td>";
  37. echo "<td></td>";
  38. echo "<td></td>";
  39. echo "<td></td>";
  40. echo "<td></td>";
  41. echo "</tr>";
  42.  
  43.  
  44. }
  45.  


Chodzi o to żeby liczba porządkowa była od 1 do 21 na stałe, tylko jak to wykonać w kodzie php?
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Przed pętlą $i = 1, a w pętli $i++. Kombinuj. Może być nawet bez dodatkowej zmiennej o ile klucze tablicy są u Ciebie po kolei. Wówczas kombinuj z foreach($list as $i => $item).
Go to the top of the page
+Quote Post
kmpl
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Spróbuję tak zrobić.

Witam, nie bardzo sobie radzę z pętlą.
Dodałem przed foreach:


  1.  
  2. $lp=1;
  3. foreach ($list as $item) {
  4.  


Za foreach:
  1. $lp++;
  2.  
  3. echo "<tr>";
  4. echo "<td>1.</td>";
  5. echo "<td>".$item->nazwa."</td>";
  6. echo "<td>".$item->JIM."</td>";
  7. echo "<td>szt.</td>";
  8. echo "<td></td>";
  9. echo "<td></td>";
  10. echo "<td></td>";
  11. echo "<td></td>";
  12. echo "<td></td>";
  13. echo "<td></td>";
  14. echo "<td></td>";
  15. echo "<td></td>";
  16. echo "</tr>";
  17.  


I nie wiem co dalej. Musi być zawsze wyświetlonych 21 wierszy i w L.p kolejno 1,2,3....21.

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




echo "<td>1.</td>";
......
No ale użyj te $lp.... po coś chyba kazano ci je wstawić....

echo "<td>$lp.</td>";
Go to the top of the page
+Quote Post
kmpl
post
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


OK. Tak zrobiłem. Zmieniłem $lp = 0. Mam już L.p od 1 i po kolei, ale numeruje mi do ilości rekordów w bazie. A powinno do 21 bez względu ile jest rekorów (a w bazie i tak nie będzie więcej niż 21).
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




No to skoro po pętli, masz liczbę mniejszą od 21 to przy pomocy FOR dogeneruj pozostałe liczby/wiersze
Go to the top of the page
+Quote Post
kmpl
post
Post #7





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Teraz to się sam zapętliłem. Dodaje mi po 21 wierszy wszystkich elementów z bazy:

  1. $lp = 0;
  2.  
  3. foreach ($list as $item)
  4.  
  5. for ($i=0; $i<21; $i++)
  6.  
  7. {
  8.  
  9. $lp = $i+1;
  10.  
  11.  
  12. echo "<tr>";
  13. echo "<td>$lp.</td>";
  14. echo "<td>".$item->nazwa."</td>";
  15. echo "<td>".$item->JIM."</td>";
  16. echo "<td>szt.</td>";
  17. echo "<td></td>";
  18. echo "<td></td>";
  19. echo "<td></td>";
  20. echo "<td></td>";
  21. echo "<td></td>";
  22. echo "<td></td>";
  23. echo "<td></td>";
  24. echo "<td></td>";
  25. echo "</tr>";
  26.  
  27.  
  28. }
  29.  
  30.  
  31.  
  32. echo "</table>";
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




FOR ma być po FOREACH (a nie w FOREACH) i to dopiero wtedy, gdy FOREACH wygenerował mniej niż 21.
Go to the top of the page
+Quote Post
kmpl
post
Post #9





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Wyrzuciłem za foreach a i tak się sypie wszystko...
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




To może pokaż nam kod po zmianach? To może napisz na czym polega "sypanie się"? Czy osobie, która jest na forum od jakiegoś czasu, trzeba takie rzeczy jeszcze pisać?
Go to the top of the page
+Quote Post
kmpl
post
Post #11





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Sorki:

  1.  
  2. $lp = 0;
  3.  
  4. foreach ($list as $item)
  5.  
  6.  
  7.  
  8.  
  9. {
  10.  
  11. $lp = $i+1;
  12.  
  13. //$list as $lp->$item;
  14. echo "<tr>";
  15. echo "<td>$lp.</td>";
  16. echo "<td>".$item->nazwa."</td>";
  17. echo "<td>".$item->JIM."</td>";
  18. echo "<td>szt.</td>";
  19. echo "<td></td>";
  20. echo "<td></td>";
  21. echo "<td></td>";
  22. echo "<td></td>";
  23. echo "<td></td>";
  24. echo "<td></td>";
  25. echo "<td></td>";
  26. echo "<td></td>";
  27. echo "</tr>";
  28.  
  29.  
  30. }
  31. for ($i=0; $i<21; $i++)
  32. {
  33. $lp = $i+1;
  34. $item = array_key_exists ($i, $list) $list[i];
  35. }
  36.  
  37.  
  38.  
  39. echo "</table>";
  40.  
  41.  


syntac error
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Cytat
syntac error

(IMG:style_emoticons/default/facepalmxd.gif)
Jak dostajesz błąd, to należy go podać dokładnie, włącznie z linijką, której dotyczy.... Ogarnij się chłopie troche...


$item = array_key_exists ($i, $list) $list[i];
Co niby ta linijka ma robić?
Go to the top of the page
+Quote Post
kmpl
post
Post #13





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Zacząłem cos kombinować, ale bez efektu.

Syntax error, unexpected T_VARIABLE - on line 138
Go to the top of the page
+Quote Post
goukan
post
Post #14





Grupa: Zarejestrowani
Postów: 88
Pomógł: 1
Dołączył: 25.03.2013

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


Dobrze widze? W kodzie który podałeś jest 40 linijek kodu, a nie 138
Go to the top of the page
+Quote Post
kmpl
post
Post #15





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


  1. <?php
  2. /**
  3.  * @package Katalog
  4.  * @subpackage C:
  5.  * @author {@link }
  6.  * @author Created on 30-May-2012
  7.  * @license GNU/GPL
  8.  */
  9.  
  10. //-- No direct access
  11. defined('_JEXEC') || die('=;)');
  12.  
  13.  
  14.  
  15. JHTML::stylesheet('general.css', 'templates/beez_20/css/');
  16. ?>
  17.  
  18.  
  19. <?php
  20. $db = JFactory::getDBO();
  21. $warunek = $_GET['id'];
  22.  
  23. $query = $db->getQuery(true);
  24. $query
  25. ->select(array('a.*', 'b.nazwa', 'b.JIM'))
  26. ->from('#__lok_sprzetu AS a')
  27. ->join('INNER', '#__sprzet AS b ON (a.id_sprzet = b.id_sprzetu)')
  28. ->where(' a.id_pom = "'.$warunek.'" ');
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. /*
  36. $query->select('*');
  37. $query->from('#__lok_sprzetu');
  38. //$query->leftJoin('#__sprzet AS sprzet ON a.id_sprzet = sprzet.id_sprzetu');
  39.  
  40. //$query->where('id_pom = '.$warunek);
  41. */
  42. $db->setQuery($query);
  43.  
  44. $list = $db->loadObjectList();
  45. $item_title = $item->title;
  46. $db->setQuery($query);
  47. $row = $db->loadObjectList();
  48.  
  49. $tabela = $this->get('getCategory');
  50.  
  51. ?>
  52.  
  53.  
  54. <!doctype html>
  55. <html lang="pl">
  56. <head>
  57. <meta charset="utf-8" />
  58. <title class="spis">Spis sprzętu w pomieszczeniu</title>
  59. <link rel="stylesheet" href="style.css" type="text/css" />
  60. <link rel="stylesheet" href="style_print.css" media="print" type="text/css" />
  61. <!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
  62. </head>
  63. <body class="spis">
  64. <div id="container">
  65. <div class="title">
  66.  
  67. <span class="name">.........................................................
  68. <br>(Nazwa)</br></span>
  69. <span class="date">.........................................................
  70. <br>(Numer budynku/kompleksu)</br></span>
  71.  
  72. </div>
  73.  
  74. <br><br / >
  75. <br><br / >
  76.  
  77.  
  78. <h1 class='spis'><center>SPIS SPRZĘTU W POMIESZCZENIU NR...</center></h1>
  79. <br><br / >
  80.  
  81. <table id=spis>
  82. <?
  83. echo "<tr>";
  84. echo "<td class ='lp'rowspan=2><center>Lp</center></td>";
  85. echo "<td class ='nazwa'rowspan=2><center>Nazwa przedmiotu (wg katalogu)</center></td>";
  86. echo "<td rowspan=2><center>Oznaczenie katalogowe</center></td>";
  87. echo "<td rowspan=2><center>Jedn. miary</center></td>";
  88. echo "<td colspan=8><center>Stan w dniu</center></td>";
  89. echo "</tr>";
  90.  
  91.  
  92. echo "<tr>";
  93.  
  94. echo "<td height=120></td>";
  95.  
  96. echo "<td></td>";
  97. echo "<td></td>";
  98. echo "<td></td>";
  99. echo "<td></td>";
  100. echo "<td></td>";
  101. echo "<td></td>";
  102. echo "<td></td>";
  103. echo "</tr>";
  104.  
  105. $lp = 0;
  106.  
  107. for($i=0; $i<21; $i++)
  108. {
  109. $lp = $i + 1;
  110.  
  111.  
  112.  
  113.  
  114. echo "<tr>";
  115. echo "<td>$lp.</td>";
  116. echo "<td>".$item->nazwa."</td>";
  117. echo "<td>".$item->JIM."</td>";
  118. echo "<td>szt.</td>";
  119. echo "<td></td>";
  120. echo "<td></td>";
  121. echo "<td></td>";
  122. echo "<td></td>";
  123. echo "<td></td>";
  124. echo "<td></td>";
  125. echo "<td></td>";
  126. echo "<td></td>";
  127. echo "</tr>";
  128.  
  129.  
  130. }
  131.  
  132.  
  133.  
  134. echo "</table>";
  135. echo "<br><br / >";
  136.  
  137. echo "<br /><p align=right> ...............................<br /></p>";
  138. echo "<address> <p align=right>imię i nazwisko</address><br /></p>";
  139. echo "<address><p align=right>podpis użytkownika sprzętu</address><br /></p>";
  140. echo "</div></body>";
  141. print_r($query);
  142. echo "</html>";
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150. <table>';
  151.  
  152. <form method="post" action="index.php?view=Wydruk&format=pdf">
  153.  
  154. <input name="klawisz" class="searchbutton" value="Wydruk wykazu" type="submit" />&nbsp;
  155.  
  156.  
  157. </p>
  158. </form>';
  159.  
  160.  
  161. echo "</table>";
  162.  
  163.  


Teraz po zmianach mam 21 wierszy, ale pusta tabelę:

  1. $lp = 0;
  2.  
  3. for($i=0; $i<21; $i++)
  4. {
  5. $lp = $i + 1;
  6. $item = $list;
  7. echo "<tr>";
  8. echo "<td>$lp.</td>";
  9. echo "<td>".$item->nazwa."</td>";
  10. echo "<td>".$item->JIM."</td>";
  11. echo "<td>szt.</td>";
  12. echo "<td></td>";
  13. echo "<td></td>";
  14. echo "<td></td>";
  15. echo "<td></td>";
  16. echo "<td></td>";
  17. echo "<td></td>";
  18. echo "<td></td>";
  19. echo "<td></td>";
  20. echo "</tr>";
  21.  
  22.  
  23. }
  24.  
  25.  
  26.  
Go to the top of the page
+Quote Post
Dominis
post
Post #16





Grupa: Zarejestrowani
Postów: 77
Pomógł: 19
Dołączył: 13.02.2010

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


ehh, straszny burdel masz w tym kodzie i sam sie gubisz..

  1. $lp = 0;
  2.  
  3. for($i=0; $i<21; $i++)
  4. {
  5. $lp = $i + 1;
  6. $item = $list; // (IMG:style_emoticons/default/questionmark.gif) co to jest?
  7. echo "<tr>";
  8. echo "<td>$lp.</td>";
  9. echo "<td>".$item->nazwa."</td>";// skad? jak gdzie? i dziwne ze puste...
  10. echo "<td>".$item->JIM."</td>"; // ?
  11. echo "<td>szt.</td>";
  12. echo "<td></td>";
  13. echo "<td></td>";
  14. echo "<td></td>";
  15. echo "<td></td>";
  16. echo "<td></td>";
  17. echo "<td></td>";
  18. echo "<td></td>";
  19. echo "<td></td>";
  20. echo "</tr>";
  21.  
  22.  
  23. }
  24.  


  1. $lp = 0;
  2. foreach($list as $item){
  3.  
  4. echo "<tr>";
  5. echo "<td>".++$lp."</td>";
  6. echo "<td>".$item->nazwa."</td>";
  7. echo "<td>".$item->JIM."</td>";
  8. echo "<td>szt.</td>";
  9. echo "<td></td>";
  10. echo "<td></td>";
  11. echo "<td></td>";
  12. echo "<td></td>";
  13. echo "<td></td>";
  14. echo "<td></td>";
  15. echo "<td></td>";
  16. echo "<td></td>";
  17. echo "</tr>";
  18. if($lp > 21){
  19. break;
  20. }
  21. }


Zrobiłem na foreach, z sentymentu..
Go to the top of the page
+Quote Post
kmpl
post
Post #17





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

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


Cytat
echo "<td>".$item->nazwa."</td>";// skad? jak gdzie? i dziwne ze puste...
echo "<td>".$item->JIM."</td>"; // ?


nazwa i JIM to pola w tabeli z której pobierane są dane.

Dokonałem zmian jak w poście poniżej, ale mam teraz tyle wierszy ile jest w bazie, a nie 21.

Foreach raczej tu nie zadziała. Jak to zrobić za pomocą pętli for?
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: 15.09.2025 - 05:21