Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja a jej wywolanie
Forum PHP.pl > Forum > Przedszkole
agentmullder
Witam. Zwracam sie z prosba o podpowiedz w rozwiazaniu mojego problemu. Posiadam funkcje php w dolnej czesci kodu, a chcialbym ją wywolac w wyzszej czesci kodu. Ale wyrzuca mi blad, ze funkcja nie jest zadeklarowana. Czy da sie to jakos rozwiazac bez przenoszenia funkcji w wyzsza czesc kodu (przed jej wywolaniem)?
_walus
Z tego co wiem to nie ma takiej możliwości. Musisz ją przenieść na początek kody lub zdeklarować w jakimś pliku który dołączysz do kody, ale to również musi się odbyć przed wywołaniem funkcji...
agentmullder
No to mam w takim razie inne pytanie odnosnie funkcji. Zalozmy, ze moja funkcja jest w stylu:

  1. function wyswietl(){
  2.  
  3. //tutaj zapytania do bazy mysql
  4.  
  5. //tutaj wyswietla mi wyniki zapytania do bazy
  6.  
  7. $liczbawyszukan=mysql_num_rows($zapytanie);
  8.  
  9. }

Chcialbym dostac sie do tej zmiennej: $liczbawyszukan. Ale nie wiem jak. Jesli zrobie przez returna i wywolam funkcje to mi wydrukuje wyniki wszystkich zapytan, a ja potrzebuje tylko informacje na temat ilosci tych wyszukan. Jak sie do niej dostac?
zelu
Najlepiej napisz osobną funkcję do pobierania ilości wierszy. Podstawowa zasada: jedna funkcja = jedna rzecz do zrobienia. Więc albo wyświetlasz wyniki, albo wyświetlasz ilość wyników, ale nie obie rzeczy na raz smile.gif


Pozdro
agentmullder
Cytat(zelu @ 2.08.2010, 12:21:47 ) *
Najlepiej napisz osobną funkcję do pobierania ilości wierszy. Podstawowa zasada: jedna funkcja = jedna rzecz do zrobienia. Więc albo wyświetlasz wyniki, albo wyświetlasz ilość wyników, ale nie obie rzeczy na raz smile.gif


Pozdro


Ale czy mozna tak zrobic, ze funkcja bedzie pobierala wlasnie ilosc zapytan do bazy z innej funkcji? No bo wydaje mi sie, ze tak sie nie da, a ta informacja, jaka chce uzyskac znajduje sie wylacznie w tej funkcji ;/ A moze zmienna globalna? hmm
zelu
Zapomnij w ogóle o zmiennych globalnych smile.gif Czegoś takiego nie ma! smile.gif Tzn jest, ale nie używaj smile.gif

A może po prostu SELECT COUNT(*) FROM tabela?


Edit:
Jeżeli już tak bardzo chcesz użyć tego mysql_num_results, to zrob sobie 3 funkcje:
1) Pobiera dane z bazy i zwraca Resource (czyli np to co zwraca mysql_connect)
2) Do drugiej funkcji przekaz to co dostales z 1 i dostaniesz ilosc wynikow
3) Do trzeciej funkcji przekaz to co dostales z 1 i wyswietl wyniki.

Ale i tak moim zdaniem lepsza jest wersja z 2 funkcjami winksmiley.jpg
agentmullder
Cytat(zelu @ 2.08.2010, 12:26:38 ) *
Zapomnij w ogóle o zmiennych globalnych smile.gif Czegoś takiego nie ma! smile.gif Tzn jest, ale nie używaj smile.gif

A może po prostu SELECT COUNT(*) FROM tabela?


Nie. Bo ta funkcja pobiera/wyszukuje z tabeli okreslona ilosc wynikow (nie wszystkie).
zelu
No i co z tego? COUNT respektuje warunki WHERE wiec zwroci Ci dokladnie to samo co mysql_num_rows.

Poza tym spojrz na mojego edita z poprzedniego postu winksmiley.jpg
IceManSpy
To może zrób funkcję w funkcji? smile.gif
Przecież jak masz:
  1. function wyswietl(){
  2. //tutaj zapytania do bazy mysql
  3. //tutaj wyswietla mi wyniki zapytania do bazy
  4. $liczbawyszukan=mysql_num_rows($zapytanie);
  5. }

To też używasz funkcji w funkcji (mysql_num_rows w wyswietl) smile.gif
agentmullder
Cytat(IceManSpy @ 2.08.2010, 12:44:21 ) *
To może zrób funkcję w funkcji? smile.gif
Przecież jak masz:
  1. function wyswietl(){
  2. //tutaj zapytania do bazy mysql
  3. //tutaj wyswietla mi wyniki zapytania do bazy
  4. $liczbawyszukan=mysql_num_rows($zapytanie);
  5. }

To też używasz funkcji w funkcji (mysql_num_rows w wyswietl) smile.gif



Zalozmy mam:

  1. function wyswietl(){
  2. //tutaj zapytania do bazy mysql
  3. //tutaj wyswietla mi wyniki zapytania do bazy
  4. function iloscwyswietlen()
  5. {
  6. $liczbawyszukan=mysql_num_rows($zapytanie);
  7. return $liczbawyszukan;
  8. }
  9. }


To jak wywolac ta druga wewnetrzna funkcje? Normalnie jak kazda inna?
zelu
Echhh... podstawy...

Nie masz deklarować funkcji w funkcji tylko wywołać funkcje w funkcji. Sprawdz czym roznia sie slowa deklarowac od wywolywac winksmiley.jpg PHP to nie JS smile.gif


Pozdro

A tak właściwie:
Cytat
Jesli zrobie przez returna i wywolam funkcje to mi wydrukuje wyniki wszystkich zapytan, a ja potrzebuje tylko informacje na temat ilosci tych wyszukan.


To skoro chcesz pobrać tylko informacje o ilości wyszukań, to po co je w tej funkcji wyświetlasz?


Pozdro
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.