Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak wykonać metodę na ...
krk82
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 23.02.2007

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


Witam
Mamy klasę:
  1. <?php
  2. class DB{
  3.  
  4.  function Execute( $query ) {
  5. return mysql_query( $query );
  6. }
  7.  
  8.  function FetchRow(){
  9. ma wyświetlać kolejne rekordy
  10. }
  11.  
  12. }
  13. ?>


Nastepnie robimy:
  1. <?php
  2. $result = $db->Execute("SELECT * FROM ".TABLE_LANG."");
  3. while($Aresult = $result->FetchRow()){
  4. }
  5. ?>


i dostaje:
Fatal error: Call to a member function FetchRow() on a non-object in ...

I pytanie jak to zrobić ? Tzn co powinna zwracać Execute aby można było na tym co zwróci wykonać metodę FetchRow() ?
Go to the top of the page
+Quote Post
Jarod
post
Post #2





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(krk82 @ 23.02.2007, 19:10:48 ) *
i dostaje:
Fatal error: Call to a member function FetchRow() on a non-object in ...

Nie utworzyłeś instancji klasy.
Cytat(krk82 @ 23.02.2007, 19:10:48 ) *
I pytanie jak to zrobić ? Tzn co powinna zwracać Execute aby można było na tym co zwróci wykonać metodę FetchRow() ?

Execute() powinna np zapisywać wynik zapytania do zmiennej prywatnej z której będzie korzystać FetchRow().

Poczytaj najpierw o podstawach..


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Kod
Nie utworzyłeś instancji klasy.

To podstawa!
Ale jeśli nie chcesz tworzyć instancji możesz użyć słowa kluczowego static smile.gif

  1. <?php
  2. class DB{
  3.  
  4.  public static function Execute( $query ) {
  5. return mysql_query( $query );
  6. }
  7.  
  8.  function FetchRow(){
  9. return 1;
  10. }
  11.  
  12. }
  13.  
  14. DB::Execute('dadasd');
  15. ?>


Dodatkowo wskazujesz:
  1. <?php
  2. $result->FetchRow()
  3. ?>

że $result jest obiektem, a w Twoim kodzie z niczego to nie wynika.


--------------------
Go to the top of the page
+Quote Post
krk82
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 23.02.2007

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


instancje > tak tak wiem,
czyli co execute powinno zwrócić obiekt ?
żeby można było na niej użyć metody fetchRow() ?
Go to the top of the page
+Quote Post
TomASS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Ale powiedz co chcesz stworzyć, na razie takie rozmowa nie ma sensu, ponieważ sam nie wiesz co chcesz uzyskać - to skąd my mamy wiedzieć? smile.gif

Prawdopodobnie chcesz stworzyć jakiś sterownik/kontroler do bazy danych. Jeśli tak, to przemyśl jakie funkcje członkowskie (popularnie zwane metodami) chciałbyś wykorzystywać.
Cytat
czyli co execute powinno zwrócić obiekt ?

To Ty powinieneś najlepiej wiedzieć co chcesz uzyskać tą funkcją.

Cytat
żeby można było na niej użyć metody fetchRow() ?

Kod
$result->FetchRow()

Z tego wygląda, jak już pisałem, że $result musi być obiektem. Jeśli $result to wynik funkcji Execute() to odpowiedź na pierwsze pytanie brzmi. Tak - Execute() powinno zwracać obiekt.


--------------------
Go to the top of the page
+Quote Post
arecki
post
Post #6





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


Cytat(krk82 @ 23.02.2007, 19:10:48 ) *
  1. <?php
  2. $result = $db->Execute("SELECT * FROM ".TABLE_LANG."");
  3. while($Aresult = $result->FetchRow()){
  4. }
  5. ?>


Bardziej działało by gdybyś napisał:
  1. <?php
  2. $result = $db->Execute("SELECT * FROM ".TABLE_LANG."");
  3. while($Aresult = $db->FetchRow()){
  4. }
  5. ?>


Oczywiście gdyby w samej instancji klasy były przechowywane dane z wykonanego zapytania.


--------------------
Go to the top of the page
+Quote Post
sanchoo
post
Post #7





Grupa: Zarejestrowani
Postów: 161
Pomógł: 1
Dołączył: 11.02.2007
Skąd: Kraków

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


  1. <?php
  2. class walidacja{
  3.  
  4.  
  5.  public function pustepole($sprawdzany, $pole)
  6.  {
  7.  if(strlen($sprawdzany))
  8.  $veryfication = array ("strlen".$pole => 1); //1 - jesli poprawnie
  9.  else $veryfication = array ("strlen".$pole => 0);
  10.  
  11.  }
  12.  
  13. }
  14.  
  15.  
  16. $sprawdzanie =new walidacja;
  17. $sprawdzenie -> pustepole($_POST['nick'], 'nick'); //TO JEST 21 LINE!!
  18.  
  19. echo $veryfication['strlennick'];
  20. ?>


Fatal error: Call to a member function pustepole() on a non-object in /home/sanchoo/public_html/test/walidacja.php on line 21


Bede wdzieczny...
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





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

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


Kod
PHP Notice:  Undefined variable: sprawdzenie in runme.php on line 17


Juz znalazles blad?
i wyslweitlaj WSZYSTKIE BLEDY,
error_reporting( E_ALL );


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
sanchoo
post
Post #9





Grupa: Zarejestrowani
Postów: 161
Pomógł: 1
Dołączył: 11.02.2007
Skąd: Kraków

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


ok. wyjde pewnie na lame.. no ale mam dac var przed?? nie czaje za bardzo tego :/
Go to the top of the page
+Quote Post
arecki
post
Post #10





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


hint: ()


--------------------
Go to the top of the page
+Quote Post
sanchoo
post
Post #11





Grupa: Zarejestrowani
Postów: 161
Pomógł: 1
Dołączył: 11.02.2007
Skąd: Kraków

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


sprawdzanie != sprawdzenie
:/
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #12





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

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


hehehe

$sprawdzAnie =new walidacja;
$sprawdzEnie -> pustepole($_POST['nick'], 'nick'); //TO JEST 21 LINE!!

juz jasne? smile.gif

uzyj edytora z podpowiadaniem skladni -- unikniesz przynajmniej czesci takich bledow.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
sanchoo
post
Post #13





Grupa: Zarejestrowani
Postów: 161
Pomógł: 1
Dołączył: 11.02.2007
Skąd: Kraków

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


dzieki! smile.gif
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 Aktualny czas: 20.08.2025 - 22:26