логин: 
<< предыдущая заметкаследующая заметка >>
23 июля 2011
Перенес contents внутрь движка.

Последняя не перенесенная в движок страница была страницей содержания /contents В ней со временем накопилась куча глюков. Например, у нее был свой поиск, он был неудобного старого формата (впрочем, 99% интернет-сайтов до сих пор подобным пользуются и не знают, что такое удобный формат поиска), и вообще давно отвалился.

Теперь /contents находится в общей системе движка. Это значит, что страница /contents физически удалена, и ее надо создать самостоятельно, прописав в качестве текста: {_CONTENTS:_}

Если зайти в /admin, движок предложит создать такую страницу автоматически. Затем рекомендую открыть ее на редактирование и прописать нужный вам шаблон дизайна и прочие опции. Например, я поставил шаблон дизайна blank — чтоб совсем тупо.


PS: Отображение числа посещений каждой заметки на странице содержания я пока отключил. Дело в том, что неоптимизированно написанные запросы сильно грузят базу, а оптимизированный написать не получилось.

Дело в том, что число посещений для заметки num хранится не в таблице заметок, а в отдельной таблице посещений, откуда достать его для заметки с номером num можно так:
SELECT COUNT(*) FROM `dnevnik_posetil` WHERE `url`=num

Я пока не смог написать это в одном запросе.

UPD: Подсказали в комментах, все оказалось просто и заработало:

SELECT z.`num`,z.`Date`,z.`Header`,z.`view_counter` as `count`,z.`Access`,count(*) as `count2`
FROM `dnevnik_zapisi` as z
LEFT JOIN `dnevnik_posetil` as r
ON z.`num` = r.`url`
GROUP BY z.`num`

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Mac Safari Chrome
0
0
Eugene Bond (#1025103)
> не работает
наверное не понимает, что именно ожидается от такого запроса

не надо делать джоин на количество записей в выборке, лучше связывать обе таблицы, группировать по нужному полю и выбирать количество записей в связанной таблице
Linux Firefox
 Москва
0
0
Я не понимаю.
Вы можете написать, как это выглядит?

Две таблицы. Из tab1 надо извлечь все `num`, и добавить к ним из tab2 все COUNT(*) WHERE `num`=num
Windows Firefox
0
0
Select
tab1.num,
count(tab2.*)
from
tab1
left join tab2 on tab1.num = tab2.num
group by
tab1.`num`
Linux Firefox
 Москва
0
0
Вот на любом варианте count(tab2.*) оно сразу спотыкается.
Windows Firefox
1
0
Неправильно написал - там надо count(*) вместо count(tab2.*)

И, вобщем-то, если надо выбрать лишь num, count(*), то мой первый запрос излишен, нужно делать так
Select
    num,
    count(*)
from
    tab2
group by
    num
Linux Firefox
 Москва
0
0
Вау!!! Заработало, спасибо!!! В итоге вышло такое:

SELECT z.`num`,z.`Date`,z.`Header`,z.`view_counter` as `count`,z.`Access`,count(*) as `count2`
FROM `dnevnik_zapisi` as z left join `dnevnik_posetil` as r on z.num = r.url
group by z.`num`

Смысла оператора group by я пока не знаю, но вроде все работает.
Windows Firefox
1
0
group by num - это применять агрегирующие функции (count, sum) для группы строк с одним и тем же значением поля num, а не для всех строк
Linux Firefox
 Москва
0
0
Спасибо!!!
Mac Safari Chrome
0
0
Eugene Bond (#1025103)
уведомления об ответах не ходят..

но quantum уже все рассказал
Windows IE
0
0
D.iK.iJ
Если в логине есть точка, комментарий становится закрытым ))
Удобно.
Mac Safari
 Москва
0
0
LLeo iPad (#1016662)
Удобно отсекать спамщиков.
Windows Firefox
0
0
Roman Erykalov
Обновился. Все нормально, кроме одного глюка в фильтре поиска: при попытке сортировать заметки по посещениям выскакивает следующий текст:
mysql_query("SELECT z.`num`,z.`Date`,z.`Header`,z.`view_counter` as `count`,z.`Access`,count(*) as `count2`
FROM `dnevnik_zapisi` as z
left join `dnevnik_posetil` as r on z.`num`=r.`url`

group by z.`num` ORDER BY z.`count` DESC")
Unknown column 'z.count' in 'order clause'
Записей 1 (сортировка по числу посетителей)

Кстати, проверил только что для интереса, у тебя выдает то же самое.

Остальные фильтры адекватно работают
Windows Opera
0
0
vovse_ne (#1093330)
Леонид, оно меня пугает. Пытаюсь редактировать заметку:

mysql_query("SELECT `opt` FROM `dnevnik_zapisi` WHERE `num`='63'")
Unknown column 'opt' in 'field list'

А я с SQL-ем на "они"...

PS. Создала столбец с "отфонарными" параметрами, сохранять стало, но, думаю, это всё же неправильно. :)
Linux Firefox
 Москва
0
0
Столбцы руками создавать ни в коем случае не надо!!!

Надо зайти в /admin и понажимать там все кнопки с предложениями по переустройству базы.
Windows Opera
0
0
vovse_ne (#1093330)
Ой, спасибо, что-то я совсем с ума схожу ближе к понедельнику...

PS. Тогда, может, за компанию подскажете, как сделать, чтобы при размещении превьюшек фото следующая не переносилась на новую строку? Чтоб их в ряд можно было сделать. А то я закопалась немного.
Linux Firefox
 Москва
0
0
Превьюшек? В смысле, которые тэгом:

{_FOTOS: WIDTH=120
/url/image1.jpg Это я на пляже
/url/image2.jpg Это моя собака Люся
/url/image3.jpg Это мой выпускной
_}

Параметр WIDTH регулирует ширину в пикселях.

После ввода тэга и закрывания окна редактора один раз надо обновить страницу - чтобы стили докачались. Без этого будет в строчки.
Windows Opera
0
0
Поняла, это у меня Опера глючила и не хотела строки в одну переносить... Спасибо.

всего комментариев: 17

<< предыдущая заметка следующая заметка >>