Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]wyswietlanie danych z tablicy
Forum PHP.pl > Forum > Przedszkole
owi
Witam oto print_r mojej tablicy ktorą wyrzucam z joina:
  1. (
  2. [0] => stdClass Object
  3. (
  4. [company_id] => 16
  5. [company_name] => jakas tam firma
  6. [company_email] => jakis@mail.com
  7. [member_id] => 3
  8. [first_name] => zenek
  9. [last_name] => frankowski
  10. [email] => zenek@buziaczek.pl
  11. [phone] => 455666546
  12. [title] => prezydent
  13. [company] => 16
  14. [notes] => jakies tam notki o nim
  15. )
  16.  
  17. [1] => stdClass Object
  18. (
  19. [company_id] => 16
  20. [company_name] => jakas tam firma
  21. [company_email] => jakis@mail.com
  22. [member_id] => 5
  23. [first_name] => franek
  24. [last_name] => zenkowski
  25. [email] => franek@buziaczek.pl
  26. [phone] => 4324234121
  27. [title] => premier
  28. [company] => 16
  29. [notes] => franek jest podobny do zenka
  30. )
  31. }
  32.  


Mam dwie tabele firmy oraz pracownicy z których za pomocą lewego joina pobieram dane do tablicy.
Oczywiscie firma moze posiadac wielu pracowników. I tutaj jest moj problem. Chodzi mi o to ze przy wypisywaniu tablicy przy uzyciu foreach - jezeli firma ma większą liczbe pracowników to wtedy jest wypisywana wielokrotnie.
Probowalem blokowac to za pomocą zwyklego IFa - i oczywiscie dane o firmie wyswietlane są tylko raz zas wszystkich pracowników wypisuje poprawnie. Tylko ze to dziala tylko wtedy jezeli dane pracowników wyswietlam na koncu.

Jak wyrzucac dane z tablicy aby bylo tak:

Dane firmy
Dane firmy
pracownik 1
pracownik 2
pracownik 3
...
pracownik n
Dane firmy

Z góry dziekuje za pomoc
Wicepsik
Pokaż jaki zrobiłeś kod.
owi
  1. foreach($companies as $company)
  2. {
  3. if($company->company_id != $last_id)
  4. {
  5. echo "<h3><a href=\"#\">$i. $company->company_name</a></h3>";
  6. echo "<div>
  7. <p><span>Company name:</span>$company->company_name</p>
  8. <p><span>First email address:</span><a href=\"mailto:$company->company_email\" target=\"_blank\">$company->company_email</a></p>
  9.  
  10. echo "<h4>Members of this company:</h4>";
  11. //start of members display
  12.  
  13. echo "<h4>Actions:</h4>";
  14. echo anchor("manager/add_member_loader/$company->company_id",'Add New Member');
  15. echo "</div>";
  16. //end of company div
  17. $i++;
  18. }
  19. $last_id=$company->company_id;
  20. }
  21.  

Chciałbym, aby tam gdzie jest wyświetlanie użytkowników wywaliło wszystkich użytkowników, zas pozostałe informacje wyświetlało tylko raz...

Zastanawiam sie w takim razie czy nie zrezygnować z joina i pobierać do dwóch tablic - ale podejrzewam ze wcześniej czy później natrafię na taki sam problem a chce wiedzieć jak go rozwiązać

edit: literówki...

Moge zawsze dane wyciagniete z bazy wyciagac do dwoch tablic ale wtedy:
albo bede musial zrezygnowac z joina i robic dwa zapytania (jedno do firm drugie do pracowników)
badz w modelu przy wyrzucaniu $query z joinem przypisywac recznie wyniki do tablicy - co wydaje sie bez sensem jezeli tabela mysql sie w przyszlosci zmieni - bede musial poprawiac model/kontroler.

Czy jest jeszcze jakies wyjscie?

jeszcze dodam funkcje z modelu to moze ktos mnie naprowadzi na ciekawsze rozwiązanie

  1. function get_all(){
  2. $this->db->select('*');
  3. $this->db->from('companies');
  4. $this->db->join('members', 'members.company = companies.company_id','left');
  5. $query = $this->db->get();
  6.  
  7. if ($query->num_rows() > 0 ){
  8. foreach ($query->result() as $row){
  9. $data[] = $row;
  10. }
  11. return $data;
  12. }
  13.  
  14. }


Myslalem zeby moze zrobic zapytanie zwracajace pracowników do oddzielnej tablicy?

Cos w stylu:
  1. $data[$row->company_id][] = $row;


Ok zrobilem sam za pomoca dwóch tablic i dwóch zapytan
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.