Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrócenie kodu / zapytań sql
kam821
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 24.10.2009

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


Witam (IMG:style_emoticons/default/smile.gif)
Mam do Was pewną prośbę, jako, iż nie jestem masterem w optymalizacji kodu, prosiłbym o najwydajniejsze rozwiązanie możliwego problemu, nawet w zmianie zapytania sql (IMG:style_emoticons/default/smile.gif)
Poniżej kawałek mojego kodu:
  1. <?php
  2.  
  3. function generate_katalog_list() {
  4.  
  5. global $db;
  6.  
  7. $katalog_list = sql_cache('get', 'katalog_list');
  8. $subkatalog_list = sql_cache('get', 'subkatalog_list');
  9.  
  10. if(!$katalog_list) {
  11. $sql = "
  12. SELECT
  13. k.katalog_id,
  14. k.katalog_name,
  15. COUNT(p.produkt_id) AS katalog_productnum
  16. FROM
  17. " . DB_KATALOG . " k,
  18. " . DB_PRODUKT . " p
  19. WHERE
  20. p.katalog_id = k.katalog_id
  21. ORDER BY
  22. k.katalog_name ASC
  23. ";
  24.  
  25. $result = $db->sql_query($sql);
  26.  
  27. $katalog_list = $db->sql_fetchrowset($result);
  28.  
  29. $id_list = implode(',', $katalog_list);
  30.  
  31. $sql = "
  32. SELECT
  33. k.katalog_id,
  34. k.katalog_name,
  35. k.parent_id
  36. COUNT(p.produkt_id) AS katalog_productnum
  37. FROM
  38. " . DB_KATALOG . " k,
  39. " . DB_PRODUKT . " p
  40. WHERE
  41. p.katalog_id = k.katalog_id
  42. AND k.parent_id IN ($id_list)
  43. ORDER BY
  44. k.katalog_name ASC
  45. ";
  46.  
  47. $result = $db->sql_query($sql);
  48.  
  49. while($row = $db->sql_fetchrow($result)) {
  50. $subkatalog_list[$row['parent_id']][]['id'] = $row['katalog_id'];
  51. $subkatalog_list[$row['parent_id']][]['name'] = $row['katalog_name']; // te 3 zmienne zrobione 'na pałkę', kod i tak pisany na szybko :)
  52. $subkatalog_list[$row['parent_id']][]['pnum'] = $row['katalog_productnum'];
  53. }
  54. sql_cache('write', 'katalog_list', $katalog_list);
  55. sql_cache('write', 'subkatalog_list', $subkatalog_list);
  56.  
  57. }
  58. foreach($katalog_list as $id => $val) {
  59. ///////////////////
  60. $katalog_id = $val['katalog_id'];
  61. $katalog_name = $val['katalog_name'];
  62. $katalog_productnum = $val['katalog_productnum'];
  63.  
  64. ////////////////////// wyrzucenie do templatki
  65.  
  66. if(isset($subkatalog_list[$katalog_id])) {
  67. for($i = 0; $i < count($subkatalog_list[$katalog_id]); $i++) {
  68. $subkatalog_id = $subkatalog_list[$katalog_id][$i]['id'];
  69. $subkatalog_name = $subkatalog_list[$katalog_id][$i]['name'];
  70. $subkatalog_productnum = $subkatalog_list[$katalog_id][$i]['katalog_productnum'];
  71.  
  72. ////////////////////// wyrzucenie do templatki
  73. }
  74. }
  75. }
  76. }
  77.  
  78. ?>


Proszę się nie przejmować głupotami w stylu. tworzenie cache do subkatalogów np. przy braku katalogów, kod pisałem na szybko, aby przede wszystkim przedstawić problem, skoro i tak stoję teraz w miejscu (IMG:style_emoticons/default/smile.gif)
Problem polega na tym, że wiem, że nie jest to dobre rozwiązanie, nie wiem nawet czy zadziała, ale liczę na Was, że mi pomożecie (IMG:style_emoticons/default/smile.gif)
Moim celem w tej funkcji jest, aby pod koniec uzyskać pętle, na której będę mógł wypisać katalogi, w której też będę mógł zamieścić następną pętlę z subkatalogami (IMG:style_emoticons/default/smile.gif)

Ten post edytował kam821 22.12.2009, 20:53:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kam821
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 24.10.2009

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


Nawet nie mam na czym, nie chce mi się tworzyć bazy, tabel i jakichś testowych katalogów, szczególnie, że piszę ten projekt od golizny, lecz wydaje mi się, że nie licząc błędów składniowych, które mogły się ewentualnie pojawić, reszta powinna być okej.

Ten post edytował kam821 22.12.2009, 21:15:25
Go to the top of the page
+Quote Post
Wicepsik
post
Post #3





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Cytat(kam821 @ 22.12.2009, 21:15:08 ) *
Nawet nie mam na czym, nie chce mi się tworzyć bazy, tabel i jakichś testowych katalogów, szczególnie, że piszę ten projekt od golizny, lecz wydaje mi się, że nie licząc błędów składniowych, które mogły się ewentualnie pojawić, reszta powinna być okej.

To ktoś będzie poświęcał swój czas na tworzenie bazy, tabel i testowe katalogi aby sprawdzić czy to w ogóle działa?
To nie dział gotowce.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 19:23