PostgreSQL

Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.18 »   PostgreSQL
RSS

PostgreSQL

Текущий рейтинг темы: Нет
Выводить сообщения
Правила раздела

<<Назад  Вперед>>Страницы: 1 2 3 4 5 ... 9 10 11 12 13 14 15 16 17 18
Модераторы: aerograf, wsx
Печать
 
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Хм... У нас с тобой рассинхронизации случайно не началось? В install.php я уже довольно давно исправил кодировку на windows-1251. Да и вот это
$forum=$GLOBALS['forum'];
if (!$forum) $forum = "0";
тоже на месте...

-KoT- написал:
[q]
В функции function do_split_topic() — порядок перечисления таблиц в FROM и функция IFNULL (записана с ошибкой — INFUNLL).
[/q]

Исправление внес.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Ситуацию с редактированием исправил. Оказывается, все дело было в db_insert_id, которые выполнялись после UPDATE. (Кстати, MySQL этого не обнаруживал.)

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
Да, я тоже к этому пришел, только с другого конца — со стороны 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'];
    $res = db_query($sql,$link);
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
На самом деле $tid там дальше нигде не используется вообще. Вместо нее сразу везде подставлена $GLOBALS['topic'].

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
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";
      $res2 = db_query($sql2,$link);
на       $sql2="DELETE FROM ".$GLOBALS['DBprefix']."UGroupMember WHERE gid=\"$gid\" AND uid=".$uid[0];
      $res2 = db_query($sql2,$link);
      $sql2="INSERT INTO ".$GLOBALS['DBprefix']."UGroupMember SET gid=\"$gid\", uid=".$uid[0].", gm_status=2";
      $res2 = db_query($sql2,$link);


в 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'];
    $res2 = db_query($sql2,$link);
на    $sql2="DELETE FROM ".$GLOBALS['DBprefix']."UserAccess WHERE uid=$uid AND fid="$gldata['fid'];
    $res2 = db_query($sql2,$link);
    $sql2="INSERT INTO ".$GLOBALS['DBprefix']."UserAccess SET uid=$uid, fid=".$gldata['fid'].", ua_level=".$gldata['ga_level'];
    $res2 = db_query($sql2,$link);


в moderate.php        $sql = "REPLACE INTO ".$GLOBALS['DBprefix']."UserAccess SET uid=$uid, fid=".$GLOBALS['forum'].", ua_level=-1";
        $res = db_query($sql,$link);
на          $sql = "DELETE FROM ".$GLOBALS['DBprefix']."UserAccess WHERE uid=$uid AND fid="$GLOBALS['forum'];
  $res = db_query($sql,$link);
  $sql = "INSERT INTO ".$GLOBALS['DBprefix']."UserAccess SET uid=$uid, fid=".$GLOBALS['forum'].", ua_level=-1";
  $res = db_query($sql,$link);
Может быть где ошибся в условии WHERE, надо проверить.
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
Однако, всё... \":cool:\"
Все тесты, которые смог придумать, проходят нормально.

Остается один странный глюк (переход к поиску при отказе от удаления) — на кнопке висит возрат на страницу редактирования, а переходит к поиску... Но это, imho, мелочь...
Поиск по заголовкам топиков (модерирование) пробовал делать через db_match, но в этом случае если введенный шаблон не является словоформой — ничего не находит. Мне больше нравится через ... WHERE lower(t_title) LIKE '%шаблон%\" OR lower(t_descr) LIKE '%шаблон%'....

P.S.
XXXX Pro написал:
[q]
У нас с тобой рассинхронизации случайно не началось?
[/q]

За основу взят этот дистрибутив:
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
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Вообще, по столбцам t_title и t_descr таблицы prefix_Topic тоже должен быть полнотекстовый индекс. По крайней мере так задумывалось изначально (к тому же в движке предусморен поиск по названиям тем).
Вопрос: а возможно существование столбцов с одинаковыми именами в двух разных таблицах? Если да, то достаточно этот столбец добавить, и все...

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Ситуацию с $forum исправил (до меня просто не сразу "дошло", как она проявляется), а в search.php заменил условие true на условие 1=1, т.к. MySQL 3.x true не пропускает...
По поводу поиска при отказе от удаления: а что именно ты удаляешь и где?

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
В 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
Руководитель Проекта
Настоящий Компьютерщик
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
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0553. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!