Способ / метод кодирования, чтобы сделать список активности / журнал - PullRequest
0 голосов
/ 01 августа 2011

Хорошо, так что этот вопрос не столько о процедуре кодирования, сколько о хорошем и чистом способе кодирования этого списка действий, я планирую построить.

Этот список действий будет содержать все действия на странице..

Таким образом, в основном для всех действий, выполняемых на странице, она будет вызывать что-то вроде функции insertActivity($stuff) для вставки действия, например, о том, что вы только что что-то сделали.

Теперь меня интересует способ кодирования, как мне это сделать?

Должно ли у меня появиться сообщение «Вы только что что-то сделали» в строке в БД, или у меня должны быть номера, где в моемphp файл я определяю, что число 1 означает «вы только что что-то сделали»?

С сообщением, не сохраненным в db, я смогу позже отредактировать сообщение для всех сообщений активности, например, если сообщение следует изменить на «вы»просто съел что-то ".

Должен ли я сделать это, как я уже говорил ранее, о вызове функции до / после сохранения действия, регистрации этого действия в списке активности или любом другом предпочтительном способе сделать это?

Я имел в виду только то, что insertActivity () должен просто вставлять активность в базу данных по входным данным ($ stuff), которые он получил.

Действительно ценю простой и понятный способ кодирования, чтобы сделать это..

Ответы [ 3 ]

1 голос
/ 01 августа 2011

Это ... невозможный вопрос. Это не невозможно в том, что трудно ответить, это не невозможно в том, что невозможно дать хороший ответ, это невозможно, потому что есть много, много разных хороших ответов и нет «правильных» ответов.

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

SELECT -- your other columns can go here.
       (SELECT DESCRIPTION FROM DESCRIPTIONS DE 
            WHERE DE.ID = DID.DESCRIPTION_ID LIMIT 1) as ACTIVITY
            -- I always add a LIMIT in a sub-query...
       -- your other columns can go here.
       FROM DID_THINGS DID WHERE USER_ID = 1;

MySQL делает этот тип структуры немного легче, если есть достаточно ограниченное число действий (и они известны заранее) - вы должны посмотреть на тип ENUM. Однако с ENUM это становится самым раздражающим способом изменения сайта. Лично мне нравится второй вариант стола, и я использую его очень часто. Если я хочу, чтобы администратор мог добавить что-то вроде «Вы смотрели что-то», я могу просто раскрыть это через веб-форму и скрыть драгоценные ключи от базы данных там, где их никто не знает, включая меня.

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

1 голос
/ 01 августа 2011

Хранение только идентификатора действия - хорошая идея.Вы также можете создать таблицу «действий», где вы будете хранить все возможные действия.

Таким образом вы сэкономите место на диске и сделаете решение более гибким.

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

Вопрос очень общий, поэтому трудно дать более конкретный ответ.Предоставьте больше информации, если вам нужно чем-то помочь.

0 голосов
/ 01 августа 2011

Это зависит

  • будут ли миллионы строк?
  • Вас волнует дисковое пространство?
  • будет ли у пользователя шанс увидеть этот журнал?

Вы должны посмотреть на эти зависимости и подумать об этом.

...