Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] losowe sortowanie wyników o określonej godzinie
Forum PHP.pl > Forum > PHP
malin90
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)... 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 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 ?
yalus
Cytat(malin90 @ 28.03.2012, 21:17:52 ) *
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ę wink.gif to rozwiązanie powyżej jest jak najbardziej naturalne
malin90
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
camikazee
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.
MatKus
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() ?

?
malin90
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.