Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> pytanie o DB_DAtaObject
acztery
post
Post #1





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


witam,

Od dawna stosuje DB_DataObject i mam pierwszy raz kłopot z tym "cudem"

Mam taki kod:

  1. <?php
  2. include_once 'Lang.class.php';
  3. require_once 'DB/DataObject.php';
  4. final class Doc extends DB_DataObject {
  5.  
  6. public $DataObject2;
  7.  
  8. public  function __construct()
  9. {
  10. $this->DataObject2 =  DB_DataObject::factory('documents');
  11. }
  12.  
  13.  
  14.  public function &lstDocuments($_where='',$_lang, $_limit='',$_order='')
  15. {
  16. if ($_limit <> '') {
  17. $this->DataObject2->Limit($_limit);
  18. }
  19. // Find element in table documents
  20. $this->DataObject2->find();
  21. while($this->DataObject2->fetch()) {
  22. $result['data'][] = $this->DataObject2->toArray();
  23. }
  24. return $result = isset($result) ? $result : null;
  25. }
  26. }
  27. ?>


i działa ( działa tylko 1 raz ) tzn:

  1. <?php
  2. $DocClass = new Doc();
  3.  
  4.  
  5. $smarty->assign('news',$DocClass->lstDocuments('Nowosci','pl',7,'time DESC')); // dziala 
  6. $smarty->assign('promo',$DocClass->lstDocuments('Promocje','pl',2,'time DESC')); // nie dziala 
  7. $smarty->assign('news2',$DocClass->lstDocuments('Nowosci','pl',1,'time DESC')); // nie dziala 
  8. $smarty->assign('prod',$DocClass->lstDocuments('Produkty','pl',3,'time DESC')); // nie dziala
  9. ?>


Moze ktos mi powie co mam nie tak przeciez klasa jest napisana dobrze.

Pamietaj ze zapytanie generuje dobrze do pokazuje dobrze 7 nowosci ( news ) w smarty.

jak to

$this->DataObject2 = DB_DataObject::factory('documents');

przeniose do metody lstDocuments to dziala..

Ten post edytował acztery 26.12.2006, 18:35:55
Go to the top of the page
+Quote Post
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


A gdzie używasz argumentu $where w metodzie Doc::lstDocuments()?
edit:
Aaaah, przyciąłeś klasę.


Mało kodu.

edit:
Hmmm, a po co klasa Doc dziedziczy po klasie DB_DataObject? Wydaje mi się to niepotrzebne, ponieważ używasz tego obiektu wewnątrz klasy.

Ten post edytował LBO 26.12.2006, 17:28:52
Go to the top of the page
+Quote Post
acztery
post
Post #3





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


kod jest ucięty ale to nie ma znaczenia

nie chciałem wklejać całości o to chyba nie ma znaczenia. a argumentu urzywam tak.
  1. <?php
  2. ....
  3.  
  4. if ($_where <> '') {
  5. $this->DataObject2->whereAdd("Cat = '$_where'");
  6. }
  7. ...
  8. ?>


i tak analogicznie z $_order i $_lang. ale nawet z tym nie działa, mi sie wydaje ze to wina samej klasy DB_DataObject
Go to the top of the page
+Quote Post
LBO
post
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Zdebuguj kod, dodaj jakieś opisy wykonywanych akcji etc. Czy DB_DatabObject posiada metodę toSQL? Możesz podejrzeć wygenerowane zapytanie?
Go to the top of the page
+Quote Post
acztery
post
Post #5





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


debug daje coś takiego:

tblDocuments: FETCH: Last Data Fetch'ed after 0.0035898685455322 seconds
tblDocuments: ERROR: You cannot do two queries on the same object (copy it before finding)
tblDocuments: ERROR: You cannot do two queries on the same object (copy it before finding)
tblDocuments: 0: fetched on object after fetch completed (no results found)
tblDocuments: ERROR: You cannot do two queries on the same object (copy it before finding)
tblDocuments: ERROR: You cannot do two queries on the same object (copy it before finding)
tblDocuments: 0: fetched on object after fetch completed (no results found)
tblDocuments: ERROR: You cannot do two queries on the same object (copy it before finding)
tblDocuments: ERROR: You cannot do two queries on the same object (copy it before finding)
tblDocuments: 0: fetched on object after fetch completed (no results found)

reszta zapytan pobiera dane prawidłowo. przy tym co dalem zapytanie jest takie

SELECT * FROM `documents` LIMIT 0, 7
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: 4.10.2025 - 13:46