Работа с базой — Убираем лишнее .

Долго и упорно смотрел на таблицу checkcomm и придумывал её назначение , после прохождения 20 минут , так и не придумал . А если оно и не надо , то на кой его держать в базе ?! Будем избавляться .

На самом деле истинное предназначение этой хреньки в том ,  что бы уведомлять юзера о комментах к его торренту или нет . Как бы система должна почекать поле и если там выставлен параметр yes (а другого там и не будет , потому что эта система никуя не доделана и не продуманна) для данного торрента , то автор будет получать уведомление о комментах . Но вся хна в том , что горе разработчик не уделяет внимание таким мелочам , а занят проблемами более глобального объема .

Ладно , что нам надо ? Дропаем таблицу checkcomm и создадим новое поле в в таблице torrents —

DROP  TABLE  `checkcomm`;
ALTER  TABLE  `torrents`  ADD  `checkcomm` ENUM(  'yes',  'no'  )  NOT  NULL DEFAULT  'yes' AFTER  `comments` ;

Затем , надо надо изменить пару строчек в файле comments.php (возможно кто то использует AJAX комменты , там ситуация будет выглядеть немного по другомму) .
Надо изменить этот запрос —

sql_query("INSERT INTO messages (sender, receiver, added, msg, poster, subject) SELECT 0, userid, NOW(), $msg, 0, $subject FROM checkcomm WHERE checkid = $torrentid AND torrent = 1 AND userid != $CURUSER[id]") or sqlerr(__FILE__,__LINE__);

на вот этот —

sql_query("INSERT INTO messages (sender, receiver, added, msg, poster, subject) SELECT 0, owner, NOW(), ".sqlesc($msg).", 0, ".sqlesc($subject)." FROM torrents WHERE id = $torrentid AND checkcomm = 'yes' AND owner != ".sqlesc($CURUSER[id])) or sqlerr(__FILE__,__LINE__);

С этим разобрались . Теперь что бы при заливке торрента , данный больше не вбивались в ту старую таблицу , надо удалить пару строк . Найдите в takeupload.php и удалите —

sql_query("INSERT INTO checkcomm (checkid, userid, torrent) VALUES ($id, $CURUSER[id], 1)") or sqlerr(__FILE__,__LINE__);

Вот в принципе и все .

Работа с базой — Убираем лишнее .: 29 комментариев

  1. Hannnn

    я вообще не юзаю эту функцию тк +1 запрос….
    Хотя сделал =)

  2. defr

    Что то не обновляется блог этот…. Помню как 2 дня назад Sun хотел продавать оптимизацю запроса ,а вебнет сказал что его легко оптимизировать, и что завтра читатели его блога уже узнают об том как его оптимизировать ну прошла 3 дня 🙁

  3. MorAnton

    Помоему можно обойтись без этого запроса:
    «ALTER TABLE `torrents` ADD `checkcomm` ENUM( ‘yes’, ‘no’ ) NOT NULL DEFAULT ‘yes’ AFTER `comments` ;»
    Всё равно включалки-выключалки у нас нет
    Убираем его, убираем проверку из запроса:
    «AND checkcomm = ‘yes'»
    и готово.
    Результат: минус одно поле в таблице torrents

  4. webnet Автор записи

    Ну у тебя нету , у меня есть . Потом опубликую включалку на AJAX .

  5. MorAnton

    ну а пока её нет, поэтому нам оно не надо)

  6. Grimmjow3011

    За что отвчает функцыя checkcomm ???
    Немогу вспомнить( :wall:

  7. Grimmjow3011

    ну checkcomm
    в таблица для чего она воопще?

  8. Grimmjow3011

    А когда ты выложиш включалку на AJAX?

  9. Hannnn

    А в functions.php Не надо удалять вот эту строку?
    sql_query(«DELETE FROM checkcomm WHERE checkid = $id»);
    в функции
    deletetorrent

  10. webnet Автор записи

    пройдись поиском по всем файлам и удали упоминания о этой таблице .

  11. Hannnn

    Ок спс,а то я там их видел в некоторых файлах но не знал удалять нет…

  12. MorAnton

    не дождались однако включалки выключался)

  13. fenux

    Ошибка в SQL
    Ответ от сервера MySQL: Table ‘torrent.checkcomm’ doesn’t exist

    в /var/www/ice/data/www/open-heavens.podzone.net/comment.php, линия 63

    Запрос номер 7.

    Это после этих манипуляций

  14. webnet Автор записи

    в /var/www/ice/data/www/open-heavens.podzone.net/comment.php, линия 63
    😡

  15. fenux

    я все по статье сделал, а ошибка эта полезла

  16. fenux

    send_pm(0, $userid, get_date_time(), $subject, $msg);

    вот эта строка

  17. InDiGo

    sql_query(«INSERT INTO messages (sender, receiver, added, msg, poster, subject) SELECT 0, userid, NOW(), $msg, 0, $subject FROM checkcomm WHERE checkid = $torrentid AND torrent = 1 AND userid != $CURUSER[id]») or sqlerr(__FILE__,__LINE__);
    у меня вобще он был закомментирован!

Комментарии запрещены.