Вообщем нужно написать маленький скриптик примера работы банерной сети на локалхосте сделал таблицу бд прикрутил авторизацию регистрацию а вот тут уже возникли вопросы: у меня есть в базе несколько рекламных ссылок от нескольких юзеров, как их по очереди выводить? а главное юзер или админ не важно может выставить например количество сколько раз должна прокрутится эта ссылка, и как это определять? и вообще как обработать то событие что ссылка уже показалась? желательно маленькие примерчики на пхп что бы лучше понять
bxN5, задачей от преподавателя пахнет. Чё, пил весь семестр? 1. Вывод по очереди. Нафига по очереди? Тебе нужно кол-во показов "выполнить". Ну и какая разница в каком порядке выводить. Выводи случайно. 2. См. п.1. Ящитаю, определить это должен случай. Но можно добавить поле "вес" для банера. Если пользователь больше заплатил, то админ (это ответ на вопрос) выставляет "вес" банера и тот крутится несколько чаще иных. 3. Пиши в БД поля: количество показов и кол-во прокруток. Т.е. изначально в первом поле 50 (раз прокрутить надо), во втором 0 (уже прокручено). При показе делай update таблица set ... поле = (поле + 1). Так будешь знать сколько раз прокрутил банер. Кстати,если уж очень хочется выводить по очереди, то выбирай из таблицы банеров и сортируй по весу и по кол-ву показов: order by вес desc, кол-во показов asc. Как-то так, да.
Я делал при показе баннера апдейт в базу по времени - через мктайм+микросекунды - так намного лучше, а в запросе на показ баннера стоит сортировка по этому полю, и показывается тот баннер, у которого самое маленькое значение данного поля...
darkgod у мну стояли: лимит показов + временно интервал показов. плюс вес баннера в ротации. соответственно, если у одного 5, у другого 1 - то соотношение показов было примерно 5 к 1. вообще, все от нагрузки зависит. если показов много, то апдейт при каждом запросе - зло. если так уж надо соблюсти порядок - эффективнее будет использовать memory-таблицу, из которой cron'ом переносить данные в основную. иначе на записи на диск тормозить будет.
спасибо почти доделал, только один вопрос появился как в функции при определенном условии вернуть исполнение скрипта в начало функции?
цикл Код (Text): do { } while(условие) выполняется хотя бы раз. Если условие верно, то пойдет выполнение с начала.
спасибо еще вопрос $del= mysql_query("DELETE FROM `ban` WHERE `cnt` > `maxcount`") or die("Invalid query: " . mysql_error()) ; `cnt` and `maxcount`имена столбцов в базе которые содержат значения дело в том что он удаляет как то совершенно рандомно и понятно только ему как он удаляет записи, причем условию они могут как соответствовать так и не соответствовать или же SELECT id FROM bann WHERE `cnt` >= `maxcount` тоже возвращает рандомные айдишники =\