Witam mam problem ale moze najpierw zaczne od bazy danych.

TABLE kategorie

pola: id, parent_cat, aktywny itd...

sql - odwolanie do innej funkcji ktorej parametrem jest zapytanie SQL (ale to niewazne jest bo dziala:))

i chce napisac funkcje zeby znalazla mi najnowszy artykul wiec tak:

  1. <?php
  2. function getLastReviewID($cat,$lrid) { // definiowanie funkcji, $cat < id kategorii ktora przeszukuje, $lrid - id najnowszego artykulu
  3.  
  4. // sprawdz czy sa subkategorie
  5.  
  6. $subcatexist = 0 + mysql_result(sql("SELECT COUNT(id) FROM kategorie WHERE parent_cat = '$cat' AND typ = '1' AND aktywny = '1'"),0);
  7.  
  8.  
  9. if ($subcatexist == 0) { // jezeli nie ma subkategorii to znajdz najnowszy artykul
  10.  
  11. $maxid = 0 + mysql_result(sql("SELECT MAX(id) FROM kategorie WHERE parent_cat = '$cat' AND typ = '2' AND aktywny = '1'"),0);
  12.  
  13. if ($maxid > $lrid) {  // porownanie i ewentualna zmiana najnowszego artykulu
  14.  
  15.  $lrid = $max;
  16.  
  17. }
  18.  
  19.  
  20. } else {  // jezeli sa subkategorie to wywolaj funkcje rekurencyjnie dla kazdego podkatalogu
  21.  
  22. $pobierz_subcats = sql("SELECT id FROM kategorie WHERE parent_cat = '$cat' AND typ = '1' AND aktywny = '1'");
  23.  
  24. while ($row = mysql_fetch_array($pobierz_subcats)) {
  25.  
  26. $id = $row['id']; // pobierz id
  27.  
  28. getLastReviewID($id,$lrid); // wywolaj funkcje
  29.  
  30.  
  31. }
  32.  
  33. }
  34.  
  35. }
  36. ?>


Problem polega na tym, że nie zamienia $maxid z $lrid a wszystko oprócz tego działa czyli znajduje $maxid z każdej subkategorii. Jak zrobić, żeby funkcję wywołać z tym drugim parametrem tak żeby było OK? Nie wiem czemu mi to się nie zmienia bo $cat przy wywoływaniu funkcji działa.

PORADZIŁEM SOBIE

prawidłowo napsiana funkcja:

  1. <?php
  2. function getLastReviewID($cat,&$lrid) {
  3.  
  4. $subcatexist = 0 + mysql_result(sql("SELECT COUNT(id) FROM kategorie WHERE parent_cat = '$cat' AND typ = '1' AND aktywny = '1'"),0);
  5.  
  6. if ($subcatexist > 0) {
  7.  
  8. $pobierz_subcats = sql("SELECT id FROM kategorie WHERE parent_cat = '$cat' AND typ = '1' AND aktywny = '1'");
  9.  
  10. while ($row = mysql_fetch_array($pobierz_subcats)) {
  11.  
  12. $id = $row['id'];
  13.  
  14. getLastReviewID($id,$lrid);
  15.  
  16. }
  17.  
  18.  
  19. } else {
  20.  
  21. $maxi = 0 + mysql_result(sql("SELECT MAX(id) FROM kategorie WHERE parent_cat = '$cat' AND typ = '2' AND aktywny = '1'"),0);
  22.  
  23. if ($maxi > $lrid) {
  24.  
  25. $lrid = $maxi;
  26.  
  27. }
  28.  
  29. }
  30.  
  31. return $lrid;
  32.  
  33. }
  34. ?>