Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] losowe sortowanie wyników o określonej godzinie, działanie matematyczne
malin90
post
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
Go to the top of the page
+Quote Post
yalus
post
Post #2





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


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ę (IMG:style_emoticons/default/wink.gif) to rozwiązanie powyżej jest jak najbardziej naturalne
Go to the top of the page
+Quote Post
malin90
post
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
Go to the top of the page
+Quote Post
camikazee
post
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.
Go to the top of the page
+Quote Post
MatKus
post
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
Go to the top of the page
+Quote Post
malin90
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:41