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

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";
 
Как-то так (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;
 
Вот как раз таки эта часть у меня и вызвала недоумение.
Я не силен в мускуле, но можете вы мне подсказать правильно ли я его расшифровываю.
Я так понял, что удаляется таблица AAAAA_forum_category, а все ее данные переносятся в _forum_forums в столбец is_category ?
Тогда можно будет вручную сделать несколько правок is_category. Я прав?
 
Из forum_category все переносится в forum_forums. как то так.
 
ну это то я понял. А как осуществить одним запросом?
 
Одним запросом никак. запрос делается построчно на основе другого запроса.
 
Т.е. только через ПХП или вручную, прописывая название категории?
 
Ав чем сложность выполнить его на PHP
 
да не сложность. А особенность одна, интересная. Нужно очень. ))))
В пхп-то не сложно.
Как сказал один пчел из мультика: "Оно-то можно, да вот нельзя!" )))
 
Назад
Сверху