Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zwracaniem wartosci przez funkcje
Forum PHP.pl > Forum > Przedszkole
invx
jest sobie zmienna
  1. <?php
  2. $sql=&#092;"SELECT * FROM forum_c WHERE (id_b=$_GET[id] AND nowy_temat='1' AND ( DATE_SUB( CURDATE( ) , INTERVAL $day DAY ) <= `data_dodania` )) ORDER BY status\";
  3. ?>


jest ona tworzona w funkcji, nazwijmy ja AAA, i teraz jak z tej funkcji zwrucic, ja do kodu php w kturym byla wywolywana ta funkcja, robie przez return $sql czy return ($sql) to ja mi wyswietla, a ja tego nie chce, ma ja zwrucic, zebym mogl ja potem wykorzystac do wykonania zapytania do bazy
crash
  1. <?php
  2. function zwroc()
  3. {
  4.  $sql=&#092;"SELECT * FROM forum_c WHERE (id_b=$_GET[id] AND nowy_temat='1' AND ( DATE_SUB( CURDATE( ) , INTERVAL $day DAY ) <= `data_dodania` )) ORDER BY status\";
  5.  return $sql;
  6. }
  7.  
  8. echo zwroc();
  9.  
  10. mysql_query(zwroc());
  11.  
  12. // itp...
  13. ?>
stoprocent
Nie rozumiem za bardzo oco ci chodzi .
Ja to widze tak masz zapatnie ktore chcesz wykorzystac czyli kotrzystasz z return.
Napisz troche jasniej
invx
no wlasnie w tym problem jak daje
  1. <?php
  2. return $sql;
  3. ?>

to mi wyswietla $sql, a potem w mysql_query, jej nie widzi.
scanner
Cytat(invx @ 2005-01-19 10:05:18)
no wlasnie w tym problem jak daje
  1. <?php
  2. return $sql;
  3. ?>

to mi wyswietla $sql, a potem w mysql_query, jej nie widzi.

Zdefiniuj pojęcie "nie widzi".

Moze zacznij pisac nieco normalniej izacznijprzejmowac się obsługa błędów?
  1. <?php
  2. function zwroc()
  3. {
  4.  $sql=&#092;"SELECT * FROM forum_c WHERE (id_b=$_GET[id] AND nowy_temat='1' AND ( DATE_SUB( CURDATE( ) , INTERVAL $day DAY ) <= `data_dodania` )) ORDER BY status\";
  5.  return $sql;
  6. }
  7.  
  8. echo zwroc();
  9.  
  10. mysql_query(zwroc()) or die( mysql_error() );
  11.  
  12. // itp...
  13. ?>
Na pewno wywali błąd. Ponieważ nie jest znana watość zmiennej $day tongue.gif
invx
przy eccho zwruc(), funkcja wyswietla mi cala $sql, ponizej sprawdzam czy jest taka zmienna echo "$sql"; i jej nie ma, wiec baza daje error, ze zapytanie bylo puste.
Liko
Bo zeby zmienna $sql miala wartosc mususz przypisać wartosc zwroconą przez tą funkcje. Przecież ta funkcja nie zwraca ci zmiennej i nie tworzy jej poza funkcja tyko wartosc tej zmiennej. ZEby to dzialo to trzeba zrobic tak:
  1. <?php
  2.  
  3. // cos tutaj 
  4. $sql = zwroc();
  5. mysql_query( $sql ) or die( mysql_error() );
  6. // cos dalej
  7. ?>
invx
dzieki liko smile.gif pomoglo, o to mi chodzilo smile.gif
Liko
Cytat(invx @ 2005-01-19 09:52:57)
dzieki liko smile.gif pomoglo, o to mi chodzilo smile.gif

