Обновление предыдущего статуса как мертвого при вставке нового обновления - PullRequest
0 голосов
/ 02 марта 2010

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

Я хочу сохранить его там, где они могут удалить, и он помечает его как мертвый в БД (как сейчас), но когда они пишут новый, не удаляя, он автоматически помечает предыдущую отправку как мертвую.

У меня есть сценарий удаления:

$query = "UPDATE `UserUpdates` SET `status` = 'dead' WHERE `id` = '".$UserUpdates."'";
$request = mysql_query($query,$connection);

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

Ответы [ 3 ]

1 голос
/ 03 марта 2010

Похоже, вам придется выполнить 2 запроса:

  1. обновить UserUpdates, чтобы пометить существующее как мертвое
  2. вставить новую строку

Если вы используете Innodb или другой механизм транзакций, вы можете заключить их в «BEGIN TRANSACTION» и «COMMIT», чтобы 2 обновления выполнялись как одна атомарная операция.

Чтобы упростить ваше приложение, можно написать хранимую процедуру, и все, что вашему приложению нужно сделать, это вызвать одну хранимую процедуру.

0 голосов
/ 03 марта 2010

Почему бы не запустить скрипт удаления для текущего статуса после вставки нового статуса? Я предполагаю, что вы знаете этот идентификатор текущего статуса (назовем его $c_status_id).

INSERT INTO statuses VALUES ( ... )
DELETE FROM statuses WHERE id = "$c_status_id"

Таким образом, у вас будет только самое последнее обновление статуса.

0 голосов
/ 02 марта 2010

Разве вы не можете просто сохранить все записи о статусе и просто извлечь самую последнюю (запись с самым высоким ID) в качестве их текущего статуса? на самом деле вам не нужно помечать их как мертвые при добавлении нового, так как вам все равно понадобится извлечь последнюю запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...