Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]zend framework - odczytanie zapytania
kielich
post 15.02.2010, 19:29:29
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Mam problem w odczytaniu wszystkich rekordów z bazy w której znajduje się 10 pól. Pewnie źle coś robię ale uczę się przez praktykę biggrin.gif

  1. <?php foreach($this->Ocena as $a); ?>
  2. <?php echo $a->tresc; ?>
  3. <? endforeach; ?>


  1. <?php
  2. class Application_Model_DbTable_Ocena extends Zend_Db_Table_Abstract
  3. {
  4. protected $_name = 'ocena';
  5.  
  6. public function getLosowaOcena($id) {
  7.  
  8. $sql = $this->select()->limit (5);
  9. return $this->fetchAll($sql);
  10.  
  11.  
  12.  
  13. }
  14.  
  15.  
  16. }


Wyświetla mi tylko jeden rekord a powinno być 5 jak w limicie
dlaczego questionmark.gif?


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
jasin
post 15.02.2010, 19:51:51
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 32
Dołączył: 21.08.2008
Skąd: Toruń

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


Nie wiem czy pomoże, ale gdybyś dał
  1. limit(5,0)
?


--------------------
Go to the top of the page
+Quote Post
kielich
post 15.02.2010, 19:54:23
Post #3





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Powiem ci że to nie ma znaczenia ponieważ robiąc tak

  1. $sql = $this->select();
  2. return $this->fetchAll($sql);
  3. ...

nic to nie daje niby jest select * .... a wyswietla tylko jeden rekord


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
jasin
post 15.02.2010, 20:03:54
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 32
Dołączył: 21.08.2008
Skąd: Toruń

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


A tak?
  1. $sql = $this->select()->limit(5);
  2. return $this->fetchAll($sql)->toArray();


--------------------
Go to the top of the page
+Quote Post
kielich
post 15.02.2010, 20:05:44
Post #5





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


wywala bład

Kod
Notice: Trying to get property of non-object in


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
jasin
post 15.02.2010, 20:10:44
Post #6





Grupa: Zarejestrowani
Postów: 142
Pomógł: 32
Dołączył: 21.08.2008
Skąd: Toruń

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


Ale wywala notice na
  1. $this->fetchAll($sql)->toArray();
czy czasem na
  1. <?php echo $a->tresc; ?>

Jak daję u siebie
  1. var_export($this->fetchAll($sql)->toArray());exit;
to jest ok. Może powinno być
  1. <?php echo $a['tresc']; ?>


--------------------
Go to the top of the page
+Quote Post
kielich
post 15.02.2010, 20:56:29
Post #7





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


kiedy daje tak jak teraz napisałeś to wyswietla ale tez jeden rekord

zrobiłem jeszcze dla Pewności printa dla $a w foreach i dostaje 1 rekord

  1. Array ( [id] => 5 [tresc] => sdcisucyb [kiedy] => 2010-02-16 )


kontroler jeszcze do tego wyglada tak dlatego nie wiem dlaczego to nie wyswietla * rekordów

  1. $Ocena = new Application_Model_DbTable_Ocena();
  2. $this->view->Ocena = $Ocena->getLosowaOcena();


Ten post edytował kielich 15.02.2010, 20:35:30


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
l3l0
post 15.02.2010, 21:30:17
Post #8





Grupa: Zarejestrowani
Postów: 94
Pomógł: 16
Dołączył: 24.07.2009
Skąd: Gdańsk

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


Masz średnik po foreach
  1. <?php foreach($this->Ocena as $a); ?>

zamień to na
  1. <?php foreach($this->Ocena as $a): ?>
Go to the top of the page
+Quote Post
kielich
post 16.02.2010, 22:47:58
Post #9





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


dalej jeden rekord ;/ strasznie to dziwne

Czy to przypadek nie do rozwikłania questionmark.gif juz od 3 H się głowie a to pewnie jakiś banał ...

Czy ma ktoś jeszcze jakiś pomysł questionmark.gif ?

I co nikt nie jest w stenie mi pomóc questionmark.gif !?!? sad.gif

.

hmmm wiele przesiedziałem przy takie drobnostce ....
może jest ktoś kto będzie w stanie mi pomóc ?!?!??!

?!?!

Ten post edytował kielich 16.02.2010, 21:59:00


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
melkorm
post 17.02.2010, 00:08:17
Post #10





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
  1. public function getLosowaOcena($id) {
  2.  
  3. $sql = $this->select()->limit (5);
  4. return $this->fetchAll($sql);
  5.  
  6.  
  7.  
  8. }

zamień na:

  1. public function getLosowaOcena($id) {
  2.  
  3. $sql = $this->select()->limit (5);
  4. var_dump($sql->__toString());
  5. return $this->fetchAll($sql);
  6.  
  7.  
  8.  
  9. }


i pokaż jakie zapytanie tworzy to raz. I wklej na nowo co potworzyłeś winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
mortus
post 17.02.2010, 08:17:39
Post #11





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Witam.
To spróbuj w kontrolerze zrobić tak:
  1. $Ocena = new Application_Model_DbTable_Ocena();
  2. $this->view->Ocena = $Ocena->fetchAll();

i w pliku widoku tak:
  1. <?php
  2. foreach($this->Ocena as $a) :
  3. echo $a->tresc . '<br />';
  4. endforeach;
  5. ?>

Jeżeli nadal będzie tylko jeden rekord, to sprawdź ile rekordów jest w tabeli w bazie danych.
Uwaga: Znacznik <br /> stosujemy tutaj tylko dla lepszego wyglądu!
Go to the top of the page
+Quote Post
kielich
post 17.02.2010, 18:00:56
Post #12





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Kontroler
  1. $Ocena = new Application_Model_DbTable_Ocena();
  2. $this->view->Ocena = $Ocena->getLosowaOcena();


widok
  1. <?php foreach($this->Ocena as $a) ?>
  2. <?php echo $a->tresc; ?>
  3. <? endforeach; ?>


model
  1. <?php
  2. class Application_Model_DbTable_Ocena extends Zend_Db_Table_Abstract
  3. {
  4. protected $_name = 'ocena';
  5.  
  6. public function getLosowaOcena() {
  7.  
  8.  
  9. $sql = $this->select();
  10.  
  11. return $this->fetchAll($sql);
  12.  
  13.  
  14.  
  15. }
  16.  
  17.  
  18. }


powyższe przykłady sprawdzałem ciągle jeden rekord wypisuje w bazie jest 11 rekordów


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
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: 5.07.2025 - 08:26