Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CI][CodeIgniter]Tablica dwu wymiarowa w codeigniter
Forum PHP.pl > Forum > PHP > Frameworki
furious_knight
Witam,

Uczę się pracy z CI i mam nastepujący problem chciałbym wyciągnąć z bazy danych dane w dwuwymiarowej tablicy ale jeszcze za cienko idzie mi posługiwanie się składnia CI i nie chce mi się wyświetlić prawidłowy wynik. chciałbym żeby w modelu zostalo wykonywane zapytanie do bazy danychi wyciąganło nazwę oraz ID działu wygląda to tak:


  1. $tablica= array();
  2. $query = $this ->db->query('select `Nazwa`, `ID_Parent` from `Lista_Kategorii`WHERE `ID_Parent`=10 and `Język`=1 and `Aktywna`=1;');
  3.  
  4. foreach($query->result() as $row)
  5. {
  6.  
  7. }


następnie jak się domyślam za pomocą pętli np. foreach powinienem wyciągać każdy wiersz z pierwszego zapytania i napostawie tego id zrobić zapytanie o wszystkie pod kategorie tego id i zapisać to wszystko do tablicy dwu wymiarowej ale niestety nie wychodzi, pomoże ktośquestionmark.gif
markuz
Możesz to wszystko załatwić 1 zapytaniem - poczytaj o strukturze drzewiastej - w sieci jest pełno praktycznych przykładów które idealnie pasują do twojego przypadku.
marcus753
tu masz wszystko fajnie opisane poczytaj sobie: http://podrecznik.codeigniter.org.pl/datab...ive_record.html

a wyniki wyświetlasz np. w taki sposób:

Kod
$query = $this->db->query("YOUR QUERY");

foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}
furious_knight
wielkie dzięki za pomoc, o strukturze drzewiastej pierwszy raz słyszę ale oczywiście wiedzy nigdy za dużo więc zapieram się do badania tematu.

Witam ponownie forumowiczów,
Chciałbym ponowić temat dotyczący pracy na zapytaniach do bazy i zapisu do tablic za pomocą Frameworka CI, intensywnie usiłuję zrozumieć jak najbardziej zasadę działania tego środowiska dla tego proszę o wytłumaczenie czy jest możliwe i czy jest prawidłowe wykonanie działania które będzie polegać na:

POBIERAM DANE Z BAZY W MODELU (select pobiera grupę rekordów) ->

KONTROLER PRZETWARZA WYNIK->tworzy tablicę->za pomocą pętli wyciąga po jednym rekordzie zapisuje go do tablicy i przy każdym rekordzie wczytuje drugi model,PRZESYŁAJĄC DO NIEGO ID na podstawie którego wybrane zostaną z bazy rekordy będące podgrupą dla głównego rekordu
MODEL JEST WCZYTYWANY DO KONTROLERA WEWNĄTRZ PĘTLI i wyniki są zapisywane drugą pętlą do tablicy jako drugi wymiar tej tablicy,

po wykonaniu procedura jest powtarzana dla każdego rekordu z pierwszego zapytania:


trochę to brzmi skomplikowanie ale w zwykłym php jest to banalne do wykonania a zachowując zasady MVC nie za bardzo wiem jak przekazać z kontrolera do modelu ID rekordu w zmiennej tak żeby pobrał drugie zapytanie na podstawie tego wyniku

proszę o info czy i jak można zrobić wyżej opisany przydład, jak by opis był nie jasny to stworzę kod tak jak bym chciał żeby to działało.

Pozdrawiam
markuz
Może w metodzie modelu użyj parametru np. $id? Np. masz model TestModel i kontroller TestController więc:

  1. TestController extends CI_Controller
  2. {
  3. public function test()
  4. {
  5. $this->load->model('TestModel');
  6. $this->TestModel->test(5);
  7. }
  8. }
  9.  
  10. TestModel extends CI_Model
  11. {
  12. public function test($id)
  13. {
  14. var_dump($id); die();
  15. }
  16. }


O to chodzi?
furious_knight
Po części tak, o to chodzi ale do tego doszedłem na podstawie dokumentacji CI mój problem polega na tym jak w kontrolerze (lub modelu??) stworzyć tablicę lub objekt który zbierał by info o podkategorii i można by to potem wyświetlić w widoku, może na początek pokażę jak wygląda mój dotychczasowy kod:

