Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] OOP Problem z pętla, jw
miras
post
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam, dodałem do pętli jeszcze jeden warunek, żeby ją "zabić" w momencie, w którym to będzie potrzebne jednak mam błąd:

  1. : Call to a member function fetch() on a non-object in




i kod:


  1. $this->res=1;
  2. $this->check=1;
  3. while($row = $this->result->fetch() && $this->check==1) {
  4.  
  5. if($row['result']==1 && $this->res==1) {
  6. $this->res = $this->$row['result'];
  7. $this->result=1;
  8. } elseif($row['result']==0) {
  9. $this->result=0;
  10. $this->check=0;
  11. } else {
  12. $this->result=3;
  13. $this->check=0;
  14. }
  15.  
  16. }


dodam, że jak usunę ten dodatkowy warunek pętli to jest ok..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Po co to w ogóle tak logicznie?

  1. while($row = $this->result->fetch()) {
  2.  
  3. if($row['result']==1) {
  4. $this->res = $this->$row['result'];
  5. }
  6. }

Wychodzi na to samo

Ten post edytował Turson 7.11.2013, 20:43:21
Go to the top of the page
+Quote Post
miras
post
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


może i wychodzi na to samo, ale pętla będzie mi się kreciła dalej.. chciałbym to jakoś zoptymalizowac..
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Call to a member function fetch() on a non-object in
Próbujesz wywołać metodę fetch() na czymś co w ogóle nie jest obiektem. Bardzo jasno napisane co jest przyczyną.
Go to the top of the page
+Quote Post
miras
post
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


ehh, zapytam inaczej.. (pomijajac fakt, ze gdybym wiedzial jak rozwiazac blad czytajac komunikat bledu to bym go rozwiazal)


w jaki sposób można "zastopować" tą pętle?

  1. while($row = $this->result->fetch() ) {
  2.  
  3. if($row['result']==1 && $this->res==1) {
  4. $this->res = $this->$row['result'];
  5. $this->result=1;
  6. } elseif($row['result']==0) {
  7. $this->result=0;
  8. $this->check=0;
  9. } else {
  10. $this->result=3;
  11. $this->check=0;
  12. }
  13.  
  14. }
Go to the top of the page
+Quote Post
irmidjusz
post
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


zastopować pętlę można instrukcją break
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Problem nie ma najmniejszego związku z samą pętlą.
2. $this->result nie jest obiektem, więc nie możesz na nim wywołać metody fetch() o czym informuje Cię komunikat błędu. Innymi słowy problem jest w miejscu przypisania wartości do $this->result. Prawdopodobnie jakaś funkcja zwraca false/null zamiast obiektu.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 6.10.2025 - 19:04