Реклама на сайте Advertise with us
Тема: Php: скрипт ротатора Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе Sterx +


Зарегистрирован: 08.12.02
Сообщения: 2657
Ссылка на сообщениеДобавлено: 16/08/04 в 20:48     

файл data.php

Код:

desc1|url1
desc2|url2
.
.
.
.
descN|urlN

скрипт
Код:

<?
//rotator
$iunum=15;
$iu="data.php";
//random
$fp = fopen($iu, "r");
$iu_in = fread($fp, filesize($iu));
fclose($fp);
$iuline = explode("\n", $iu_in);
$is=sizeof($iuline);
$i=$is-2;
//srand((double)microtime()*1000000);
$spoint=rand(0,$i);
$rpoint=rand(1,1);
//outdisplay
for ($e=0;$e<$iunum;$e++) {
   if (($spoint+$rpoint+$e)>=($spoint+$iunum))
    {
    $rcorr=$iunum;
    }
   else {$rcorr=0;}
   $iudata = explode("|", $iuline[$spoint+$rpoint+$e-$rcorr]);
echo "<a href=$iudata[1] class=a2>$iudata[0]</a><br>";
}
?>

трабл в чем - периодически выкидывает пустые строки, но при первом запуске - всегда 15 рандомно выбранных строк
в чем дело могет быть?[/quote]

K началу

 
Информация о пользователе Twister


Зарегистрирован: 26.09.03
Сообщения: 40
Ссылка на сообщениеДобавлено: 16/08/04 в 22:07     

По идее он у тебя выкидывает последнюю строку, - проверь в конце файла пустой перевод строки.

K началу

 
Информация о пользователе eugenyZ


Зарегистрирован: 28.11.02
Сообщения: 153
Ссылка на сообщениеДобавлено: 16/08/04 в 22:30     

Была именно такая ж фигня вседствие либо 0, либо количества по максимуму (цифер-не значения естественно) в цикле... также шло наложение темпа при обнулении и запуске нового цикла..

честно говоря чё то слишком мудро чё ты написал вверху ....

читаем файл в массив, узнаём максимум элементов (строк - $maxx) далее , на вопр как сгенерировать несколько случайных и разных между собой чисел? У мня например рабочий вариант таков
<?
$maxx=10; // -- числа будут от 1 до $maxx
$maxn=5; // -- всего $maxn чисел в массиве ( или сколько вешать в граммах icon_smile.gif )
$x=array(); // здесь будет массив наших чисел
$tmp=array(); // временный массив
for ($i=0; $i<$maxn; $i++) {
do {
$a=rand(1,$maxx);
} while(isset($tmp[$a]));
$tmp[$a]=1;
$x[]=$a;
$r.="$a,"; // эту строку можно удалить
}
unset($tmp);
// вывод чисел на экран:
for ($i=0; $i<count($x); $i++) echo "$x[$i] ";
?>
$x[$i]-преобразовать на свой вкус и цвет собственно строку массива . ...надеюсь помогло

K началу

 
Информация о пользователе Sterx +


Зарегистрирован: 08.12.02
Сообщения: 2657
Ссылка на сообщениеДобавлено: 16/08/04 в 22:43     

Grey:
это первое, на что я обратил внимаение. но не оно icon_sad.gif
eugenyZ:
сейчас попробую, отпишу

K началу

 
Информация о пользователе webboxxx


Зарегистрирован: 06.03.03
Сообщения: 405
Ссылка на сообщениеДобавлено: 16/08/04 в 23:10     

Код:

<?php
mt_srand(make_seed());

$fname='data.php'; //название файла
$cnt = 5; //максимальное количество элементов для вывода

// Читаем файл
$data=@file_get_contents($fname);
$data=explode("\n",$data);

// Перемешиваем элементы
for($j=count($data)-1;$j>0;$j--)
{
    if (($i = mt_rand(0,$j))<$j) {$swp=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$swp;}
}

//Выводим
for($x=0;$x<$cnt;$x++)
{
    if($data[$x])
    {
        $tmp=explode('|',$data[$x]);
        echo '<a href='.$tmp[1].' class=a2>'.$tmp[0].'</a><br>';
    }
}

function make_seed() {
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
?>

K началу

 
Информация о пользователе webboxxx


Зарегистрирован: 06.03.03
Сообщения: 405
Ссылка на сообщениеДобавлено: 16/08/04 в 23:15     

eugenyZ писал:
... на вопр как сгенерировать несколько случайных и разных между собой чисел? ...


кстати чтобы сгенерить несколько разных произвольных чисел нужно просто создать массив с числами, скажем от 0 до 100, потом их перемешать между собой, и вывести первые 10 к примеру. В принципе для того чтобы перемешать эл-ты массива есть функция shuffle, но что то она как то не очень перемешивает хорошо, поэтому я рекомендую пользоваться вот тем вариантом кода, который я дал. Так помоему немного элегантнее, чем твой вариант smail04.gif

K началу

 
Информация о пользователе Sterx +


Зарегистрирован: 08.12.02
Сообщения: 2657
Ссылка на сообщениеДобавлено: 16/08/04 в 23:41     

thx
именно то

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »