Логика скрипта личных сообщений

aaachilov

Новичок
Приветствую!
Пишу с очередным советом.
Собрался писать скрипт переписки пользователей (ЛС).
Подправьте пожалуйста если не верно выстроил логику, чтоб потом не переделывать.

1. Делаю таблицу `лс`
PHP:
- id
- От кого
- Кому
- Собщение
- Дата/время
- Просмотренно или нет (enum '0','1')  по умолчанию 1 при прочтении UPDATE на 0
2. Проверка на наличие непрочитанных лс:
PHP:
SELECT COUNT(*) FROM `лс` WHERE кому = мне and enum = 1
3. Вывод входящих лс
PHP:
SELECT * FROM `лс` WHERE кому = мне ORDER BY `дата/время` and `id` DESC
4. Вывод исходящих лс
PHP:
SELECT * FROM `лс` WHERE от кого = от меня ORDER BY `дата/время` and `id` DESC
5. Вывод переписки
PHP:
SELECT * FROM `лс` WHERE ????? ORDER BY `дата/время` and `id` DESC
Вот на пятом только задумался - как выбрать от меня ему и от него мне?
Подумал сделать дополнительное поле в таблице со значение отправитель-получатель типа id(отправитель)-id(получатель) и потом выбирать так
PHP:
SELECT * FROM `лс` WHERE id(отправитель)-id(получатель) = id(я)-id(он) or id(отправитель)-id(получатель) = id(он)-id(я) 
ORDER BY `дата/время` and `id` DESC

Заранее спасибо!
 

aaachilov

Новичок
у тебя какая-то извращённая логика, почему не завести ДВА поля from_user, to_user
у меня и есть два поля from_user, to_user (просто я чтобы не писать значение полей, которые кто то сможет не понять написал от кого и кому)
то приучись работать с тулзами вроде MySQL Workbench
я бы рад Вам угодить но все сразу не лезет чего то в голову - Вопросы часто задаю потому что 5 ноября впервые написал echo 'Hello World!';
Почему-бы не взять, к примеру, пхпбб не не посмотреть структуру таблицы личных сообщений?
Посмотрел phpBB - насчитал у них одинадцать полей , даже ip имеется и если конечно я верно понял к этому делу ещё одна таблица примыкает из 3 полей.
За что отвечает половина полей мне не ясно. Да и тем более если нельзя это дело сделать одним запросом то и у них используются таблицы, а разницы в том что там написано имеется? Впринципе вообще можно взять готовую CMS и не париться, ну или там скрипт скрипт личных сообщений.

И если честно поражаюсь иногда минталитету местных форумчан - каждое третье сообщение чтоб позлорадствовать - я и так знаю что я нифига не знаю, можно о этом и не упоминать. Причём чтоб высказать свою точку зрения порой нужно меньше слов написать чем слов упрёка.
 

С.

Продвинутый новичок
В принципе нормальная схема. Только в п.5 какая-то каша. Там все элементарно:
от кого = от меня OR кому = мне

Маленькое замечание:
Просмотренно или нет (enum '0','1') по умолчанию 1 при прочтении UPDATE на 0
По логике: 0-нет, 1-да
Просмотрено -- 0-нет, 1-да
При добавлении новой записи там по умолчанию 0
Так будет как-то более очевидно и логично.
 

aaachilov

Новичок
от кого = от меня OR кому = мне
Вот имеенго эта фраза мне в голову никак не приходила но вертелась)))
По логике: 0-нет, 1-да
ну я и думаю что один это да - поэтому по умолчанию везде и делаю 1 и проверяю если да то да ))) Уже у меня во всех таблицах так - пусть буддет моим потчерком))
Огромное спасибо! Щас буду писать)))
 

Andkorol

Новичок
ну я и думаю что один это да - поэтому по умолчанию везде и делаю 1 и проверяю если да то да ))) Уже у меня во всех таблицах так - пусть буддет моим потчерком))
За такой "потчерк" тебя потом проклинать будут все, кому не повезет в дальнейшем обслуживать твой код..:cool:
 

aaachilov

Новичок
Они меня и без этого проклинать будут))) Да и я для себя пишу - не думаю что кому то мой код пригодится. Да и 1 у меня тоже да - просто вопрос поставлен по другому! Есть не прочитанные? 1 да..... ))) Тем боллее сколько кодов не читал все по разному пишут - унифицированного стндарта нет как такового, если только какие детали внегласные. причём верный и тот и тот вариант. и каждый прав по своему. Зебра какого цвета??
 

Andkorol

Новичок
Тем боллее сколько кодов не читал все по разному пишут - унифицированного стндарта нет как такового, если только какие детали внегласные. причём верный и тот и тот вариант. и каждый прав по своему.
Нет тут никакого стандарта - есть обычная логика.
Суть этой логики вам внятно объяснил С. в своем сообщении выше.
 

aaachilov

Новичок
Я же и не говорю что там не правильно - просто это не так принципиально - хотя все таки раз уже не первый человек говорит - значит не зря))) Буду страться писать сразу логично. Спасибо!!
 

С.

Продвинутый новичок
Прокланешь ты в первую учередь себя, сразу как залезешь в код после месячного перерыва. Поверь старому программисту.

Есть не прочитанные? 1 да..... )))
Как такой вопрос можно поставить к одной записи (= одному сообщению). Нонсенс!

Если колонка называется "прочитано" и сначала там 1, а после прочтения ставится 0, то ты болван. Для кого бы ты не писал и как бы вопросы не ставил.
 

aaachilov

