Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][PHP]Elementy tr/td w pętli
martinii007
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.12.2011

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


Otóż mam następujący problem:

Chciałbym aby menu nad któym pracuję miało wygląd tabeli: i na przemian wiersze mają się zmieniać, raz czarny, raz biały.

  1.  
  2. <tr class="odd">
  3. <td>
  4. <span>Lobster Rolls with house made old bay potato chips</span>
  5. <p class="lang1">Lobster Rolls with house made old bay potato chips</p>
  6. <p class="lang2">Lobster Rolls with house made old bay potato chips</p>
  7. </td>
  8. <td class="price">$12.79</td>
  9. </tr>
  10. <tr>
  11. <td>
  12. <span>Lobster Rolls with house made old bay potato chips</span>
  13. <p class="lang1">Lobster Rolls with house made old bay potato chips</p>
  14. <p class="lang2">Lobster Rolls with house made old bay potato chips</p>
  15. </td>
  16. <td class="price">$12.79</td>
  17. </tr>
  18. <tr class="odd">
  19. <td>
  20. <span>Lobster Rolls with house made old bay potato chips</span>
  21. <p class="lang1">Lobster Rolls with house made old bay potato chips</p>
  22. <p class="lang2">Lobster Rolls with house made old bay potato chips</p>
  23. </td>
  24. <td class="price">$12.79</td>
  25. </tr>
  26. <tr>
  27. <td>
  28. <span>Lobster Rolls with house made old bay potato chips</span>
  29. <p class="lang1">Lobster Rolls with house made old bay potato chips</p>
  30. <p class="lang2">Lobster Rolls with house made old bay potato chips</p>
  31. </td>
  32. <td class="price">$12.79</td>
  33. </tr>
  34.  






  1. $menu = DatabaseManager::selectBySQL("SELECT * FROM Menu where id>=0 and id<=10"); //10 dań
  2. foreach($menu as $pozycje_menu) {
  3.  
  4. for($id=$pozycje_menu['id']; $id < 9; ++$id)
  5. {
  6.  
  7. $odd= "class=\"odd\"";
  8. $empty="";
  9.  
  10. echo '<tr '.($id & 1 ? $odd : $empty).'>';
  11.  
  12. <td>
  13. <span>'.$pozycje_menu['danie_1'].'</span>
  14. <p class="lang1">'.$pozycje_menu['opis_dania_1'].'</p>
  15. <p class="lang2">'.$pozycje_menu['opis_dania_2'].'</p>
  16. </td>
  17. <td class="price">'.$pozycje_menu['cena'].'</td>
  18. </tr>
  19. ';}}



Wszystko wyświetla się OK tylko, że są powielone rekordy. Potrzebuję jedynie "zlikwidować" te powtarzające się elementy, bo reszta wyświetla się prawidłowo.

Ten post edytował martinii007 2.04.2014, 10:05:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
martinii007
post
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.12.2011

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


No piękne rozwiązanie (IMG:style_emoticons/default/smile.gif)

A można to jakoś skrócić?

Zrealizowałem to w taki sposób:

  1. tr.odd:nth-child(1) {background-color: transparent}
  2. tr.odd:nth-child(2) {background: #FFF}
  3. tr.odd:nth-child(3) {background-color: transparent}
  4. tr.odd:nth-child(4) {background: #FFF}
  5. tr.odd:nth-child(5) {background-color: transparent}
  6. tr.odd:nth-child(6) {background: #FFF}
  7. tr.odd:nth-child(7) {background-color: transparent}
  8. tr.odd:nth-child(8) {background: #FFF}
  9. tr.odd:nth-child(9) {background-color: transparent}
  10. tr.odd:nth-child(10) {background: #FFF}
  11. tr.odd:nth-child(11) {background-color: transparent}
  12. tr.odd:nth-child(12) {background: #FFF}



P.S.

Jakby ktoś miał rozwiązanie w PHPie to również można podrzucić.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(martinii007 @ 2.04.2014, 11:25:16 ) *
No piękne rozwiązanie (IMG:style_emoticons/default/smile.gif)

A można to jakoś skrócić?

Zrealizowałem to w taki sposób:

  1. tr.odd:nth-child(1) {background-color: transparent}
  2. tr.odd:nth-child(2) {background: #FFF}
  3. tr.odd:nth-child(3) {background-color: transparent}
  4. tr.odd:nth-child(4) {background: #FFF}
  5. tr.odd:nth-child(5) {background-color: transparent}
  6. tr.odd:nth-child(6) {background: #FFF}
  7. tr.odd:nth-child(7) {background-color: transparent}
  8. tr.odd:nth-child(8) {background: #FFF}
  9. tr.odd:nth-child(9) {background-color: transparent}
  10. tr.odd:nth-child(10) {background: #FFF}
  11. tr.odd:nth-child(11) {background-color: transparent}
  12. tr.odd:nth-child(12) {background: #FFF}



P.S.

Jakby ktoś miał rozwiązanie w PHPie to również można podrzucić.


Powinno działać, bo even i odd to w css słowa kluczowe, ale tutaj masz wersję z indeksem wiersza, to samo, tyle że inaczej zapisane.

  1. tr:nth-child(2n+1) {background-color: transparent}
  2. tr:nth-child(2n) {background: #FFF}


Poza tym nie zauważyłeś że masz pętlę w pętli? Wszystko wykonuje się tak na oko jakieś 88 razy, w zależności ile masz tam rekordów.

Powinno to wyglądać z grubsza tak:

  1. $menu = DatabaseManager::selectBySQL("SELECT * FROM Menu where id>=0 and id<=10"); //10 dań
  2. echo '<table>';
  3. foreach($menu as $pozycje_menu) {
  4. echo'<tr>
  5. <td>
  6. <span>'.$pozycje_menu['danie_1'].'</span>
  7. <p class="lang1">'.$pozycje_menu['opis_dania_1'].'</p>
  8. <p class="lang2">'.$pozycje_menu['opis_dania_2'].'</p>
  9. </td>
  10. <td class="price">'.$pozycje_menu['cena'].'</td>
  11. </tr>
  12. ';
  13. }
  14. echo '</table>';


I css jak wyżej.

Ten post edytował b4rt3kk 2.04.2014, 10:48:01
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 22:20