MySQL / PHP обработка справки по запросу

Хорошо, у меня есть две таблицы, к которым я присоединяюсь и делаю выбор, чтобы вернуть три поля (временная метка, сообщение и articleNum). Теперь эти данные в основном представляют собой журнал того, когда статья была создана и изменена, мне нужно написать логику для обработки этих трех полей, которые я получил. Чтобы определить, когда статья была создана и / или изменена в последний раз, мне нужно просмотреть сообщение и найти ключевые слова («добавлено» для создания и «обновлено» для изменения). У меня есть результаты запроса в ассоциативном массиве, и в конечном итоге я хотел бы, чтобы конечный результат был в ассоциативном массиве, где articleNum был ключом, а массив с двумя значениями (созданный, измененный) был ключом. Иногда, однако, не всегда будет измененное значение, но всегда будет создано значение. Есть идеи, как я могу начать такую ​​проблему?

РЕДАКТИРОВАТЬ Насколько я могу судить, похоже, что дата хранится как bigint в секундах Unix. Уточнение: созданные и измененные значения не являются полями из таблицы, мне нужно выяснить это из поля сообщения. Всегда будет одно добавленное время, но иногда может быть 0 или более обновленных сообщений, и мне нужно будет выяснить последнее.

РЕДАКТИРОВАТЬ 2 Хорошо, извините за формулировку вопроса. Посмотрев на проблему еще немного, я понял, что могу сделать все это с помощью двух операторов SQL. Для поиска добавленной даты я использовал:

"SELECT MIN(action_logs.time_added), article.number
 FROM action_logs
 JOIN proposal ON action_logs.article_num = article.number
 WHERE action_logs.message LIKE '%added%'
 GROUP BY article.number"

Вероятно, можно было бы сделать то же самое для последней модификации, за исключением MAX. Тем не менее, спасибо за предложения.

Пожалуйста, опубликуйте схему своей таблицы!

Michael Haren 19.01.2009 23:37

Судя по "Edit 2", похоже, я был на правильном пути. Все равно поможет, если вы разместите таблицы db - тогда кто-нибудь даст вам хороший ответ.

Michael Haren 20.01.2009 00:49

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

TravisO 20.01.2009 02:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
139
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Не уверен, что понимаю вопрос ..

Вы хотите просмотреть сообщение и извлечь время создания и время изменения?

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

Ян

Редактировать -

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

Разместите образец сообщения.

Попробуйте что-то вроде этого:

$articles = array();
while ($row = mysql_fetch_assoc($result)) {
    $articles[$row['articleId']] = array(
        'created'  => $row['created'],
        'modified' => $row['modified']
    );
}
Ответ принят как подходящий

Я делаю здесь некоторые предположения:

Если ваша таблица хранит строку для каждого из ваших сообщений (добавленных / обновленных), то этот запрос вернет одну строку для каждой статьи с нужными вам столбцами (articleNum, Created, Updated):

SELECT 
  A.articleNum, 
  MCreated.Timestamp AS Created, 
  MUpdated.Timestamp Updated
FROM Articles A
JOIN Messages MCreated 
  ON MCreated.articleNum = A.articleNum
  AND MCreated.Message = 'added'
LEFT JOIN Messages MUpdated
  ON MUpdated.articleNum = A.articleNum
  AND MUpdated.Message = 'updated'

Это плохо сформулированный вопрос. Немного пахнет это

Какие две таблицы? Что такое поле сообщения? Предположительно события?

Почему бы вам просто не указать «создано» и «обновить» в таблицах статей?

Вы уверены, что ваш дизайн хорош?

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

TravisO 20.01.2009 02:19

Другие вопросы по теме