Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Вопрос? Как скопировать значения из 1 доп поля в другое

Тема в разделе "Вопросы- ответы", создана пользователем mycroft, 2 мар 2020.

02.03.20 в 22:35
14.05.23 в 04:09
9
1.725
0
  1. TopicStarter Overlay
    mycroft

    PRO Users

    Регистрация:
    23 янв 2019
    Сообщения:
    238
    Лучших ответов:
    1
    Рейтинги:
    +39 / 8 / -0
    У меня есть доп поле kp_id, как массово скопировать через sql запрос значения из этого поля в доп поле kinopoisk_id.?

    Нашел похожее, но не знаю как title на доп поле заменить
    Код:
    UPDATE dle_post SET xfields = concat(xfields, '||', 'kinopoisk_id', '|', REPLACE(title, "|", "|"));
     
  2. Roman.U

    PRO Users

    Регистрация:
    13 ноя 2015
    Сообщения:
    6.892
    Лучших ответов:
    5
    Рейтинги:
    +1.230 / 154 / -0
    Блин, не помню точно, но вроде на форуме был скрипт или чет похожее. Короче позволял с одного доп.поля копировать все в другое. Но очень давно видел, даже сохранял, но пк уже давно другой, а старому почти кирдык.
     
  3. TopicStarter Overlay
    mycroft

    PRO Users

    Регистрация:
    23 янв 2019
    Сообщения:
    238
    Лучших ответов:
    1
    Рейтинги:
    +39 / 8 / -0
    А через sql не знаешь как?
     
  4. Roman.U

    PRO Users

    Регистрация:
    13 ноя 2015
    Сообщения:
    6.892
    Лучших ответов:
    5
    Рейтинги:
    +1.230 / 154 / -0
    Это нет, я в sql ваще стараюсь не вмешиватся, то потом хер поймешь откуда глюки появились. Но думаю спецы форума тебе могли бы помочь, за копеечку канечно. Вроде byroot где-то чет подобное писал, подсказывал кому-то, но точно не помню.
     
  5. ZULI

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    923
    Лучших ответов:
    1
    Рейтинги:
    +247 / 30 / -0
    мутите вы что-то, там одним запросом не обойтись, скриптец нужен, который будет считывать по строке всю базу и брать доп поле, разбирать его, вынимать оттуда kp_id и потом сохранять в поле kinopoisk_id
     
  6. TopicStarter Overlay
    mycroft

    PRO Users

    Регистрация:
    23 янв 2019
    Сообщения:
    238
    Лучших ответов:
    1
    Рейтинги:
    +39 / 8 / -0
    Вопрос решен, нужно в init.php добавить код и запустить перестроение публикаций
    Код:
    <?php
    ini_set('memory_limit', '512M');
    ini_set('display_errors', 1);
    error_reporting(1);
    ini_set('max_input_time', '200000');
    define ( "DATALIFEENGINE", true );
    set_time_limit(0);
    header("Content-Type: text/html;charset=utf-8");
    
    require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/classes/mysql.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/modules/functions.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/data/dbconfig.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/data/config.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/api/api.class.php';
    
    $sql = $db->query("SELECT id, xfields FROM ".PREFIX."_post");
    
    while ( $row = $db->get_row ($sql) ) {
        $xfields_array = array();
        foreach ( explode('||',$row['xfields']) as $pac_xfields ) {
            $s_all = explode('|',$pac_xfields);
            $xfields_array[$s_all[0]] = $s_all[1];
        }
    
        $xfields_array['kinopoisk_id'] = $xfields_array['kp_id'];
    
        $xfields = array();
        foreach ( $xfields_array as $key => $value ) { if ($value!=''){$xfields[] = $key.'|'.str_replace('|','&#124;',$value);} }
        $xfields = addslashes(implode("||",$xfields));
        $db->query("UPDATE ".PREFIX."_post SET xfields='".$xfields."' WHERE id='".$row['id']."'");
    }
    
     
  7. Roman.U

    PRO Users

    Регистрация:
    13 ноя 2015
    Сообщения:
    6.892
    Лучших ответов:
    5
    Рейтинги:
    +1.230 / 154 / -0
    И где тут название доп.полей прописывать?
     
  8. Ботяра

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    0
    Лучших ответов:
    54
    Рейтинги:
    +711 / 74 / -0
    PHP:
     $xfields_array['kinopoisk_id'] = $xfields_array['kp_id'];
     
    • Нравится Нравится x 1
  9. Roman.U

    PRO Users

    Регистрация:
    13 ноя 2015
    Сообщения:
    6.892
    Лучших ответов:
    5
    Рейтинги:
    +1.230 / 154 / -0
    Спасибо, не заметил). Кодик в тхт сохранил, вдруг пригодится)
     
  10. demsdems

    demsdems Зелёный

    Регистрация:
    2 янв 2018
    Сообщения:
    3
    Лучших ответов:
    0
    Рейтинги:
    +2 / 1 / -0
    Я не запускал перестроение публикаций, просто обновил главную страницу сайта и подождал минуты 2 е, у меня 75000 фильмов. И поле скопировалось. ДЛЕ 14.1 И нужно убрать из кода <?php в начале, код вставил в низ файла, перед последним кодом.
     
Яндекс.Метрика