Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Автоматическое удаление строки

13K
18 марта 2007 года
Mayc
38 / / 01.02.2007
Это таблица бд
 
Код:
CREATE TABLE session (
  id_session tinytext NOT NULL,
  putdate datetime NOT NULL default '0000-00-00 00:00:00',
  user tinytext NOT NULL
) TYPE=MyISAM;

Теперь, мне нужно удалить строки из бд, если их время меньше настоящего времени более чем на 20 минут
 
Код:
$query = "DELETE FROM session
            WHERE putdate < NOW() -  INTERVAL '20' MINUTE";

Данная строка в скрипте запись не удаляет.
А вот и весь скрипт собственно:
Код:
<?php
  // Начинаем сессию
  session_start();
  // Получаем уникальный id сессии
  $id_session = session_id();
  // Устанавливаем соединение с базой данных
  include "config.php";
  // Проверяем, присутствует ли такой id в базе данных
  $query = "SELECT * FROM session
            WHERE id_session = '$id_session'";
  $ses = mysql_query($query);
  if(!$ses) exit("<p>Ошибка в запросе к таблице сессий</p>");
  // Если сессия с таким номером уже существует,
  // значит пользователь online - обновляем время его
  // последнего посещения
  if(mysql_num_rows($ses)>0)
  {
    $query = "UPDATE session SET putdate = NOW(),
                                 user = '$_SESSION[user]'
              WHERE id_session = '$id_session'";
    mysql_query($query);
  }
  // Иначе, если такого номера нет - посетитель только что
  // вошёл - помещаем в таблицу нового посетителя
  else
  {
    $query = "INSERT INTO session
              VALUES('$id_session', NOW(), '$_SESSION[user]')";
    if(!mysql_query($query))
    {
      echo $query."<br>";
      echo "<p>Ошибка при добавлении пользователя</p>";
      exit();
    }
  }
  // Будем считать, что пользователи, которые отсутствовали
  // в течении 20 минут - покинули ресурс - удаляем их
  // id_session из базы данных
  $query = "DELETE FROM session
            WHERE putdate < NOW() -  INTERVAL '20' MINUTE";
  mysql_query($query);
?>
13K
18 марта 2007 года
Mayc
38 / / 01.02.2007
После написания этого вопроса, Скрипт заработал сам. Чудеса какие то.Уже не в первый раз.
256
19 марта 2007 года
foxweb
1.0K / / 27.07.2005
поздравляю, теперь ты один из нас ))))

добро пожаловать в мир шаманства и чёрной магии!

по топику: как один из вариантов: юзать крон. с периодичностью запуска раз в час.
13K
19 марта 2007 года
Mayc
38 / / 01.02.2007
Да мне уже сказали, что такое бывает частенько. =0)
Ну я так посмотрел, полюбому хоть одна запись и будет висеть всегда в базе, т.к. удаляет её скрипт когда его вызывают. А крон даёт уже то, что хотелось, удаляются записи сами, без чьего то вмешательства.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог