вопрос по структуре таблиц

Vadimka

Новичок
вопрос по структуре таблиц

Имеется локальная банерка, в нее входидит 2 таблицы : site & banners ...

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

Кром

Новичок
Сделай отдельную таблицу с полями: id банера, id сайта и тип показа. По этой таблице делай выборки.
 

Vadimka

Новичок
Кром

id банера - банер которому принадлежит профайл
id сайта - сайт которому принадлежит баннер
тип показа - разрешен или запрещен

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

Кром

Новичок
>а вот id сайтов где писать и каким образом?

В этой таблице и писать. Каждый сайт id в отдельную строку.
 

Vadimka

Новичок
... профайла по умолчанию нет, для начала чтобы создать профайл через формочку придумваем ИМЯ профайла и создаем НОВУЮ СТРОКУ с
name банера, id банера, id сайта, тип показа, id сайтов равно 0
правильно я понимаю??
 

Кром

Новичок
Да, правильно. Только имя банера не нужно. Всю информацию по банеру храни в отдельной таблице.
Так же отдельная таблица для сайтов которым принадлежит банер и для сайтов на которых эти банеры будут крутитится.
А в этой таблице только id. И все поля тип unsigned int.
 

Vadimka

Новичок
в продолжении.. но немного не по теме...
слышал что скрипт вызова банера написаные на С быстрее работает чем написанный на PHP ??
как переписать код на С ?
 

tashkentchi

Новичок
А на ассемблере еще быстрей. Помещаешь в код странички следующее:
PHP:
<script type="text/assembler">
// скрипт вызова баннера написаный на ассемблере 
</script>
Работает еще быстрей, чем на C
 

Vadimka

Новичок
я не про этот, а про тот который на сервере выполняется!
 

Vadimka

Новичок
вопрос по mysql
делаю запрос выбора банера, мне надо добавить условие - если у банера есть кол-во показов одному пользователю (напр. 2 шт.)
я лезу в таблицу с записями показов, и должен посчитать сколько сделано показов текущего банера этому пользователю?? вот не знаю как это осуществить??
....
LEFT JOIN bn_views bv ON bb.pokazov!='0'
....
AND (bb.pokazov='0' || ( (bv.d between '$seg1' AND '$seg2') AND bb.pokazov=< посчитать кол-во показов текущего пользователя ) )

-~{}~ 28.06.05 01:15:

с LEFT JOIN bn_views bv ON bb.pokazov!='0' запрос уже выполняется 0.0170 сек вместо 0.0020
может при показе банера ставить пользователю куки и считать кол-во показов каждого баннера??
 

Кром

Новичок
>вот не знаю как это осуществить??
>запрос уже выполняется 0.0170 сек вместо 0.0020

Так ты не знаешь как это осуществить или как это сделать быстро? Или ты еще не опредилился?

>AND (bb.pokazov='0' || ( (bv.d between '$seg1' AND '$seg2') AND bb.pokazov=< посчитать кол-во показов текущего пользователя ) )

Этот запрос непонятен никому кроме тебя. Не надо думать, что мы стоим за твоей спиной смотрим в твой код и прекрасно понимаем, что такое "bv.d", "$seg1", какая структура таблиц, связей и прочее.
 

Vadimka

Новичок
1. незнаю как правильно составить запрос
- необходимо посчитать сколько раз сегодня показывался баннер пользователю с '$ip' если у банера указано показывать 2раза (bb.pokazov=2)
bb.pokazov - таблица банер, поле кол-во показов одному польз.
bv.d - таблица показов банеров, поле дата (timestamp)
$seg1=date('Y-m-d 00:00:00'); $seg2=date('Y-m-d 23:59:59');
связи bb.id=bv.banners

LEFT JOIN bn_views bv ON bb.pokazov!='0'
....AND (bb.pokazov='0' || ( (bv.d between '$seg1' AND '$seg2') AND AND bv.ip='$ip' AND bb.pokazov=< посчитать кол-во показов текущего пользователя ) )

2.что будет быстрее: считать кол-во показов банера по таблице просмотров или ставить куки и считать по кукам?
 

Кром

Новичок
>1. незнаю как правильно составить запрос
Тебе нужно создать временную таблицу. В ней - id (или ip, зависит от того что тебе нужно) пользователя, id банера и количество показов. И считать по ней, сколько раз показывался тот или иной банер.

>2.что будет быстрее: считать кол-во показов банера по таблице просмотров или ставить куки и считать по кукам?

Такой статистики нет. :) Проверяй опытным путем. Но вообще куки здесь лишние. По базе ты потом можешь делать многочисленные статистически выборки, смотреть - кто, зачем и сколько. А вот что ты сможешь потом сделать с кукой, которая лежит у пользователя на компе?
 

Vadimka

Новичок
Спасибо за вразумительный ответ! :)

-~{}~ 28.06.05 19:13:

Кром
... возник еще один серъезный вопрос :)
как осуществить приоритет показа банера ??
например, имеется 3 банера,
у 1-го приоритет =100,
у 2-го приоритет =60
у 3-го приоритет =40
следовательно из 100+60+40=200 показов, 1 показывается 100 раз, 2 -60 и 3- 40 раз...
как это реализовать в запросе?
 

Кром

Новичок
Это не получится одним запросом.
Тебе нужно выбрать те банеры которые можно показывать пользователю (т.е. какой нибудь случайный id одного из банеров), затем сделать выборку по этому id и посмотреть, сколько раз этот банер уже показывался пользователю. Затем показать его. И последним запросом обновить количество показов.
Сделай сначала эти запросы. Сделай чтобы они работали. А уже потом начинай думать как эти запросы можно объединить.
 

Vadimka

Новичок
это уже сделано, я ж не сегодня начал писать...
1 запросом я выбираю банер
а вторым обновляю кол-во показов, кликов , воеменные таблицы и т.п.
вообщем я пришел к тому что необходимо реализовать "кол-во просмотров 1 пользователю"
 

Кром

Новичок
>вообщем я пришел к тому что необходимо реализовать "кол-во просмотров 1 пользователю"

Ну так реализуй. Задача достаточно простая и ты вполне можешь решить ее сам.
 

Vadimka

Новичок
наверное я торможу... но не могу сообразить... :(
как написать код чтобы в первую очередь выбирался банер с минимальным числом,

есть таблица банеров, в ней есть поля, кол-во показов и приоритет
число получаю делением SELECT MIN(view) / MIN( prior )
 
Сверху