Spis treści
Ciekawy problem, czytałem o nim wiele, aż sam postanowiłem na ten temat coś napisać 
Wstęp teoretyczny
Cały ten wpis ma na celu pokazania możliwości w jaki sposób mamy wybrać losowy rekord z bazy danych. Pokazać jaka metoda jest najlepsza i dla kogo. Jeżeli ktoś nie wie czym jest MySQL to może dalej nie czytać, gdyż w tym wpisie nie zostanie to wytłumaczone, gdyż aby szukać odpowiedzi na takie pytanie powinniśmy już wiedzieć czym jest baza i wszystkie zwoązane z tym pojęcia. Resztę zapraszam dalej.
Opis problemu
Pewnie każdy w pewnym momencie będzie potrzebował czegoś losowego na stronę. Losowy wpis z bazy danych, czy może coś innego losowane z bazy danych. Nie chodzi mi tu o jakieś losowe wyświetalnie napisu, bo przeciętny napis można sobie spokojnie na poziomie PHP generować. Chodzi tu o coś w stylu wpisu z bloga, artykule czy czymś podobnym. No a skoro czegoś takiego nie znamy to pytamy wujka Google. Oczywiście znalazłem trochę wpisów na różnych blogach, ale nie każdy podawał właściwe (odpowiednie) rozwiązanie. O tym w dalszej części.
Sposoby rozwiązania
- <?php
- $result = mysql_query('SELECT * FROM `jakas_baza` ORDER BY RAND() LIMIT 1'); // pobiera jeden losowy rekord
- // A tu funkcja mojej roboty ;)
- // uznajemy że $query to treść zapytania z którego mamy zamiar wziąć losowy wpis, czyli np. "SELECT * FROM `cos`", ale nie można dać średnika na końcu !
- }
- /*
- $primary - jest to klucz podstawowy danej tabeli, lub pole które ma najmniej danych, po to aby zapytanie zliczające ilość pól było jak najszybsze;
- $table - tabela z której chcemy pobrać dane. Nie należy stosować ``, gdyż sama nazwa jest w nie wstawiana;
- $fields - pola które należy pobrać po wylosowaniu pola. Jeżeli wszystkie wstaw *, jeżeli jednak inne to wstawiaj je w sposób `pole1`, `pole2`, ...
- Oczywiście liczę na to, że nie dasz tu czystego zapytania prosto z danymi pobranymi od użytkownika, należy się chronić, gdyż każde dane są potencjalnie niebezpieczne! Polecam mysql_escape_string.
- */
- function losowy_lepszy($primary, $table, $fields){
- }
- ?><?php
- $result = mysql_query('SELECT * FROM `jakas_baza` ORDER BY RAND() LIMIT 1'); // pobiera jeden losowy rekord
- // A tu funkcja mojej roboty ;)
- // uznajemy że $query to treść zapytania z którego mamy zamiar wziąć losowy wpis, czyli np. "SELECT * FROM `cos`", ale nie można dać średnika na końcu !
- }
- /*
- $primary - jest to klucz podstawowy danej tabeli, lub pole które ma najmniej danych, po to aby zapytanie zliczające ilość pól było jak najszybsze;
- $table - tabela z której chcemy pobrać dane. Nie należy stosować ``, gdyż sama nazwa jest w nie wstawiana;
- $fields - pola które należy pobrać po wylosowaniu pola. Jeżeli wszystkie wstaw *, jeżeli jednak inne to wstawiaj je w sposób `pole1`, `pole2`, ...
- Oczywiście liczę na to, że nie dasz tu czystego zapytania prosto z danymi pobranymi od użytkownika, należy się chronić, gdyż każde dane są potencjalnie niebezpieczne! Polecam mysql_escape_string.
- */
- function losowy_lepszy($primary, $table, $fields){
- }
- ?>
Obserwacje
Sposób pierwszy (czyli samo zapytanie do bazy danych) jest dobre, gdy mamy mała bazę z małą ilością danych. Można to porównać do pracownika, któremu każemy ułożyć losowa 20 klocków, nie zajmie mu to długo, ale jak damy mu 1000 klocków to będzie gorzej. Tak samo jest z bazą danych. Najpierw musi ona poukładać wszystkie rekordy w tabeli losowo, a dopiero potem wybiera konkretny rekord.
Drugi ze sposobów jest lepszy, lecz nie idealny. To czego brakuje w drugim jest uzupełnione w trzecim. A czego brakuje to macie tam w komentarzu przed trzecim napisane 
Podsumowanie
jest wiele sposobów (można oczywiście w to i CRON'a ingerować, tak aby raz na dzień coś wylosował, a potem tylko ciągle ten wylosowany wybieramy), ale w jaki sposób ktoś to zrobi, to zależy tylko od niego. Oczywiście na wielu blogach nie znalazłem wzmianki o tym, że niektóre sposoby nie są tak szybkie przy większej ilości danych i że można to zrobić inaczej. To mnie zainspirowało do napisania tego całego tekstu. Jeżeli komuś się przydało to dobrze 
W roli głównej koraliki i dosyć oryginalnej - szorstkiej fakturze.
Kolczyki ze szkła weneckiego srebrno-złotego.
Kolczyki ze szkła lampwork - myszki.
Kolczyki z kulek plastikowych w brązowych i miodowych barwach. Najmniejsze kuleczki to szklane, dwukolorowe perełki. Do kompletu bransoletka w innej kategorii.
Drewniane kolczyki ozdabiane dwustronnie metodą decoupage. Z jednej strony delikatnie wypukłe.

pisze:

