Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Wyświetlenie BD w postaci listy <lu> ?
Forum PHP.pl > Forum > Przedszkole
maverickkk
Moja baza wygląda tak:
http://217.97.144.147/~i4659/up/upload/bd.jpg

Lista jaką chciałbym utworzyć na podstawie tej tabeli powinna wyglądać mniej wiecej tak:

  1. <ul>
  2. <li>KATEGORIA
  3. <ul>
  4. <li>POD-KATEGORIA
  5. <ul>
  6. <li>nazwa produktu</li>
  7. <li>nazwa produktu</li>
  8. </ul>
  9. </li>
  10. <li>POD-KATEGORIA
  11. <ul>
  12. <li>nazwa produktu</li>
  13. <li>nazwa produktu</li>
  14. </ul>
  15. </li>
  16. </ul>
  17. </li>
  18. </ul>


I teraz do utworzenia takiej listy trzeba zrobić wiele warunków if które będą otwierać zamykać tagi HTML wstawiac zawartość, sprawdzać do której kategori/podkategorii należy produkt itd.

Czy da się to zrobić w jakiś prosty spoosób?
Cezar708
idealnym rozwiązaniem byłoby u Ciebie zastosowanie rekurencji

na przykład:

  1. <?php
  2. function pobierzDane($level){
  3. // tu skąd dane są pobierane (baza danych?)
  4. }
  5.  
  6. function pobierzListę($level = 1){
  7. $dane = pobierzDane($level);
  8. $strRet .= "<ul>".$dane['nazwaLevelu'];
  9.  
  10. foreach ( $dane['liTegoLevelu'] as $li ){
  11. $strRet .= "<li>{$li['nazwaLi']}</li>";
  12. if ( $li['maPodLevel'] ){
  13. $strRet .= pobierzListę($level + 1)
  14. }
  15. }
  16. $strRet .= "</ul>";
  17. return $strRet;
  18. }
  19.  
  20. $lista = pobierzListę($level = 1);
  21. ?>


oczywiście to jest przykład...
maverickkk
Dzieki. Dobry pomysł.

Ja jednak zrobiłem to na 3 funkcjach z których każda obsługuje 1 level ponieważ mam liste do 3 rzędu. Każda z funckji korzysta z innej tabelki a tabele różnią się polami i nie chciałem się bawić w rekurencje.

Innym razem ją wykorzystam :]
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.