Как сделать этот запрос вручную?

Тема в разделе "Базы данных", создана пользователем acelotuse, 23 мар 2011.

Модераторы: latteo
  1. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    Добрый день!
    Есть php файл для обновления базы данных форума. Как его "перевести", чтобы сделать этот запрос вручную, через phpmyadmin?
    PHP:
    if(!defined('DLE_FORUM_INSTALL'))
    {
      die(
    "Hacking attempt!");
    }

        
    $db->query("ALTER TABLE " PREFIX "_forum_forums ADD `is_category` TINYINT( 1 ) NOT NULL");
        
        
    $query $db->query("SELECT * FROM " PREFIX "_forum_category");
        
        
    $posi 0;
        
        while (
    $row $db->get_row($query))
        {
            
    $posi++;
            
            
    $db->query("INSERT INTO " PREFIX "_forum_forums (parentid, name, position, is_category) values ('-1', '{$row['cat_name']}', '$posi', '1')");
            
            
    $parent_id $db->insert_id();
            
            
    $db->query("UPDATE " PREFIX "_forum_forums SET parentid = '$parent_id' WHERE main_id = '{$row['sid']}'");
        }
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_forum_forums ADD `redirect` VARCHAR( 250 ) NOT NULL";
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_forum_forums ADD `alt_name` VARCHAR( 50 ) NOT NULL";
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_forum_topics ADD `alt_name` VARCHAR( 200 ) NOT NULL";
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_users ADD `forum_read` VARCHAR( 20 ) NOT NULL";
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_forum_moderators ADD `banned` TINYINT( 1 ) NULL";
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_forum_moderators ADD `read_mode` TINYINT( 1 ) NULL";
        
        
    $db_query[] = "ALTER TABLE " PREFIX "_forum_forums DROP `main_id`";
        
        
    $db_query[] = "DROP TABLE " PREFIX "_forum_category";
     
  2. Sokol777

    Sokol777 Постоялец

    Регистр.:
    10 янв 2008
    Сообщения:
    57
    Симпатии:
    6
    Как-то так (AAAAA - заменить на префикс таблиц)
    Код:
    ALTER TABLE AAAAA_forum_forums ADD `is_category` TINYINT( 1 ) NOT NULL; 
    Что-бы выполнить эту часть надо знать вывод SELECT * FROM AAAAA_forum_category
    PHP:
        $query $db->query("SELECT * FROM AAAAA_forum_category"); 
        
    $posi 0
        while (
    $row $db->get_row($query)) 
        { 
            
    $posi++; 
            
    $db->query("INSERT INTO AAAAA_forum_forums (parentid, name, position, is_category) values ('-1', '{$row['cat_name']}', '$posi', '1')"); 
            
    $parent_id $db->insert_id(); 
            
    $db->query("UPDATE AAAAA_forum_forums SET parentid = '$parent_id' WHERE main_id = '{$row['sid']}'"); 
        } 
    А вот эта часть уже пойдет.
    Код:
    ALTER TABLE AAAAA_forum_forums ADD `redirect` VARCHAR( 250 ) NOT NULL; 
    ALTER TABLE AAAAA_forum_forums ADD `alt_name` VARCHAR( 50 ) NOT NULL; 
    ALTER TABLE AAAAA_forum_topics ADD `alt_name` VARCHAR( 200 ) NOT NULL; 
    ALTER TABLE AAAAA_users ADD `forum_read` VARCHAR( 20 ) NOT NULL; 
    ALTER TABLE AAAAA_forum_moderators ADD `banned` TINYINT( 1 ) NULL; 
    ALTER TABLE AAAAA_forum_moderators ADD `read_mode` TINYINT( 1 ) NULL; 
    ALTER TABLE AAAAA_forum_forums DROP `main_id`; 
    DROP TABLE AAAAA_forum_category;
     
    acelotuse нравится это.
  3. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    Вот как раз таки эта часть у меня и вызвала недоумение.
    Я не силен в мускуле, но можете вы мне подсказать правильно ли я его расшифровываю.
    Я так понял, что удаляется таблица AAAAA_forum_category, а все ее данные переносятся в _forum_forums в столбец is_category ?
    Тогда можно будет вручную сделать несколько правок is_category. Я прав?
     
  4. Sokol777

    Sokol777 Постоялец

    Регистр.:
    10 янв 2008
    Сообщения:
    57
    Симпатии:
    6
    Из forum_category все переносится в forum_forums. как то так.
     
  5. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    ну это то я понял. А как осуществить одним запросом?
     
  6. Sokol777

    Sokol777 Постоялец

    Регистр.:
    10 янв 2008
    Сообщения:
    57
    Симпатии:
    6
    Одним запросом никак. запрос делается построчно на основе другого запроса.
     
  7. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    Т.е. только через ПХП или вручную, прописывая название категории?
     
  8. Sokol777

    Sokol777 Постоялец

    Регистр.:
    10 янв 2008
    Сообщения:
    57
    Симпатии:
    6
    Ав чем сложность выполнить его на PHP
     
  9. acelotuse

    acelotuse

    Регистр.:
    31 мар 2009
    Сообщения:
    312
    Симпатии:
    37
    да не сложность. А особенность одна, интересная. Нужно очень. ))))
    В пхп-то не сложно.
    Как сказал один пчел из мультика: "Оно-то можно, да вот нельзя!" )))