Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > как сделать массив состоящий из ссылок


Автор: Yojidze 8.8.2009, 19:58
как сделать массив состоящий из ссылок  и при каждой загрузке страницы выдавать следующую по списку ссылку ?
HELP

Автор: Ипатьев 8.8.2009, 20:18
сделать массив - например, file()
записывать, какую уже показали - например, в cookie
А вообще вопрос настолько неконкретный, что на него можно дать хоть 20 ответов.

Автор: Yojidze 8.8.2009, 20:24
да я новичек меня интересует самый легкий рабочий вариант
мне нужно чтобы например пользователь1 зашел на сайт и ему выдаласаь ссылка а1
пользователь2 ссылка а2 ну и т.д
можно в принципе рандомно их выдавать вот только как

Автор: mogul82 8.8.2009, 20:40
Че надо то я непонял. Вопросы рассказывать подробно уже не модно?

Автор: Yojidze 8.8.2009, 20:45
пользователь1 зашел на сайт он видит ссылку а1
пользователь2 ссылка а2 
пользователь3 ссылка а3 
вроде понятно

Автор: mogul82 8.8.2009, 20:51
Че епт значит 1, 2. Ты нормально описать можешь или типа лень.
Эт че группы, номера id, права юзверей? И зачем это. А откуда ссылки беруться епт, ты линивый что ли написать то можешь?

Добавлено через 30 секунд
КонкретнооООО Напиши!!!!!

Автор: Yojidze 8.8.2009, 20:55
Какой то абсолютно обычный пользователь узнает о моем сайте и заходит на него внизу страницы есть ссылка,  следующий пользователь внизу должен увидеть другую ссылку и т.д
куда подробнее smile

Автор: mogul82 8.8.2009, 21:05
А ты где возьмешь стока ссылок????

А ваще надо менять запись в БД. И не заносить в массив вывода ссылки определенные. Куда проще. Тока если много юзверей задержка будет. Можно использовать временные таблицы но они отключенны на хостигах обычно.

Автор: enof 8.8.2009, 21:12
Код

<?php
$links = array("1 ссылка s s", "2", "3", "4", "5");
session_start();
$number_link = 0;
if(file_exists("number_link")) {
    $number_link = file_get_contents("number_link");
    if($number_link >= count($links) - 1)
        $number_link = 0;
    else
        $number_link++;
}
file_put_contents("number_link", $number_link);
echo $links[$number_link];
?>

Автор: mogul82 8.8.2009, 21:21
enof,  А нахрен сессии если в файл пишеш???
С файлом так с файлом работать надо. И ваще сессии должны в начале идти - эт правила хорошего кода.

Автор: enof 8.8.2009, 21:26
mogul82, а они у меня в конце кода, я так понимаю?
остались они там от предудущего кода, в котором смена была для каждого пользователя своя и реализована через сессии.

Автор: bars80080 9.8.2009, 01:08
Цитата(Yojidze @  8.8.2009,  20:55 Найти цитируемый пост)
Какой то абсолютно обычный пользователь узнает о моем сайте и заходит на него внизу страницы есть ссылка,  следующий пользователь внизу должен увидеть другую ссылку и т.д
куда подробнее


Yojidze, здесь mogul82 в довольно резкой форме пытается выяснить следующее:
чем обусловлено, что пользователь1 видит ссылку1, а не ссылку2? 
что случится, если пользователь1 зайдёт на сайт ещё раз, какую ссылку он должен увидеть?
требуется ли показывать ещё ссылки по второму кругу, если они закончатся?

методом телепатии могу догадаться, что это баннеропоказчик и суть его в том, чтобы все рекламные ссылки показывались постепенно одна за другой. в этом случае самая простая реализация - в БД. таблица с ссылками и полем счётчика.
Код


select * from `table` order by `counter`, `id` limit 1

показываем, а затем обновляем для показанной записи счётчик
Код

update `table` set `counter`=`counter`+1 where `id`=$r['id']

в принципе тоже самое можно сделать на файлах, гемора только чуть больше

остаётся прояснить один вопрос, принципиально ли отслеживать ситуацию, чтобы для одного пользователя ссылки показывались тоже постепенно и ни разу не повторялись, пока не пройдёт полный круг?
если да, то решение всё-таки лучше делать через БД, ибо с файлами гемора будет существенно больше

Автор: Ипатьев 9.8.2009, 10:17
Сдается мне, автору не нужны ни сессии, ни база данных, ни сложные алгоритмы
А устроит его код в две строчки
<?
$links=file("links.txt");
$link=trim($links[array_rand($links)]);
echo "<a href='$link'>$link</a>";
?>
 smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)