Новичок
Блин да - всерьёз туплю - а у меня чё то в голове забилось - вероятно с запроса - есть непрочитанные или нет..... пересидел походу... Извиняюсь за бронелобость...
 

AmdY

Пью пиво
Команда форума
да ладно вам, у чела думалка думает и он движется вперёд большими шагами, вот только опыта нет и забирается в логические тупики. ему б в контору с опытными дядьками пойти, кучу времени бы сэкономил.
 

SiZE

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

С.

Продвинутый новичок
SiZE, давай запретим удаление сообщений и перестанем мучать ТС. Он и в более простых схемах теряется
 
  • Like
Реакции: AmdY

aaachilov

Новичок
мне кажется что ты слишком часто постишь свои посты.
поверьте я сюда пишу один из пятидесяти вопросов которые возникают и то те - ответы на которые явно не могу найти самостоятельно или в логике которых сомневаюсь
Сначала объяснять, затем убеждать, а потом переделывать.
Объяснить достаточно - я поэтому сейчас и логику полностью выстраиваю потом пишу - так как уже переделал несколько скриптов заново
Делаешь две таблицы: карта пользователей, вторая сообщения.
Мне вчера этот вопрос в голову залез - но она уже не соображала))) Я это сделал по свому но очень заумно получилось в одной таблице через два поля маркеров. не могли бы Вы немного подробнее написать - на эту тему вообще не могу в сети материалов найти
Он и в более простых схемах теряется
Я наоборот пишу сюда чтоб схемы стали проще, чем я их сам делаю.
Все то что спрашиваю я могу и сам сделать, но получится наоборот намного сложнее схема и совсем не нужная и много лишнего - а Вас спрашиваю наоборот для разгрузки схемы - так как у Вас в основном достаточно опыта и за то благодарен что им делитесь.
Дорого же ему придётся платить за свою работу.
В этом плане мне уже неоднократно пишут - но это не работа и даже не сайт для себя - это просто хобби от нечего делать - я зарабатываю на форексе и все время у меня свободно - вот решил совместить приятное с полезным. Может конечно и получится что то из этого, поэтому и стараюсь хотя бы логику верно выстроить а сам код по мере набора опыта буду оптимизировать. У меня от моего первого написаного кода в 150 строк для регистрации осталось только 50, которые делают тоже самое)))
больше нужно читать
За месяц я прочёл
- PHP на примерах (Кузнецов, Симдянов)
- PHP в примерах (Хольцнер)
- PHP глазами хакера (Фленов)
- Ваш первый сайт с использованием PHP-скриптов (Строганов)
- PHP и MySQL (Дамашке)
и около 70 часов видео посмотрел. Сейчас жду очередную партию книг с Ozon по php5 Котерова (по вашему совету) и ООП и AJAX.
Всё равно, даже если выучить все функции наизусть этого недостаточно - как их пременить и где - вот это другое дело и в книгах мало об этом написано на конкретных примерах, да может конечно и я такой сам по себе не цежу книгу а проглатываю в несклько дней а на практике не успеваю закреплять - вот каша в голове и плучается)))

Ладно - вроде тема не для обсуждения меня создавалась, но все же спасибо за советы, в первую очередь нужно работать над собой - а потом над кодом)))

Дело все равно на месте не стоит - первая тема которуя создал - Нужна ли админ панель в начале создания скрипта? Сейчас уже и самому неловко за такой вопрос, через время посмотрю на эту тему и тоже не пойму что я здесь вообще спрашивал и зачем)))))
 

AmdY

Пью пиво
Команда форума
aaachilov
почитай лучше шлоснейгла. а насчёт "много вопросов" не парься, правильно делаешь. Единственное, что ты соглашаешься лишь с решениями, которые тебе подходят, а не с теми, как нужно делать правильно. Но это придёт потом, вместе с шишками.
 

aaachilov

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

A1x

Новичок
aaachilov ты упускаешь важный источник знаний как правильно делать - это чужой код
как тебе уже говорили выше #2
это даст тебе то чего не дадут форум и книги вместе взятые (но не заменит)
я помню когда первый раз писал сообщения так и сделал - взял форум пунбб и посмотрел как там это сделано
 

bobo

Новичок
Всю тему не читал, как у меня:

Таблица с заголовками диалогов:
- id
- from (от кого)
- to (кому)
- pmdate (дата последнего сообщения в диалоге)
- pmtitle (заголовок диалога)
- pmstatus (статус, 0\1)

Таблица с с самой перепиской:
- id
- pmid (id диалога)
- from (от кого)
- to (кому)
- pmdate (дата сообщения)
- pmtext (текст сообщения)
- pmstatus (статус, 0\1)
 

Redjik

Джедай-мастер
aaachilov ты упускаешь важный источник знаний как правильно делать - это чужой код
Согласен, но не полностью.

Если бы мне в свое время показали код, по которому СТОИТ учиться ...
Ибо то, что первыми строчками в гуглопоиске - откровенный шлак говнокодеров.
Я говорю не про форум конкретно, а про учиться на чужом коде вообще.

Классический пример, мой батхерт ближайших дней.
Сравнение дебильное немного, сравниваю цмс и цмф.
Посмотри жизненный цикл приложения ШопСкрипта и Yii приложения.

Это просто звиздец. Редко где можно встретить столь уродливую архитектуру (это все про Шопскрипт само собой). Но если погуглить, то мы не найдем плохих отзывов. Следовательно - юный подаван может вполне скачать этот шопскрипт и реально думать, что ТАК НАДО КОДИТЬ.

Не уверен, что получилось донести мысль. Т_Т
 
Сверху