Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP problem z wyciągnięciem relacjonowanych danych
Forum PHP.pl > Forum > PHP
pain3hp
Posiadam dwie tabele:
Kategorie:
id_kategorii, nazwa
Podkategorie:
id_podkategorii, id_kategorii, nazwa

Piszę na fw KOHANA i chcę zachować model MVC, w modelu zrobiłem sobie takie metody
  1. private function pobierz_id_nazwa_kategorii()
  2. {
  3. $r = $this->query('SELECT id_kategorii, nazwa FROM kategorie');
  4. foreach ($r->result_array(TRUE) as $row)
  5. {
  6. $_wynik[$row->id_kategorii] = $row->nazwa;
  7. }
  8. return $_wynik;
  9. }
  10. private function get_nazwa_where($id)
  11. {
  12. $r = $this->query('SELECT nazwa FROM podkategorie WHERE id_kategorii='.$id.'');
  13. $_wynik = array();
  14. $i=1;
  15. foreach ($r->result_array(TRUE) as $row)
  16. {
  17. $_wynik[$i] = $row->nazwa;
  18. $i++;
  19. }
  20. return $_wynik;
  21. }
  22. public function pobierz_podkategorie_i_nazwy()
  23. {
  24.  
  25. $_tab_id_nazwa = $this->pobierz_id_nazwa_kategorii();
  26. for($i=1; $i<=count($_tab_id_nazwa); $i++)
  27. {
  28. $nazwa[$i] = $_tab_id_nazwa[$i];
  29. $wynik[$i] = $this->get_nazwa_where($i);
  30. $rezultat[$nazwa[$i]] = $wynik[$i];
  31. }
  32. echo $rezultat['Internet'][4];
  33. return $rezultat;
  34. }


Kontrolerem przekazuję sobie $rezultat jako tablicę
  1. $widok->pn = $model->pobierz_podkategorie_i_nazwy();
gdy ją wyświetlę zdebugowaną to prezentuje się następująco:

  1. (array) Array
  2. (
  3. [Internet] => Array
  4. (
  5. [1] => tworzenie stron
  6. [2] => blog
  7. [3] => serwis webdesign
  8. [4] => przeglądarka
  9. [5] => gra internetowa
  10. [6] => mieszanie kaszy
  11. )
  12.  
  13. [Sport] => Array
  14. (
  15. [1] => strona hostingowa
  16. )
  17. )

Oczywiście tych kategorii jest więcej ale pokazuje tylko 2 zeby nie robic dlugiego posta, muszę je wyświetlić w trzech kolumnach i w tym jest największy problem bo żeby je wyświetlić w słupku zrobiłem takiego foreacha

  1. echo '<div class="columns">';
  2. foreach($pn as $kat => $_podkat)
  3. {
  4. echo '<div class="kategoria"><div class="kategoria-naglowek">';
  5. echo '<h3>'.$kat.'</h3>';
  6. echo '</div>';
  7. foreach($_podkat as $podkat)
  8. {
  9. echo '<div class="podkategorie"><ul>';
  10. echo '<li><a href="#">'.$podkat.'</a><li>';
  11. echo '</ul></div>';
  12. }
  13. echo "</div>";
  14. }
  15. echo '</div>';


Style mam zdefiniowane tak że klasa diva "columns", zrobi następną kolumnę....
Bardzo proszę o pomoc, siedze już nad tym 3 dni rece mi opadaja

napisałem także funkcje która wypisuje liczby w trzech kolumnach, ale nie potrafię jej przenieść aby działała w tej tablicy kategorii i podkategorii :/
Kod
function wypisz($m)
{
   $do = ceil($m/3);
   for($x=0; $x<$do; $x++)
   {
      for($i=$x; $i<$m; $i+=$do)
      {
         echo $i;  
      }
      echo '<br />';
   }
}

CuteOne
  1. $i = 0;
  2. foreach($_podkat as $podkat)
  3. {
  4. echo '<div class="podkategorie"><ul>';
  5. echo '<li><a href="#">'.$podkat.'</a><li>';
  6. echo '</ul></div>';
  7. if($i%3==1) {
  8. echo 'wstaw tutaj zakonczenie lini np. </div> lub tak jak w tabelach </tr>';
  9. }
  10. $i++;
  11. }


to jest tylko przykład i na jego podstawie powinieneś załapać o co biega smile.gif

edit: jeżeli strona się rozwali to po zakończeniu lini trzeba dodać rozpoczęcie czyli
echo '</div> <div>';
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.