kontroler:

  1. public function index()
  2. {
  3.  
  4. $data['topmenu'] = $this->topmenu_m->get_topmenu();
  5. $data['leftmenu'] = $this->topmenu_m->get_leftmenu();
  6. $data['podkategorie'] = $this->topmenu_m->get_leftmenu_podkategorie();
  7. $data['slider'] = $this->topmenu_m->slider();
  8. $data['test'] = $this->topmenu_m->test();
  9. $data['najlepsze'] = $this->topmenu_m->najlepsze();
  10.  
  11. $this->load->view('include/header');
  12. $this->load->view('include/menu', $data);
  13. $this->load->view('home');
  14. $this->load->view('include/footer');
  15.  
  16.  
  17.  
  18. }


model:
  1. public function get_leftmenu()
  2. {
  3. // -----Boczne menu------ 'select `Nazwa`, `ID_Parent` from `Lista_Kategorii`WHERE `ID_Parent`=10 and `Język`=1 and `Aktywna`=1;'
  4. $kategorie = $this->db->query("SELECT `Nazwa`, `ID_Kategoria` from `Lista_Kategorii` WHERE `ID_Parent`=10 and `Język`=1 and `Aktywna`=1 ORDER BY `Kolejność`;");
  5. return $kategorie->result();
  6. $this->db->close();
  7. }
  8.  
  9. public function get_leftmenu_podkategorie($id_parent)
  10. {
  11.  
  12. $podkategorie = $this->db->query("SELECT `Nazwa`, `ID_Kategoria` from `Lista_Kategorii` WHERE `ID_Parent`=".$id_parent." and `Język`=1 and `Aktywna`=1 ORDER BY `Kolejność`;");
  13. return $podkategorie->result();
  14. $this->db->close();
  15. }


widok:
  1. <?php foreach($leftmenu as $zakladka): ?>
  2. <div class="dropdown menu-l1">
  3. <a href="#" class="list-group-item" data-toggle="dropdown"><?php echo $zakladka->Nazwa, $zakladka->ID_Kategoria ?></a>
  4. <ul class="dropdown-menu">
  5. <li><a href="#" class="list-group-item">Element1</a></li>
  6. <li><a href="#" class="list-group-item" >Element1</a></li>
  7. <li><a href="#" class="list-group-item" >Element1</a></li>
  8. </ul>
  9. </div>
  10. <?php endforeach; ?>
  11.  


tak to wygląda na chwilę obecną czyli w menu wyświetlają mi sie prawidłowo kategorie pobrane z bazy danych ale w sposób jaki wykonuję przekierowanie modelu do widoku przez kontroler nie za bardzo pozwala mi na użycie każdego id_parent w zapytaniu pobierającym podkategorie (model get_leftmenu_odkategorie - dla jasności wyniki z tego modelu powinny wyświetlać się zamiast <li>Element1</li> z widoku powyżej), na logikę to powinienem w jakiś sposób w kontrolerze wykonać pętle foreach (tą z widoku) i za każdym przejściem petli wywołać model get_leftmenu_podkategorię a wyniki razem z głównym id zapisać do tablicy dwuwymiarowej a następnie wysłać do widoku i pętlą wyświetlić wszystko w widoku ale nie jestem pewien czy było by to zgodne z założeniami MVC oraz CI i przede wszystkim jak zapisać tą tablicę tak żeby użyć jej w widoku. Przyznam że trochę się przeliczyłem z moją wiedzą dotyczącą php i pomieszałem się w tym wszystkim dla tego zeleżało by mi na pomocy osoby która jest bardzo dobrze rozeznana w codeigniter i która wytłumaczyła by mi czy dobrze rozumuję i jakiej składni użyć żeby kod był prawidłowy bo oprócz prawidłowego rozwiązania chciał bym też zrozumieć jak to powinno działać czuję że jestem blisko prawidłowego wyniku ale nie znam na tyle składni żeby prawidłowo stworzyć kod :/ proszę o pomoc



Czy nikt nie może pomóc??
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.