Jak byś lepiej popatrzał to zauważył byś ze @Scanner podał dokładnie to samo, ale widze że ty ze wzrokiem też masz problemy.
scanner
Cytat(Liko @ 2005-01-19 10:49:39)
Bo zeby zmienna $sql miala wartosc mususz przypisać wartosc zwroconą przez tą funkcje. Przecież ta funkcja nie zwraca ci zmiennej i nie tworzy jej poza funkcja tyko wartosc tej zmiennej. ZEby to dzialo to trzeba zrobic tak:
  1. <?php
  2.  
  3. // cos tutaj 
  4. $sql = zwroc();
  5. mysql_query( $sql ) or die( mysql_error() );
  6. // cos dalej
  7. ?>

LIko, plączesz się w zeznaniach.
Invx'owa funkcja zwroc() daje w wyniku stringa. Więc wstawienie wywołania tejże funkcji jako parametru funkcji mysql_query() jest wedle mojej wiedzy jaknajbardziej prawidłowe.

Założe się, ze błąd był, bo generowane zapytanie miało błąd w okolicach zmiennej $day co wspomniałem w poście wyrzej.
strife
Witam,

Mam pytanie do tego tematu, czy można by też zrobić to za pomocą global $sql ? Czy lepiej używać return? bo sam nie wiem - ja używam global, czy jest to złe rozwiązanie?

Pozdrawiam!
crash
Do czego tutaj global? Może propnujesz takie "niezwykłe" rozwiązanie?:
  1. <?php
  2. $sql = 'SELECT * FROM cos';
  3. // tysiące linii tekstu...
  4. function zwroc()
  5. {
  6.  gobal $sql;
  7.  return $sql;
  8. }
  9. // kolejne strony...
  10. mysql_query(zwroc());
  11. ?>

Nie ma sensu kombinować z czymś co jest już dobre...
strife
Cytat(crashu @ 2005-01-19 17:09:00)
Do czego tutaj global? Może propnujesz takie "niezwykłe" rozwiązanie?:
  1. <?php
  2. $sql = 'SELECT * FROM cos';
  3. // tysiące linii tekstu...
  4. function zwroc()
  5. {
  6.  gobal $sql;
  7.  return $sql;
  8. }
  9. // kolejne strony...
  10. mysql_query(zwroc());
  11. ?>

Nie ma sensu kombinować z czymś co jest już dobre...

Dokładnie do momentu czytania tego posta wychodziłem z założenia wpisania global nie wiem czemu withstupidsmiley.gif .... No ale wiecie jeszcze się ucze tongue.gif

Pozdrawiam!
invx
Cytat("Liko")
Jak byś lepiej popatrzał to zauważył byś ze @Scanner podał dokładnie to samo, ale widze że ty ze wzrokiem też masz problemy.


nie napisal tego samego. To co napisal, wyswietlalo mi $sql, a tego nie chcialem.

Cytat("scanner")
Założe się, ze błąd był, bo generowane zapytanie miało błąd w okolicach zmiennej $day co wspomniałem w poście wyrzej.

nie bylo, bo mysql_query() nie mial znaczenia, wogule ta zmienna nie istniala, jak ja probowalem echo() wysiwetlic, smile.gif

P.S
czegoscie tak na mnie naskoczyli biggrin.gif
crash
Hmm, to już chyba drugi wątek rozpoczęty przez Ciebie dotyczący w sumie błahego zagadnienia a się ciągnie i ciągnie, bo nie potrafisz zrozumieć podstaw...
awides
a może by tak wykorzystać referencje ?
invx
  1. <?php
  2. $sql = 'SELECT * FROM cos';
  3. // tysiące linii tekstu...
  4. function zwroc()
  5. {
  6.  gobal $sql;
  7.  return $sql;
  8. }
  9. // kolejne strony...
  10. mysql_query(zwroc());
  11. ?>


taki kod mi wlasnie nie dzialal exclamation.gif!! i nie myslcie ze o to mi chodzilo aaevil.gif
crash
Może to i lepiej, tak durny kod nie powinien działać cool.gif
invx
tylko sam ten kod napisales 3 czy 4 posty wyzej, i zunales ze jest dobry i nie ma co kombinowac. biggrin.gif

Koniec teatu bo mi sie admini przyczepia ze dzialam na szkode forum i se posty nabijam.
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.