1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

HELP

Тема в разделе "Web Coding", создана пользователем marica, 8 апр 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. marica

    marica Постоялец

    Регистр.:
    2 май 2006
    Сообщения:
    71
    Симпатии:
    40
    Здравствуйте!
    у меня на сайте есть такой код вызова:
    include($pluginpath[$i]);
    if ($pluginname[$i]=="Подборка")
    {
    $_ran = rand(1,2);
    if ($_ran === 1) {
    include("./1.txt");
    } else {
    include("./2.txt");
    }
    }
    echo '</td>
    Скрипт вызывает 2 файла - 1.txt и 2.txt
    Как могу добавить и 3 файл - 3.txt?
    Если сделаю тупо
    $_ran = rand(1,2,3);
    if ($_ran === 1) {
    include("./1.txt");
    } else {
    include("./2.txt");
    } else {
    include("./3.txt");
    ничего не получаеться :(
    Посоветуйте как сделать :thenks:
    Цель скрипта - при каждую загрузку страницу что бы показывалась разную информацию.
    Инклудить от 1.txt, 2.txt и 3.txt
     
  2. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Если ориентироваться на твой алгоритм, то

    Код:
    # инициализируем генератор случайных чисел
    srand(time ^ $$);
    
    #получаем случайное целое число от 1 до 3 
    $_ran = int(rand(3))+1;
    
    // инклудим файл  ./$_ran.txt 
    include("./". $_ran .".txt");
    
    
    Только файлы будут подгружаться случайным образом, а не последовательно от 1 до 3

    Если необходимо именно последовательно, то можно посмотреть в сторону использования сессий
     
    marica нравится это.
  3. marica

    marica Постоялец

    Регистр.:
    2 май 2006
    Сообщения:
    71
    Симпатии:
    40
    A как все дольжно выглядеть :ah:
    Я сделал вот так:

    include($pluginpath[$i]);
    if ($pluginname[$i]=="Подборка")
    {
    srand(time ^ $$);
    $_ran = int(rand(3))+1;
    include("./". $_ran .".txt");
    include("./1.txt");
    } else {
    include("./2.txt");
    } else {
    include("./3.txt");
    }
    }
    echo '</td>

    Но у меня не получилось ничего :(
     
  4. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Попробуйте сделать так
    Код:
    include($pluginpath[$i]);
    if ($pluginname[$i]=="Подборка")
    {
     srand(time ^ $$);
     $_ran = int(rand(3))+1;
    include("./". $_ran .".txt");
    }
    echo   '</td>';
    
     
  5. marica

    marica Постоялец

    Регистр.:
    2 май 2006
    Сообщения:
    71
    Симпатии:
    40
    Не получилось :(
     
  6. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Может в остальном коде проблемы.
    Что выдает? Какие ошибки, сообщения?
     
  7. dimases

    dimases Создатель

    Регистр.:
    15 авг 2006
    Сообщения:
    11
    Симпатии:
    3
    Вообще, я не понимаю, зачем srand, уже с 4-й версии PHP этого не надо. И rand тоже сожно пользовать диапазоном. То есть получаетяс вот так:
    include($pluginpath[$i]);
    if ($pluginname[$i]=="Подборка")
    {
    include("./".rand(1,3).".txt");
    }

    Если нужен вариант с тремя, но в случайном порядке, тоже не сложно:
    include($pluginpath[$i]);
    if ($pluginname[$i]=="Подборка")
    {
    $rands=array();
    for ($i=1;$i<=3;$i++){
    $rands[]=$i;
    }
    shuffle($rands); // мешаем
    foreach ($rands as $v){
    include("./".$v.".txt");
    }
    }

    Кстати, я вот не помню, но мне кажется есть функция выполняющая заполение массива диапазоном, как вот здесь:
    for ($i=1;$i<=3;$i++){
    $rands[]=$i;
    }

    Только не помню какая. В любом случае эта конструкция будет работать быстро.
     
  8. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Да, немного затупил. Просто голова перлом занята была :D
    Для заполнения массива диапазоном можно использовать функцию range.
    В данном случае, если необходимо, можно просто записать $rands=array(1,2,3);
     
  9. marica

    marica Постоялец

    Регистр.:
    2 май 2006
    Сообщения:
    71
    Симпатии:
    40
    Вот так сделал и заработало
    include($pluginpath[$i]);
    if ($pluginname[$i]=="Подборка")
    {
    $_ran = rand(1,100);
    if ($_ran <= 33) {
    include("./1.txt");
    } elseif($_ran <= 66) {
    include("./2.txt");
    } else {
    include("./3.txt");
    }
    }
    echo '</td>


    Спасибо всем! :)
     
Статус темы:
Закрыта.