Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] funkcja nie zwraca wartości
Forum PHP.pl > Forum > PHP
dachu
hey

mam dwie funkcje, niestety jedna z nich nie zwraca wartości $j_sX. Prosze o pomoc.

  1.  
  2. // np:
  3.  
  4. $mod=1;
  5.  
  6. $idm1=$_GET["idm1"];
  7. $idm2=$_GET["idm2"];
  8. $idm3=$_GET["idm3"];
  9.  
  10.  
  11. function isPageX($mod,$idm1,$idm2,$idm3) {
  12.  
  13. switch ($mod)
  14. {
  15. case '1':
  16. TpageTextCheck($idm1,$idm2,$idm3);
  17. break;
  18. case '2':
  19. TpageNewsCheck($idm1,$idm2,$idm3);
  20. break;
  21. case '3':
  22. TpageGaleriaCheck($idm1,$idm2,$idm3);
  23. break;
  24. }
  25.  
  26. }
  27.  
  28. function TpageTextCheck($idm1,$idm2,$idm3) {
  29.  
  30. if ($idm1!='') { $sql_sX="SELECT id_menu1 FROM page_text WHERE id_menu1='$idm1' LIMIT 1"; }
  31. if ($idm2!='') { $sql_sX="SELECT id_menu2 FROM page_text WHERE id_menu2='$idm2' LIMIT 1"; }
  32. if ($idm3!='') { $sql_sX="SELECT id_menu3 FROM page_text WHERE id_menu3='$idm3' LIMIT 1"; }
  33.  
  34. $res_sX=@mysql_query($sql_sX);
  35. $jest_sX=@mysql_num_rows($res_sX);
  36.  
  37. if ($jest_sX > 0) {
  38. return $j_sX=true;
  39. } else {
  40. return $j_sX=false;
  41. }
  42.  
  43. }
  44.  
  45.  
  46. // wywołanie które nie działa :(
  47.  
  48. isPageX($mod,$idm1,$idm2,$idm3);
  49.  
  50. if ($j_sX==true) {
  51. require_once('strona1.php');
  52. } else {
  53. require_once('strona2.php');
  54. }
b3
  1. function isPageX($mod,$idm1,$idm2,$idm3) {
  2. switch ($mod) {
  3. case '1':
  4. return TpageTextCheck($idm1,$idm2,$idm3);
  5. break;
  6. //.....
  7. }


zapomniales w isPageX dodac "return", to ze wywolujesz inna funkcje w funkcji ktora zwraca wartosc przez return, to nie znaczy, ze funkcja isPageX rowniez zwroci winksmiley.jpg
skowron-line
  1. #
  2. if ($idm1!='') { $sql_sX="SELECT id_menu1 FROM page_text WHERE id_menu1='$idm1' LIMIT 1"; }
  3. #
  4. if ($idm2!='') { $sql_sX="SELECT id_menu2 FROM page_text WHERE id_menu2='$idm2' LIMIT 1"; }
  5. #
  6. if ($idm3!='') { $sql_sX="SELECT id_menu3 FROM page_text WHERE id_menu3='$idm3' LIMIT 1"; }
  7. #
  8.  
  9. #
  10. $res_sX=@mysql_query($sql_sX);
  11. #
  12. $jest_sX=@mysql_num_rows($res_sX);

usuń @ i zobacz czy nie masz błędów żadnych.
dachu
Cytat(b3 @ 25.08.2009, 12:19:09 ) *
  1. function isPageX($mod,$idm1,$idm2,$idm3) {
  2. switch ($mod) {
  3. case '1':
  4. return TpageTextCheck($idm1,$idm2,$idm3);
  5. break;
  6. //.....
  7. }


zapomniales w isPageX dodac "return", to ze wywolujesz inna funkcje w funkcji ktora zwraca wartosc przez return, to nie znaczy, ze funkcja isPageX rowniez zwroci winksmiley.jpg


dodałem return ale nie pomogło, ciągle wyświetla mi strona2.php a powinno strona1.php - celowo podaje w zmiennej idm1 wartość któa istnieje w bazie, żeby sprawdzić czy znajdzie i powinien znaleźć, ale wyświetla strona2.php -- jakby nie znalazł sad.gif
Kompletnie nie wiem o co biega...


chłopaki wiem co było źle smile.gif

zapisałem do zmiennej wartość zwróconą przez funkcje:

  1. [b]$j_sX=isPageX($mod,$idm1,$idm2,$idm3);[/b]
  2.  
  3. if ($j_sX == 1) {
  4. require_once('strona1.php');
  5. } else {
  6. require_once('strona2.php');
  7. }
thek
Poczytaj artykuł o zasięgu zmiennych lepiej winksmiley.jpg Co z tego że w funkcji TpageTextCheck robisz return $j_sX=false, skoro po jej zakończeniu $j_sX nie istnieje i nie masz się do nie jak odwołać. Zrób po prostu return true lub return false w odpowiednim miejscu. Potem pomyśl jaki sens mają funkcje:
TpageTextCheck($idm1,$idm2,$idm3);
TpageNewsCheck($idm1,$idm2,$idm3);
TpageGaleriaCheck($idm1,$idm2,$idm3);
Bo na chwilę obecna to mam dziwne wrażenie, że ma to niby jakieś dane zwracać, ale do końca nie wiadomo co winksmiley.jpg Poza tym wrzucenie niepustych $idm1 i $idm2 lub jakiejkolwiek kombinacji conajmniej 2 z tych parametrów nich bedzie nadpisywało Ci zapytanie $sql_sX wewnątrz funkcji i nigdy nie będzie to działać jak chcesz Ty.
Pomyśl CO chcesz naprawdę uzyskać bo w chwili obecnej błędy logiczne inne błędy logiczne poganiają błędami logicznymi. Kod jest do gruntowniejszej przeróbki w tej chwili
Poza tym jak rozpoznasz czy $j_sX == false tyczy się TpageTextCheck czy innych funkcji? Co chwilę będziesz switch wywoływał?
Przemyśl czy $idm1-3 są potrzebne w ogóle czy może nie jest to ta sama zmienna, przełączająca między kilkoma menu, czy może masz kilka menu i je włączasz bądź wyłączasz nimi.
Innymi słowy wyjaśnij JAK ten kod ma działać i za co owe zmienne są odpowiedzialne, bo w chwili obecnej według mnie w kodzie i jego logice masz jeden wielki b...ajzel winksmiley.jpg
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.