konto usunięte

Temat: Wyświetlenie rekordów

Witam.

Chcę wyświetlić na stronie głównej 4 najnowsze newsy. W IndexController mam taki kod:

$news = new Application_Model_Db_News();
$newsNum = $news->fetchAll()->count();
for($i = 1; $i < 5; $i++){
$item_news = $news->fetchRow($news->select()->where('news_id = ?', ($newsNum - $i)));
echo $item_news->news_id;
}


Wyświetla mi on id 4 najnowszych newsów, ale ja chcę to przenieść jakoś do widoku , aby wyświetlić to w liście . Jak to zrobić? Domyślam się, że za pomocą tablicy, ale nie wiem w jaki sposób.

Cały czas dostaję taki błąd :

Catchable fatal error: Object of class Zend_Db_Table_Row could not be converted to string

konto usunięte

Temat: Wyświetlenie rekordów


$record[] = $item_news->news_id;


na końcu dajesz

return $record;


i wysyłasz do widoku.

Podstawy możesz sobie tutaj zobaczyć:
http://framework.zend.com/manual/en/learning.quickstar...

Wszystko jest dokładnie opisane co i jak.

A tak przy okazji:
jeśli będziesz miał milion newsów w bazie, to też będziesz pobierał wszystko i w pętli wyciągał sobie 5 rekodrów?

Zrób zapytanie ... select * from news order by desc limit 5
i masz ładnie 5 ostatnich rekordów pobranych.Mariusz M. edytował(a) ten post dnia 06.01.11 o godzinie 22:43

konto usunięte

Temat: Wyświetlenie rekordów

Ok, już wszystko wiem :) dziekiWojciech Dasiukiewicz edytował(a) ten post dnia 06.01.11 o godzinie 22:38

konto usunięte

Temat: Wyświetlenie rekordów

i moim zdaniem takie rzeczy powinny być w modelu jako funkcja. W kontrolerze byś ją jedynie wywołał. Mógłbyś nawet napisać taką funkcję:


//funkcja w modelu np. Newsy
public function wyswietlOstatnie($liczba){
$news = new Application_Model_Db_News();
$select = $news->select()->order('news_id')->limit($liczba);
$data = $news->fetchAll($select);

$wynik = array();
foreach($data as $wiersz){
$wynik[] = $wiersz;
}

return $data
}

a później taki kod w kontrolerze

$model = new tutaj_namespace_Newsy();
$this->view->zmienna = $model->wyswietlOstatnie(5);


Nie testowałem pisałem z głowy ale z założenia powinno działać :D
Dzięki takiej funkcji w każdym innym miejscu możesz wyświetlić x ostatnich newsów podając x jako parametr funkcji wyswietlOstatnie()

konto usunięte

Temat: Wyświetlenie rekordów

Łukasz Żak:

//funkcja w modelu np. Newsy
public function wyswietlOstatnie($liczba){
$news = new Application_Model_Db_News();
$select = $news->select()->order('news_id')->limit($liczba);
$data = $news->fetchAll($select);

$wynik = array();
foreach($data as $wiersz){
$wynik[] = $wiersz;
}

return $data
}

Zdecydowanie tak jak piszesz, drobna poprawka w kodzie, bo powinno być:

return $wynik;


I gdyby zmienne jeszcze były po angielsku, byłoby idealnie ;)

konto usunięte

Temat: Wyświetlenie rekordów

wszystko się zgadza, tylko że pytanie było o drobnostkę takie jak wysłanie wyniku do widoku a nie o całą logikę MVC
Jeśli używa Zenda to logiczne że poprawnie powinno się wszystko robić z wykorzystaniem modelu.

konto usunięte

Temat: Wyświetlenie rekordów

Racja przy returnie.
Jakub Kułak:
I gdyby zmienne jeszcze były po angielsku, byłoby idealnie ;)

A gdzie patriotyzm? :P Języka polskiego się wypierasz :>

konto usunięte

Temat: Wyświetlenie rekordów

Mariusz M.:
wszystko się zgadza, tylko że pytanie było o drobnostkę takie jak wysłanie wyniku do widoku a nie o całą logikę MVC
Jeśli używa Zenda to logiczne że poprawnie powinno się wszystko robić z wykorzystaniem modelu.

Jak widać, nie dla wszystkich logiczne ;) I dzięki forum właśnie można dowiedzieć się nowych, ciekawych rzeczy, i myślę, że dopóki nie rozpoczyna się wojna to dodatkowe informacje, dobre praktyki i wskazówki, są jak najbardziej na miejscu.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Wyświetlenie rekordów

Łukasz Żak:
A gdzie patriotyzm? :P Języka polskiego się wypierasz :>
a chcialbys refaktorowac kod po wegiersku, finlandzku, francusku czy chinsku?
podejrzewam ze nie, wiec dlatego nie powinno sie pisac po poslkiemu czy ponglishem :P

Temat: Wyświetlenie rekordów

Jakub Kułak:
Mariusz M.:
wszystko się zgadza, tylko że pytanie było o drobnostkę takie jak wysłanie wyniku do widoku a nie o całą logikę MVC
Jeśli używa Zenda to logiczne że poprawnie powinno się wszystko robić z wykorzystaniem modelu.

Jak widać, nie dla wszystkich logiczne ;) I dzięki forum właśnie można dowiedzieć się nowych, ciekawych rzeczy, i myślę, że dopóki nie rozpoczyna się wojna to dodatkowe informacje, dobre praktyki i wskazówki, są jak najbardziej na miejscu.

Zgadzam się z kolegą, że powinno się stosować nazewnictwo angielskie, chociażby ze względu na uniwersalność oraz przejrzystość. Jak nie wiemy jak nazwać zmienną aby utożsamiana była z jej przeznaczeniem skorzystajmy z translatora. Później wejdzie w krew :)

Jeśli chodzi o sam kod. Newsy to newsy, wiec w bazie pewnie mamy pole daty dodania/emisji.A jak nie ma, to dodajmy bo na pewno z czasem przyjdzie taka konieczność. Wystarczy po tym orderować i zlimitować. Jest prościej i jaśniej a co proste jest piękne :)

Temat: Wyświetlenie rekordów

Dokładnie, kontroler to bramka - przetwarzanie robimy w modelu, w widoku renderujemy rezultat i możemy się posłużyć helperami.

Łukasz Żak:
i moim zdaniem takie rzeczy powinny być w modelu jako funkcja. W kontrolerze byś ją jedynie wywołał. Mógłbyś nawet napisać taką funkcję:


//funkcja w modelu np. Newsy
public function wyswietlOstatnie($liczba){
$news = new Application_Model_Db_News();
$select = $news->select()->order('news_id')->limit($liczba);
$data = $news->fetchAll($select);

$wynik = array();
foreach($data as $wiersz){
$wynik[] = $wiersz;
}

return $data
}

a później taki kod w kontrolerze

$model = new tutaj_namespace_Newsy();
$this->view->zmienna = $model->wyswietlOstatnie(5);


Nie testowałem pisałem z głowy ale z założenia powinno działać :D
Dzięki takiej funkcji w każdym innym miejscu możesz wyświetlić x ostatnich newsów podając x jako parametr funkcji wyswietlOstatnie()

Temat: Wyświetlenie rekordów

Mariusz M.:
wszystko się zgadza, tylko że pytanie było o drobnostkę takie jak wysłanie wyniku do widoku a nie o całą logikę MVC
Jeśli używa Zenda to logiczne że poprawnie powinno się wszystko robić z wykorzystaniem modelu.

nie wiem do czego/kogo pijesz, ale gościu jest AS a nie od PHPa/Zenda.



Wyślij zaproszenie do