Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Poważne pytanie o zapytania w pętli
dizor
post 17.09.2009, 12:49:50
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.09.2009

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


Mam pytanie - czy w takim przypadku można zastosować zapytanie w pętli? Ewentualnie jakie jest inne rozwiązanie tego problemu?

Chodzi o uzyskanie tablicy jak poniższa: potrzebuję mieć w niej kategorie i podłączone do nich wybrane podkategorie (wybierane one są z tabeli wg. potrzeb, tzn. nie są podłączone wszystkie podkategorie tylko wybrane według potrzeb). Z jednej strony mój pomysł opiera się właśnie na zapytaniu w pętli - a drugi to łączenie dwóch tablic po key'u. Wydaje mi się, że pomysł z zapytaniem w pętli jest lepszy, aczkolwiek na tzw. "czuja" nie podoba mi się samo hasło "zapytania w pętli".

Bardzo proszę kogoś o dokładną analizę kodu - borykam się z tym problemem od jakiegoś czasu i do tej pory nie udało mi się uzyskać satysfakcjonującej odpowiedzi.

Generalnie nie chodzi tutaj o funkcję kategorie / podkategorie - to dałem tylko dla przykładu. W rzeczywistości każda gałąź [sub] -> ma mieć jeszcze [data] -> a potem duże [items].

  1. (
  2. [0] => Array
  3. (
  4. [cat] => stdClass Object
  5. (
  6. [code_finish_cat] => 1
  7. [cat_name] => Kategoria A
  8. )
  9.  
  10. [sub] => Array
  11. (
  12. [0] => stdClass Object
  13. (
  14. [code_finish_cat] => 1
  15. [subcat_name] => Podkategoria 1
  16. )
  17.  
  18. [1] => stdClass Object
  19. (
  20. [code_finish_cat] => 2
  21. [subcat_name] => Podkategoria 2
  22. )
  23. )
  24.  
  25. )
  26.  
  27. [1] => Array
  28. (
  29. [cat] => stdClass Object
  30. (
  31. [code_finish_cat] => 2
  32. [cat_name] => Kategoria B
  33. )
  34.  
  35. [sub] => Array
  36. (
  37. [0] => stdClass Object
  38. (
  39. [code_finish_cat] => 2
  40. [subcat_name] => Podkategoria 1
  41. )
  42.  
  43. [1] => stdClass Object
  44. (
  45. [code_finish_cat] => 2
  46. [subcat_name] => Podkategoria 2
  47. )
  48.  
  49. [2] => stdClass Object
  50. (
  51. [code_finish_cat] => 2
  52. [subcat_name] => Podkategoria 3
  53. )
  54.  
  55. )
  56.  
  57. )
  58.  
  59. )


Powyższa tablica uzyskana z zapytania:

  1.  
  2. /* GET PRODUCTS MAIN DATA
  3. */
  4.  
  5. $this->db->where('main.products_id', 1);
  6. $this->db->select('
  7. main.products_id,
  8. main.products_name
  9. ',false);
  10.  
  11. $query = $this->db->get('test_products main');
  12. $A = $query->row();
  13.  
  14. /* GET CATEGORIES MAIN DATA
  15. */
  16.  
  17. $this->db->where('main.code_products', $A->products_id);
  18. $this->db->select('
  19. main.code_finish_cat,
  20. t1.cat_name
  21. ',false);
  22.  
  23. $this->db->join('test_base_finish_cat t1', 't1.cat_id = main.code_finish_cat', 'left');
  24. $this->db->group_by('code_finish_cat');
  25.  
  26. $query = $this->db->get('test_products_categories main');
  27. $B = $query->result();
  28.  
  29. foreach($B as $key => $item){
  30.  
  31. $this->db->where('main.code_finish_cat', $item->code_finish_cat);
  32. $this->db->select('
  33. main.code_finish_cat,
  34. t1.subcat_name
  35. ',false);
  36.  
  37. $this->db->join('test_base_finish_subcat t1', 't1.subcat_id = main.code_finish_subcat', 'left');
  38. $this->db->group_by('code_finish_subcat');
  39.  
  40. $query = $this->db->get('test_products_categories main');
  41. $C = $query->result();
  42.  
  43. $D[] = array(
  44. 'cat' => $item,
  45. 'sub' => $C
  46. );
  47.  
  48.  
  49. }
  50.  
  51.  


Ten post edytował dizor 17.09.2009, 13:43:52
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:51