![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 9.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Chciałbym zrobić na swojej stronie głównej aby wyświetlały się tylko ogłoszenia promowane przez użytkowników. Może ktoś pomoże mi przerobić poniższy kod, aby na stronie głównej wyświetlane były tylko oferty promowane, ale rotacyjnie to znaczy przy każdym odświeżeniu strony mają się pojawiać losowo ogłoszenia promowane. Coś takiego jak jest na stronie oferty-dom.pl Kod <?php if(!empty($this->advertisements)) { echo '<table class="advTop" cellspacing="0" cellpadding="0" border="0"> <tr> <td class="advTopCam"><center> <img src="public/images/camera.gif" alt=""/></center></td> <td class="advTopType"> <b>typ nieruchomości</b><br/> typ ogłoszenia</td> <td class="advTopSize"><b>powierzchnia</b></td> <td class="advTopPrice"><b>cena</b></td> <td class="advTopPro"> <b>województwo</b><br/> miasto</td> <td class="advTopDate"> <b>data dodania</b></td> </tr> </table> <table style="margin-top:5px;" cellpadding="0" cellspacing="0">'; foreach($this->advertisements as $advertisement) { if($advertisement->promo) { ///////////////////////////////////////////////////////////////// promo advertise echo '<tr > <td> <a href="adv/show/'.StringModifier::FriendlyUrl($advertisement->advertisementType).'/'.StringModifier::FriendlyUrl($advertisement->propertyType).'/'.StringModifier::FriendlyUrl($advertisement->province).'/'.$advertisement->id.'.html"><img src="public/images/'; if(!empty($advertisement->image)) echo 'advertisements/'.$advertisement->image.'_thumb.jpg'; else echo 'photo.gif'; echo '" class="photoPromo" alt=""/></a> </td> <td style="padding-top:5px;" valign="top"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td class="offerTypePromo"> <img src="public/images/p.gif" style="float:left;margin-right:5px;" alt=""/> <a href="adv/show/'.StringModifier::FriendlyUrl($advertisement->advertisementType).'/'.StringModifier::FriendlyUrl($advertisement->propertyType).'/'.StringModifier::FriendlyUrl($advertisement->province).'/'.$advertisement->id.'.html"><b>'.mb_strtoupper($advertisement->propertyType, "UTF-8").'</b><br/>'.$advertisement->advertisementType.'</a> </td> <td class="offerSizePromo"> '.$advertisement->areaSize.' m<sup><small>2</small></sup> </td> <td class="offerPricePromo">'; if($advertisement->price > 0) echo $advertisement->price.' zł'; else echo 'b/d'; echo '</td> <td class="offerProvincePromo"> <b>'.$advertisement->province.'</b><br/> '.$advertisement->city.' </td> <td class="offerDatePromo"> '.$advertisement->announceDate.' </td> </tr> <tr> <td colspan="4" class="offerDescPromo" valign="top"> '.StringModifier::Cut($advertisement->description, 40).' (...) </td> <td class="offerMorePromo" valign="top"> <a href="adv/show/'.StringModifier::FriendlyUrl($advertisement->advertisementType).'/'.StringModifier::FriendlyUrl($advertisement->propertyType).'/'.StringModifier::FriendlyUrl($advertisement->province).'/'.$advertisement->id.'.html"><img src="public/images/more.gif" alt="" style="margin-top:2px;padding:0px;"/></a><br/>'; if($this->user->admin) // admin menu echo ' <a href="account/edit/'.$advertisement->id.'"><img src="public/images/edit.gif" alt="" style="margin-top:2px;padding:0px;"/></a><br/> <a href="account/delete/'.$advertisement->id.'"><img src="public/images/delete.gif" alt="" style="margin-top:2px;padding:0px;"/></a><br/>'; echo '</td> </tr> </table> </td> </tr>'; } else { ///////////////////////////////////////////////////////////////// none echo ''; } } echo '</table>'; } ?> Pozdrawiam i z góry dziękuję za wszelką pomoc. Ten post edytował m-dom 12.12.2009, 20:15:56 -------------------- Zapraszam do serwisu z ofertami nieruchomości m-dom.pl
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 8 Dołączył: 10.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witaj, nie wiem czy Ci pomogę ale ja na Twoim miejscu zrobiłbym tak:
- Połączył się z bazą i zaznaczył wszystkie ogłoszenia - Zliczył wszystkie ogłoszenia - Następnie funkcją RAND wylosował jakiś numer zgłoszenia - Połączył się z bazą i wybrał wylosowane przez RAND ogłoszenie Powinno wyglądać to mniej więcej tak za pomocą biblioteki PDO
Ale być może któryś ze specjalstów poda Ci lepszą wskazówke ![]() Pozdrawiam Ten post edytował Damiankossek 12.12.2009, 14:58:52 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 9.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
A mógł by ktoś napisać mi jak powinien wyglądać ten mój plik po przeróbce, bo zupełnie nie wiem jak by miało to wyglądać ?
-------------------- Zapraszam do serwisu z ofertami nieruchomości m-dom.pl
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pierwsza sprawa: szukasz w złym miejscu! Sprawdzż w którym pliku inicjalizowana jest zmienna '$this->advertisements' i tam kombinuj.
@Damiankossek Cytat - Połączył się z bazą i zaznaczył wszystkie ogłoszenia - Zliczył wszystkie ogłoszenia - Następnie funkcją RAND wylosował jakiś numer zgłoszenia - Połączył się z bazą i wybrał wylosowane przez RAND ogłoszenie Czemu potrzebne Ci do tego aż dwa zapytania ? ![]() Nie lepiej:
-------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Sam do rand() w zapytaniu bym sę skłaniał... Tyle że niedawno czytając artykuł "Czego powinno się unikać w celu optymalizacji zapytań?" natknąłem się, oprócz takich standardowych jak unikanie SELECT *, także na rand(). Z artykułu wynikało, że obciąża bazę bardziej niż powinien.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak racja, znam to, ale... co innego używanie RAND() do sortowania iluś tam wybranych rekordów a co innego gdy wyciąga się tylko jeden rekord
![]() Wyobraź sobie, że miałbyś wybrać jeden przypadkowy rekord z bazy danych za pomocą RAND() (i jednego zapytania) i za pomocą dwóch zapytań i foreach/for pomiędzy nimi gdyby w tabeli bylo powiedzmy ... 3 mln rekordów. W sumie łatwo sprawdzić co by było wydajniejsze ![]() -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 9.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko fajnie, ale może ktoś mi napisze jak przerobić ten mój kod i zastosować ten rand().
-------------------- Zapraszam do serwisu z ofertami nieruchomości m-dom.pl
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 15:08 |