Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowe wyświetlanie danych (linków) z sql
Cenoniada
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

Ostrzeżenie: (20%)
X----


Witam,

Jak zrobić aby typowane losowe rekordy z bazy sql (w nasze postaci to tabela z linkami (id - link)) za każdym razem były unikalne i niepowtarzalne?

Mamy tutaj funkcję random, która nam ładnie typuje jeden losowo wybrany rekord w postaci linku, lecz wielokrotność wyników jest zawsze ta sama (typuje ten sam losowy rekord np 20 razy) .

  1. <?
  2. $zapytanie = "select @random_link:=link from linki order by rand() limit 1";
  3. $wykonaj = mysql_query ($zapytanie);
  4. while($wiersz=mysql_fetch_array ($wykonaj)) {
  5. $uniq=("".$wiersz['@random_link:=link']."");
  6. $_SESSION["uniq"] = $uniq;
  7. }
  8. ?>


Tu wyświetlanie linku (daje te same 3 losowe linki a maja być unikalne):

  1. <? echo$_SESSION["uniq"];?> <? echo$_SESSION["uniq"];?> <? echo$_SESSION["uniq"];?>


Czy ponumerować sesje lub funkcję $uniq ?

Ten post edytował Cenoniada 15.03.2009, 13:56:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




RAND(), to jeden z najwolniejszych sposobów na wyciąganie losowego rekordu.

Zrób sobie pętlę losującą 20 liczb (while" title="Zobacz w manualu PHP" target="_manual + mt_rand" title="Zobacz w manualu PHP" target="_manual + in_array" title="Zobacz w manualu PHP" target="_manual) i po prostu wg nich wyciągaj rekordy.
Go to the top of the page
+Quote Post
Cenoniada
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

Ostrzeżenie: (20%)
X----


troszku skomplikowane (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No patrz:
  1. robisz sobie tablicę na losowe numerki
  2. pętlą while" title="Zobacz w manualu PHP" target="_manual losujesz i sprawdzasz, czy w tablicy jest już wylosowany numerek:
    1. <?php
    2. while(!isset($arr[19])){
    3.  $num = mt_rand();
    4.  if(in_array($num, $arr)){
    5.    continue;
    6.  }
    7.  $arr[] = $num;
    8. }
    9. ?>
  3. w tablicy masz już numerki, teraz podstawiasz je do zapytania tak, aby wyciągnąć rekordy o ID, które są już ustawione w tablicy
Voilá. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Cenoniada
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

Ostrzeżenie: (20%)
X----


coś jak wyświetl w pętli id z funkcji mt_rand i zrób to w pętli aby za każdym razem generowało inaczej ?

  1. <?php
  2. $zapytanie = "select link from linki where id is echo mt_rand(5, 15)";
  3. ?>


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
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: 23.08.2025 - 17:02