Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] nie dzialaja metody rodzica w klasie dziedzinej
become
post 23.01.2007, 11:11:24
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


  1. <?php
  2. Class myDB extends DB {
  3.  
  4.  function selectUsers($element) {
  5. $q="
  6. SELECT *
  7. FROM users
  8. WHERE id=$element
  9. ";
  10. $res=$this->getRow($q, array(), DB_FETCHMODE_ASSOC);
  11. if (PEAR::isError($res)) {
  12.  die($res->getMessage() . ' | ' . $res->getDebugInfo());
  13. }
  14.  }
  15.  
  16. }
  17. ?>


wywala błąd
Call to undefined method myDB::getRow()

getRow jest metodą clasy DB pakietu PEAR

próbowałem przez parent::getRow ale jest dokładnie to samo.

Ten post edytował become 23.01.2007, 11:39:31


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
nospor
post 23.01.2007, 11:29:57
Post #2





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




Prosze uzywac bbcode i poprawic pierwszy post

Do problemu:
az se sciagnalem ten pakiet. No moze ja slepy jestem, ale ja w klasie DB nie widze metody getRow(), wiec nie dziwie sie, ze i php jej nie widzi... tongue.gif

edit: metode taką znalazlem w klasie DB_common


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

"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
become
post 23.01.2007, 11:43:33
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


no widzę teraz.
ze DB_common jest klasą interfejsu.

czy to oznacza, że muszę stworzyć osobną klase dziedziną dla tego interfejsu ?

bo w takim razie jakim cude działa to:
  1. <?php
  2. // Create a valid DB object named $db
  3. // at the beginning of your program...
  4. require_once 'DB.php';
  5.  
  6. $db =& DB::connect('pgsql://usr:pw@localhost/dbnam');
  7. if (PEAR::isError($db)) {
  8. die($db->getMessage());
  9. }
  10.  
  11. // Proceed with a query...
  12. $res =& $db->query('SELECT * FROM clients');
  13.  
  14. // Always check that result is not an error
  15. if (PEAR::isError($res)) {
  16. die($res->getMessage());
  17. }
  18. ?>


skoro metoda query tez nie istnieje w clasie DB

co wogole oznacza znak "&" przed wywolaniem metod ?

Ten post edytował become 23.01.2007, 11:49:23


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
nospor
post 23.01.2007, 11:52:37
Post #4





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




Cytat
skoro metoda query tez nie istnieje w clasie DB
no ale ty zobacz co zwraca metoda connect, a potem sie pytaj.
connect zwraca obiekt innej klasy niz klasa DB. i akurat te inne obiekty maja to co trzeba. W twoim wypadku jest to obiekt klasy DB_pgsql

Cytat
co wogole oznacza znak "&" przed wywolaniem metod ?
Ze chcesz referencje do tego co zwraca


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

"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
become
post 23.01.2007, 12:06:25
Post #5





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


no dobrze.
to czy istnieje jakas metoda rozszerzenia klasy DB w taki sposob aby miec dostep do metod klas obiektow zwracanych przez DB ?


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
nospor
post 23.01.2007, 12:08:43
Post #6





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




ale ci ciagle chodzi o te getRow() ? No to twoja klasa musi dziedziczyc po DB_common

Jesli nadal ci oto nie chodzi, to napisz co chcesz osiągnąć.


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

"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
become
post 23.01.2007, 12:17:51
Post #7





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


chce sobie napisac klasę, w ktorej umieszcze rozne funkcje dotyczace dodawania uzytkownika, usuwania, modyfikacji danych na bazie.

chcialbym do tego celu wykorzystac klase DB.

czyli np.

mojaKlasa->DodajUsera("imie","nazwisko");

w metodzie DodajUsera bedzie tworzony jakis kod SQL.
a nastepnie dodajUsera skorzysta z metody query clasy DB_common pakietu DB.

podobnie jezeli chodzi o pobieranie danych i korzystanie z metod klasy DB_result.


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
nospor
post 23.01.2007, 12:21:25
Post #8





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




Cytat
a nastepnie dodajUsera skorzysta z metody query clasy DB_common pakietu DB.

no to w czym problem? napisalem przeciez: klasa ma dziedziczyc po DB_common

Cytat
podobnie jezeli chodzi o pobieranie danych i korzystanie z metod klasy DB_result.
No to zobacz teraz co robi query() z klasy common:
  1. <?php
  2. //....
  3. else {
  4. $tmp =& new DB_result($this, $result);
  5. return $tmp;
  6. }
  7. //...
  8. ?>


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

"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
become
post 23.01.2007, 12:32:59
Post #9





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


sory, ale nie mam zielonego pojecia jak to zrobic ... moze jakis przyklad ?

  1. <?php
  2. Class myDB_common extends DB_common {
  3.  
  4.  function selectUsers($element) {
  5. $q="
  6. SELECT *
  7. FROM users
  8. WHERE id=$element
  9. ";
  10. $res=$this->getRow($q, array(), DB_FETCHMODE_ASSOC);
  11. if (PEAR::isError($res)) {
  12.  die($res->getMessage() . ' | ' . $res->getDebugInfo());
  13. }
  14.  }
  15. }
  16. ?>


jezeli polacze sie tworzac nowy obiekt z klasy DB

$db =& DB::connect($dsn, $options);

to przeciez w wyniku mam obiekt klasy DB_common a nie myDB_common i nie bede mial dostepu do metody selectUser

Ten post edytował become 23.01.2007, 13:02:34


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
nospor
post 23.01.2007, 13:22:10
Post #10





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




no ale przeciez zobacz jeszcze raz co robi connect. ona zwraca obiekt takiej klasy, jaki masz zadeklarowany w $dsn. wczesniej zwracal ci DB_pgsql, bo miales: pgsql://usr:pw@localhost/dbnam'

Jak chcesz by ci zwracal twoją klase to masz miec:mytype://usr:pw@localhost/dbnam'
a klasa ma sie nazywac: DB_mytype i lezec w pliku o nazwie: mytype.php.


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

"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
become
post 23.01.2007, 13:37:16
Post #11





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


ludzie - czy to musi byc tak zagmatwane ?

ja chce korzystac z wszystkich metod należących do klas DB, DB_common, DB_result w swojej wlasnej klasie, ktora bedzie zawierala konkretne metody - dodaj uzytkownika, modyfikuj dane itp[.

szybciej zrobie to tworzac plik z funkcjami, gdzie w kazdej funkcji bede tworzyl nowy obiekt polaczenia z baza i sprawa zalatwiona


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
nospor
post 23.01.2007, 13:39:55
Post #12





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




Cytat
ludzie - czy to musi byc tak zagmatwane ?
a czy to moja wina zes sie uczepil tego PEARa? smile.gif

pozatym co ty w tym skomplikowanego? Nadac nazwe klasy wedlug pewnego schematu?
Byc moze mozna to zrobic inaczej, nie wiem, pear w zyciu nie uzywalem, sciagnalem go sobie teraz na potrzeby tego topicu i drogą dedukcji mowie ci jak oni to maja smile.gif


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

"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

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: 15.06.2025 - 00:07