Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pisanie funkcji - optymalizacja
andrzejb
post 11.11.2006, 11:57:51
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

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


czy taki sposob pisania fnkcji jest poprawny
  1. <?php
  2. function codeSig($code,$user_id){
  3. if(@mysql_query("INSERT INTO codes_sig (code, user_id, created) 
  4. VALUES ('{$code}','{$user_id}',NOW()")){
  5. return 1;
  6. }
  7. return 0;
  8.  
  9. }
  10. ?>

Tak wiec funkcja jest wykonywana , sprawdzamy warunek jezeli poprawny zworc 1 i zakoncz funkcje. Jezeli warnek sie nie spelni zwroc 0. Jakies sugestje ? uwagi ?


--------------------
web lowcy.com.pl gg 1675677
Go to the top of the page
+Quote Post
dtb
post 11.11.2006, 12:12:40
Post #2





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


mozna to zrobic duzo prosciej:
  1. <?php
  2. function codeSig($code,$user_id){
  3. return @mysql_query("INSERT INTO codes_sig (code, user_id, created) VALUES ('{$code}','{$user_id}',NOW()");
  4. }
  5. ?>


Ten post edytował dtb 11.11.2006, 12:12:57


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 11.11.2006, 12:50:18
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Kod dtd jest wlasciwy:
1. exit jest niepotrzebne -- i tak nigdy nie zostanie wykonane
2. php to nie C -- uzyj true/false do okreslania prawidlowosci wykonania funkcji zamiast 1/0
3. manual:
Cytat
Dla innych [dla INSERT -- dr_bonzo] zapytań SQL mysql_query() zwraca TRUE lub FALSE informując czy zapytanie zakończyło się sukcesem czy też nie.


Odradzam uzywania malpy (@) -- lepiej uzyc w kodzie produkcyjnym error_reporting( 0 );
a w czasie tworzenienia aplikacji E_ALL zeby widziec gdzie popelniasz bledy.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
tes
post 11.11.2006, 13:21:01
Post #4





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 23.06.2004
Skąd: Rzeszów

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


Cytat(dr_bonzo @ 11.11.2006, 12:50:18 ) *
2. php to nie C -- uzyj true/false do okreslania prawidlowosci wykonania funkcji zamiast 1/0


Bez sensu, w C także można zwracać wartości logiczne.


--------------------
czemuja?
Go to the top of the page
+Quote Post
dr_bonzo
post 11.11.2006, 13:47:10
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
w C także można zwracać wartości logiczne.

No tak. Pogooglowalem i od C99 mozna. Nie jestem tak dobry w C jak w php i gdy chcialem uzyc true/false to mi nie dzialalo. Dopiero w C++ bylo ok.


Dalej -- juz sam nie wiem jak to jest z booleanami :/


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
andrzejb
post 11.11.2006, 15:28:26
Post #6





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

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


tak wiec dalej smile.gif

  1. <?php
  2. function codeTake($code,$type='sms'){
  3. if(mysql_query("UPDATE codes SET modfied=NOW(), left=0 WHERE code='{$code}'")){
  4. return 1;
  5. }else{
  6. return mysql_query("UPDATE codes SET modfied=NOW(), left=left-1 WHERE code='{$code}'");
  7. }
  8.  
  9. return 0;
  10. }
  11. ?>


z tym pierwszym warunkiem już chyba nic nie zrobie ?


--------------------
web lowcy.com.pl gg 1675677
Go to the top of the page
+Quote Post
nospor
post 11.11.2006, 15:34:26
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@andrzejb ale na grzyba ktos ma sie trudzic i mowic uwagi, jak ty olewke na calego i tak robisz?
Patrz co ci napisano wczesniej:
Cytat
exit jest niepotrzebne -- i tak nigdy nie zostanie wykonane

A ty co na to? A ty na to: "spadaj koles i tak sie nie znasz a ja zrobie po swojemu".

Pozatym Twoja konstrukcja jest bez sensu:
Jesli nie powiedzie sie zapytanie to wykonaj je jeszcze raz. Gdzie sens i logika?
Tak wiem, ze zapytania te roznią sie tym kawalkiem: left=left-1, ale to nic nie zmienia, gdyz pierwszy update zwroci ci tylko false gdy jest blad zapytania (pomijam juz brak polaczenia do bazy), wiec jesli pierwsze sie nie wykona to nie wykona sie rowniez i drugie, ktore skladniowo jest identyczne


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
andrzejb
post 12.11.2006, 10:58:37
Post #8





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

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


przyznam blad logiczny wagi o exicie niezauwazylem

  1. <?php
  2. function codeTake($code,$type='sms'){
  3. if($type=='sms'){
  4. return mysql_query("UPDATE codes SET modfied=NOW(), left=0 WHERE code='{$code}'");
  5. }else{
  6. return mysql_query("UPDATE codes SET modfied=NOW(), left=left-1 WHERE code='{$code}'");
  7. }
  8. return false;
  9. }
  10. ?>


to jest tylko stare jadro i tak ta czesc ma zmieszany model z kontrolerem ale to chodzi o mozliowsc przeniesienia kod do aplikacji struktralnych

czmu exit nie zostanie wykonany ? przeciez w takim razie powzyszy kod bez wzgledu na zapytanie i tak zwroci 0 bo na koncu zostanie wykonany return 0 ?

Ten post edytował andrzejb 12.11.2006, 11:02:33


--------------------
web lowcy.com.pl gg 1675677
Go to the top of the page
+Quote Post
dtb
post 12.11.2006, 13:53:15
Post #9





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


gdy uzywasz return to funkcja przestaje byc wykonywana, np. funkcja:
  1. <?php
  2. function dupa() {
  3. echo '1';
  4. return true;
  5. // od tej pory funkcja przestajem byc wykonywana, bo juz zwrocila jakas wartosc.
  6. echo '0';
  7. return false;
  8. }
  9. ?>

wydrukuje tylko 1 i zwroci true

Ten post edytował dtb 12.11.2006, 13:53:46


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:53