![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 5.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taki oto problem... otóż mam stronę z ogłoszeniami, w niej wyszukiwarkę. Wyniki wyszukiwania zawsze wyświetlały się w ten sposób, że ostatnio dodana oferta lądowała na górze listy i spychała niżej, oferty dodane wcześniej. Takie rozwiązanie nie wydaje mi się do końca w porządku, osoba która dodała wpis na samym początku funkcjonowania serwisu może czuć się oszukana. Pomyślałem więc, żeby oferty wyświetlane były na podstawie wartości kolumny, w której rekordy dotyczące poszczególnych wpisów zmieniałyby się co jakiś określony czas. Jako że nie mogę zastosować AUTO_INCREMENT do wspomnianej kolumny (ta opcja wykorzystana już jest przy polu id), aby wartość była niepowtarzalna, pobieram ją z daty i godziny i zapisuję jako ciąg liczbowy. Teraz przy pomocy crona, planuję "updatować" tą wartość działaniem, które pozwoliłoby na to, aby oferta dodana na samym początku działania serwisu, miała szanse znaleźć się wyżej w wynikach wyszukiwania... Wiadomym jest, że oferta dodana wcześniej, będzie miała mniejszą wartość od tej dodanej później, przez co np. pomnożenie jej przez 2 nie da możliwości aby oferta dodana wcześniej pozyskała większą wartość niż ta dodana później... (mam nadzieję że jasno to opisałem)... (IMG:style_emoticons/default/wacko.gif) Jako że nigdy nie byłem dobry z matmy.. podpowiedzcie mi.. jakie działanie pozwoli na to aby 2 wartości, większa i mniejsza zamieniły się miejscami (IMG:style_emoticons/default/questionmark.gif) ? Pozdrawiam serdecznie Aha... standardowo zapisywany ciąg składa się z 14 cyfr, zapisywany w pole varchar(18) (nie wiem czy dobry typ komórki i wartość wybrałem...) no i czy nie zaora to serwera jeżeli miałby w ten sposób przeliczyć kilka tysięcy pozycji ? Ten post edytował malin90 28.03.2012, 22:21:44 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 281 Pomógł: 0 Dołączył: 8.07.2005 Skąd: EU Ostrzeżenie: (0%) ![]() ![]() |
otóż mam stronę z ogłoszeniami, w niej wyszukiwarkę. Wyniki wyszukiwania zawsze wyświetlały się w ten sposób, że ostatnio dodana oferta lądowała na górze listy i spychała niżej, oferty dodane wcześniej. Takie rozwiązanie nie wydaje mi się do końca w porządku, osoba która dodała wpis na samym początku funkcjonowania serwisu może czuć się oszukana. kombinujesz jak łysy koń pod górę (IMG:style_emoticons/default/wink.gif) to rozwiązanie powyżej jest jak najbardziej naturalne |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 5.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
może i jest naturalne... ale czy sprawiedliwe ? po za tym musi tak być jak piszę, nie chcę się tłumaczyć przed niezadowolonymi z pozycji ogłoszeniodawcami.. a tak są wszyscy równi
Ten post edytował malin90 28.03.2012, 22:54:38 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 18 Dołączył: 17.04.2006 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz pobierać np losowo ofert od dziś do jakiegoś czasu wstecz np do miesiąca? Albo raz dziennie losować x ogłoszeń i zapisywać ich id, które w danym dniu będą wyświetlane. Nie wiem co to za system, ale ogłoszenia przecież ulegają też przedawnieniu.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 3 Dołączył: 27.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
a nie wystarczy SELECT * FROM ogloszenia ORDER BY RAND() LIMIT 10;
ewentualnie tak, jak napisał camikazee, druga tabela z danymi, w której co jakiś czas robisz truncate i potem select.. into... order by rand() ? ? Ten post edytował MatKus 30.03.2012, 13:46:54 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 5.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Temat do zamknięcia.. rozwiązałem sprawę w inny sposób, aczkolwiek trochę podobny bo nie kasuję rekordów ale losowo zmieniam ich wartości.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:41 |