Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [OOP] nadpisywanie wartości zmiennych
maciu
post 26.07.2005, 11:25:47
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

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


mam taki kod:
  1. <?php
  2.  
  3. $sql = new Bd($dbhost, $dbuser, $dbpass, $dbname);
  4. $sql->otworz();
  5.  
  6. $zapytaj = $sql->zapytaj(&#092;"select * fromtabela limit 0, 20 \");
  7. $zapytaj_all = $sql->zapytaj(&#092;"select * from tabela\");
  8.  
  9. while($wynik = $sql->pobierzTabliceAsocjacyjna($zapytaj))
  10. {
  11. echo $wynik['id']; 
  12. }
  13.  
  14. ?>

gdzie metody:
DB() - konstruktor
otworz() - iniciuje połączenie z bazą
zapytaj() - wykonuje zapytanie mysql_query()
pobierzTabliceAsocjacyjna() - pobiera tablice mysql_fetch_assoc()

zmienna $zapytaj_all nadpisuje wartości zmiennej $zapytaj, tak, że pętla while jest wykonywana w rzeczywistości na zmiennej $zapytaj_all (w pętli wyświetlają się wszystkie rekordy zamiast 20)

Czemu tak się dzieje? Czy do każdego zapytania $sql->zapytaj() musze tworzyć nowy obiekt?
Go to the top of the page
+Quote Post
kszychu
post 26.07.2005, 11:29:13
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


To stwórz $sql1 i wtedy:
  1. <?php
  2. $zapytaj = $sql->zapytaj(&#092;"select * fromtabela limit 0, 20 \");
  3. $zapytaj_all = $sql1->zapytaj(&#092;"select * from tabela\");
  4. ?>


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
bieniek
post 26.07.2005, 12:21:03
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.07.2005

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


No oczywiście że zwróci ci wszytkie rekordy bo instancja objektu dotyczy połączenia z bazą danych a nei wyniku zapytania.
W sumie nie wiem po co ci potrzebna jest historia zapytań gdyż najczęściej zpytania wykonuje się w celu pobrania danych do przetworzeania i wyświetlenia, a nie przetrzymywania gdziekolwiek.
Ale jak mocno chcesz to nie ma problemu, żeby w metodzie zapytaj(...) wynik zwracany był np. do tablicy (IMHO zabawa z kluczami i reszta - szkoda zachodu)
Lub stwórz klase odpowiedzialną za zapytanie i w niej metody do pobierania danych.


--------------------
Go to the top of the page
+Quote Post
bela
post 26.07.2005, 12:33:29
Post #4


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Z historii zapytań można debuga zrobić winksmiley.jpg

A co do kodu zrób tak, że metoda zapytaj będzie zwracać obiekt Result.

  1. <?php
  2. class db {
  3. function zapytaj($zapytanie) {
  4. return new Result(mysql_query($zapytanie));
  5. }
  6. }
  7.  
  8. class Result {
  9. function Result($handler) {
  10. $this->handler = $handler;
  11. }
  12. }
  13. ?>

Dopisz sobie jeszcze funkcje mysql_fetch_*


--------------------
Go to the top of the page
+Quote Post
SongoQ
post 26.07.2005, 12:52:47
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Dopisal bym jeszcze metode ktora zwraca tablice 2 wymiarowa zwroconych rekordow.


--------------------
Go to the top of the page
+Quote Post
maciu
post 28.07.2005, 09:38:07
Post #6





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

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


hmm, czy da się jednoznacznie powiedzieć, co jest bardziej wydajne, czy do każdego zapytania utworzyć nowy obiekt, czy też przechowywać wartości w tablicy?
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: 18.07.2025 - 01:38