[php][mysql]random

0

chce zrobic cos takiego
mam po 3 wyswietlenia rekordow na stronie i
chodzi o to ze mam powiedzmy 9 wpisow w bazie
1 2 3 4 5 6 7 8 9
i chce zeby one pojawialy sie tak ze beda losow tzn na pierwszej stronie np pojawi sie
1 4 7
na nasttepnj wtedy
2 9 8
i na ostatniej
3 5 6
i zeby to sie za kazdym razem losowalo od poczatku przy wlaczeniu pierwszej strony ale zeby na anstepnych byly tlyo pozostale , myslalem o tym zeby ta kolejnosc jakos zapisac ale przeciez jak bede mial 10000 wpisow to nie bede tego tak zapisywal, jest moze jakis SEED to randomize w mysql taki jak w c++ ?

0

Speak Polish Please :-)
Ale z czym Ty masz problem?
Użyj funkcji mt_rand:
<url>www.php.net/mt_rand</url>

Kod znaleziony na necie, czy działanie jest takie jakie chcesz nie mam pojęcia bo nie do końca Cię rozumiem:

<?php
  function unique_random($Min,$Max,$num){

    //this will swap min an max values if $Min>$Max
    if ($Min>$Max) { $min=$Max; $max=$Min; }
    else { $min=$Min; $max=$Max; }

    //this will avoid to enter a number of results greater than possible results
    if ($num>($max-$min)) $num=($max-$min);

    $values=array();
    $result=array();
    for ($i=$min;$i<=$max;$i++) {
      $values[]=$i;
    }
    for ($j=0;$j<$num;$j++){
      $key=mt_rand(0,count($values)-1);
      $result[]=$values[$key];
      unset($values[$key]);
      sort($values);
    }
    return $result;
}
?>
0

Funkcja mySQL RAND() przyjmuje jako parametr seed albo go ustala na podstawie czasu. Use RAND(20) na przykład żeby dostać liczbę pseudolosową z ziarnem 20.

Ale to nie zapewni ci przewidywalności wyników w taki sposób, jaki chcesz osiągnąć. Możesz to zrealizować inaczej: dodać nowe pole do rekordu, wpisywać tam co jakiś czas losowe wartości i z nich korzystać. Albo zapisywać gdzieś kolejność. Zresztą to ogólnie by było lepsze, bo jak będziesz miał powiedzmy 10000 rekordów to RAND() będzie wolny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1