function calculate_random($num, $db_s) { // return ($num == 1) ? 0 : rand(0, $num - 1); $dist = null; $total = 0; while ($db_s->next_record()) { $total += $db_s->f(3); } while (1) { $i = 0; $db_s->seek(0); $randv = rand(0, 1000000) / 1000000; while($db_s->next_record()) { if ( ($randv -= ($db_s->f(3) / $total)) < 0 ) return $i; $i++; } } } function show_banner($type, $page) { $db_s = connection(); $db_s->query("select shows.shows_id, shows.counter, shows.banners, shows.weight, types.zero_banner from shows inner join types on shows.types_id=types.types_id where shows.counter > 0 and pages_id='" . $page . "' and types.types_id=" . $type); if ($db_s->num_rows() == 0) { $db_s->query("select zero_banner from types where types_id=$type"); $db_s->next_record(); $banner = $db_s->f(0); } else { $rand_val = calculate_random($db_s->num_rows(), $db_s); $db_s->seek($rand_val); $db_s->next_record(); $banner = $db_s->f(2); $db_s->query("update shows set counter=counter-1 where shows_id=" . $db_s->f(0)); $db_s->query("update shows set showed=showed+1 where shows_id=" . $db_s->f(0)); } print $banner; } ?>
![]() |
||||||||
| На главную | Новости | Подписка | Поиск по сайту | Форум | E-Mail | | Участие в базе цен | Реклама на сайте | |
||||||||
|
База цен:
|