За последние 24 часа нас посетили 17477 программистов и 1714 роботов. Сейчас ищут 1752 программиста ...

Как задать "время жизни" таблицы в БД

Тема в разделе "Сделайте за меня", создана пользователем smartCreate, 4 ноя 2016.

  1. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Добрый день! Я оцениваю свои знания в php как "так себе" :)
    По этому использую для своих проектов фреймворк "Codignaiter". Прошу всех, кто обладает знаниями относительно работы с этим фреймворком, помочь мне разобраться с моей проблемой.

    Я создаю таблицу в БД средствами самого Codignaiter, при сабмите формы, собственно все импуты которые есть в этой форме сразу же заносятся в эту таблицу. Мне нужно задать "время жизни" для таких таблиц, Скажем 2 дня после её создания она существует, а потом удаляется.

    Помогите пожалуйста разобраться, как это можно реализовать.

    Вот код который выполняет все описные выше действия:

    Код (Text):
    1.  
    2. // ВЬЮВЕР
    3. <form id="addCart" method="post" action="main_c/addCart">
    4.     <input type="text" name="title"/>
    5.     <input type="text" name="cost"/>
    6.     <input type="text" name="articul"/>
    7.     <button type="submit" name="btn_addCart" id="btn_addCart">Submit</button>
    8. </form>
    9.  
    10. // КОНТРОЛЕР
    11. function addCart() {
    12.     if (isset($_POST['btn_addCart'])) {
    13.         $tabel_name['title'] = $_POST['title'];
    14.         $tabel_name['cost'] = $_POST['cost'];
    15.         $tabel_name['articul'] = $_POST['articul'];
    16.         $tabel_name['btn_addCart'] = $_POST['btn_addCart'];
    17.         $this->main_model->create_table($tabel_name);
    18.     }
    19. }
    20.  
    21. // МОДЕЛЬ
    22. function create_table($tabel_name) {
    23.     if ($this->db->table_exists($tabel_name['btn_addCart'])){
    24.              echo: 'Таблица уже существует'
    25.     }else{
    26.         $new_table = array(
    27.             'id' => array(
    28.                 'type' => 'INT',
    29.                 'constraint' => 5,
    30.                 'unsigned' => TRUE,
    31.                 'auto_increment' => TRUE
    32.             ),
    33.             'btn_addCart' => array(
    34.                 'type' => 'VARCHAR',
    35.                 'constraint' => '100',
    36.             ),
    37.             'title' => array(
    38.                 'type' => 'VARCHAR',
    39.                 'constraint' => '100',
    40.             ),
    41.             'cost' => array(
    42.                 'type' => 'VARCHAR',
    43.                 'constraint' => '100',
    44.             ),
    45.             'articul' => array(
    46.                 'type' => 'VARCHAR',
    47.                 'constraint' => '100',
    48.             )
    49.         );
    50.         $this->dbforge->add_field($new_table);
    51.         $this->dbforge->add_key('id', TRUE);
    52.         $this->dbforge->create_table($tabel_name['btn_addCart']);
    53.         $array = array(
    54.             'btn_addCart' => $tabel_name['btn_addCart'],
    55.             'title' => $tabel_name['title'],
    56.             'cost' => $tabel_name['cost'],
    57.             'articul' => $tabel_name['articul']  
    58.         );
    59.         $this->db->insert($tabel_name['btn_addCart'], $array);
    60.     }
    61. }
    Благодарен заранее, за любую помощь)
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    таблицы? может записи по time заданному проверяется ( истекло ли время ) если да то строку в таблице удаляем
    --- Добавлено ---
    а не вру, рили создается таблица.. а нафига так делать ?
    'btn_addCart' => $tabel_name['btn_addCart'],
    'title' => $tabel_name['title'],
    'cost' => $tabel_name['cost'],
    'articul' => $tabel_name['articul']
    время живучести таблицы нету
     
    denis01 нравится это.
  3. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @MAN_IFE_ST

    Я к сожалению не понял, Вас)
    Сотрите что я делаю, я создаю таблицу в которой хранятся временные значения, для того что бы их можно было разфуричить на странице в течении какого то времени (например 2 дня), в связи с этим сама таблица тоже несет временный характер, то есть нужно что бы по истечению тех же двух дней она сама по себе удалилась. Я знаю что это можно сделать, а вот как именно я не знаю, по этому прошу помочь
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Зачем таблица будет носить временный характер? для вкуса?
    Создайте таблицу для временного хранения информации, id time_out item колонки и проверять есть ли такая запись ... но таблицу то зачем?

    Очень хороший пример:
    ОЗУ, для временного хранения данных, сама линейка оперативки - это таблица, в ней постоянно что то записывается или стирается.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @smartCreate чем таблица от записи отличается?
     
  6. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Друзья, я понимаю что Вам профессионалам сложно понять зачем мне это нужно, а мне новичку сложно объяснить Вам, просто я экспериментирую над тем что, как мне кажется, может быть весьма интересным - да я могу ошибаться, потому что только начинаю осваивать эту бездонную науку, но даже если это так я хочу сам увидеть свою ошибку. А задание "времени жизни" для таблицы это всего лишь маленькое зернышко моей задумки.

    Я невероятно благодарен за Ваше стремление научить меня делать "правильно", но на данном этапе меня интересует только моя задумка. По этому я очень прошу ответить на мой изначальный вопрос - "Как задать "время жизни" таблицы в БД", и возможно ли это вообще. Если невозможно в принципе, тогда я буду искать другие "правильные" пути решения моей задачи.

    Заранее благодарен за любую помощь
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Как ответить если мы тебя не понимаем? Откуда я знаю, таблицу удалять или записи в таблице.
     
  8. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Просто уточните что именно я непонятно говорю, я сразу же дополню)

    Мне нужно удалить таблицу целиком
     
    #8 smartCreate, 5 ноя 2016
    Последнее редактирование: 5 ноя 2016
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    тогда в одной таблице держи список когда удалять другие таблицы, потом настрой cron что раз в час запускать php скрипт который будет выполнять select запрос к mysql чтобы получить список таблиц которые нужно удалить, потом делай sql запрос drop с именами этих таблиц.