Intellect Board — cистема управления сайтомПостроение сайта на основе форума |
Intellect Board — cистема управления сайтом » Техническая поддержка версии 2.18 » PostgreSQL |
Правила раздела |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 9 10 11 12 13 14 15 16 17 18 Модераторы: aerograf, wsx | Печать |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Хм... У нас с тобой рассинхронизации случайно не началось? В install.php я уже довольно давно исправил кодировку на windows-1251. Да и вот это $forum=$GLOBALS['forum']; if (!$forum) $forum = "0"; тоже на месте... -KoT- написал: В функции function do_split_topic() — порядок перечисления таблиц в FROM и функция IFNULL (записана с ошибкой — INFUNLL). Исправление внес. ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Ситуацию с редактированием исправил. Оказывается, все дело было в db_insert_id, которые выполнялись после UPDATE. (Кстати, MySQL этого не обнаруживал.) ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
-KoT- |
Да, я тоже к этому пришел, только с другого конца — со стороны Postgre. функция lastval() возвращает значение внутренней переменной сервера, которая принимает текущее значение sequence (поле типа "serial") только после выполнения nextval, т.е. после INSERT'a и хранит его до конца сессии либо до следующего NSERT'a. Не стал разбираться, где используется $tid, просто заменил $tid = db_insert_id($res); на $tid = $GLOBALS['topic'] В photos.php функция do_edit содержит кусок кода, оставшийся видимо еще от старой версии IntB (пытается впихнуть миниатюры в несуществующие поля таблицы Photo). Закомментировал $sql = "UPDATE ".$GLOBALS['DBprefix']."Photo SET ph_thumb=\"$thumbdata\", ph_image=\"$photodata\" WHERE ph_tid=".$GLOBALS['topic']; |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
На самом деле $tid там дальше нигде не используется вообще. Вместо нее сразу везде подставлена $GLOBALS['topic']. ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
-KoT- |
SQL-команды REPLACE в файлах agent.php, moderate.php, в обоих group.php — PosgtreSQL их не поддерживает. Заменил: в admin/group.php $sql2="REPLACE ".$GLOBALS['DBprefix']."UGroupMember SET gid=\"$gid\", uid=".$uid[0].", gm_status=2"; на $sql2="DELETE FROM ".$GLOBALS['DBprefix']."UGroupMember WHERE gid=\"$gid\" AND uid=".$uid[0]; в agent.php DELETE уже есть, заменил $sql = "REPLACE ".$GLOBALS['DBprefix']."Code SET sid=\"$sid\", code=\"$code\", time=".$time; на $sql = "INSERT INTO ".$GLOBALS['DBprefix']."Code SET sid=\"$sid\", code=\"$code\", time=".$time; в group.php $sql2="REPLACE ".$GLOBALS['DBprefix']."UserAccess SET uid=$uid, fid=".$gldata['fid'].", ua_level=".$gldata['ga_level']; на $sql2="DELETE FROM ".$GLOBALS['DBprefix']."UserAccess WHERE uid=$uid AND fid="$gldata['fid']; в moderate.php $sql = "REPLACE INTO ".$GLOBALS['DBprefix']."UserAccess SET uid=$uid, fid=".$GLOBALS['forum'].", ua_level=-1"; на $sql = "DELETE FROM ".$GLOBALS['DBprefix']."UserAccess WHERE uid=$uid AND fid="$GLOBALS['forum']; Может быть где ошибся в условии WHERE, надо проверить. |
-KoT- |
Однако, всё... Все тесты, которые смог придумать, проходят нормально. Остается один странный глюк (переход к поиску при отказе от удаления) — на кнопке висит возрат на страницу редактирования, а переходит к поиску... Но это, imho, мелочь... Поиск по заголовкам топиков (модерирование) пробовал делать через db_match, но в этом случае если введенный шаблон не является словоформой — ничего не находит. Мне больше нравится через ... WHERE lower(t_title) LIKE '%шаблон%\" OR lower(t_descr) LIKE '%шаблон%'.... P.S. XXXX Pro написал: У нас с тобой рассинхронизации случайно не началось? За основу взят этот дистрибутив: http://intboard.ru/index.php?t=1132&p=7635#pp7635 В нем install.php в кодировке utf-8 и в auth.php $forum=$GLOBALS['forum']; if (!$forum) $forum = "0"; есть, но в запросе lv.fid=\"".$GLOBALS['forum']."\" |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Вообще, по столбцам t_title и t_descr таблицы prefix_Topic тоже должен быть полнотекстовый индекс. По крайней мере так задумывалось изначально (к тому же в движке предусморен поиск по названиям тем). Вопрос: а возможно существование столбцов с одинаковыми именами в двух разных таблицах? Если да, то достаточно этот столбец добавить, и все... ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Ситуацию с $forum исправил (до меня просто не сразу "дошло", как она проявляется), а в search.php заменил условие true на условие 1=1, т.к. MySQL 3.x true не пропускает... По поводу поиска при отказе от удаления: а что именно ты удаляешь и где? ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
-KoT- |
В prefix_Topic поле для tsearch2 давно вставил, только его название слегка различается (на 1 букву) с prefix_Post. Одноименные поля в разных таблицах вполне допустимы, уникальных имен требуют только индексы (поэтому и пришлось ввести в имя индекса "prefix_ "). Полнотекстовый поиск делать пробовал — работает нормально. Для этого изменить в pssql.sql для таблицы prefix_Topic: fulltxt_idx tsvector, на fulltext_idx tsvector, CREATE INDEX prefix_idx_title ON prefix_topic USING gist (fulltxt_idx); на CREATE INDEX prefix_idx_title ON prefix_topic USING gist (fulltext_idx); CREATE TRIGGER tg_fulltxt_prefix_topic BEFORE INSERT OR UPDATE ON prefix_topic FOR EACH ROW EXECUTE PROCEDURE tsearch2('fulltxt_idx', 't_title', 't_descr'); наCREATE TRIGGER tg_fulltxt_prefix_topic BEFORE INSERT OR UPDATE ON prefix_topic FOR EACH ROW EXECUTE PROCEDURE tsearch2('fulltext_idx', 't_title', 't_descr'); Поиск при отказе от удаления — например, раздел типа "статьи", захожу в статью, щелкаю "Удалить статью", на следующей странице щелкаю "Нет" — и вылетаю в поиск. При этом в исходном коде странички все нормально: <form action="index.php?t=30" method=GET> <input type=submit value="Нет"></td></tr></table> Может Апач 2.2? Поставил для ознакомления — изменений в нем много, со всем разобраться — времени не хватило... |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Слушай, а TRIGGER точно должен выполняться до вставки ряда (если я правильно понял, что значит BEFORE), а не после? ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 9 10 11 12 13 14 15 16 17 18 Модераторы: aerograf, wsx | Печать |
Intellect Board — cистема управления сайтом » Техническая поддержка версии 2.18 » PostgreSQL |
1 посетитель просмотрел эту тему за последние 10 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
Ограничение доступа не отображаются разделы Архив версий Установка стиля на Intellect Board 2.22 Завершилась работа над новой версией 3.00 |
Самые активные 5 тем | |