Редактор темы

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

  • Автор темы Автор темы mycroft
  • Дата начала Дата начала

mycroft

PRO Users
Регистрация
23 Янв 2019
Сообщения
238
Рейтинг реакций
20
Баллы
18
1/3
Автор темы
У меня есть доп поле kp_id, как массово скопировать через sql запрос значения из этого поля в доп поле kinopoisk_id.?

Нашел похожее, но не знаю как title на доп поле заменить
Код:
UPDATE dle_post SET xfields = concat(xfields, '||', 'kinopoisk_id', '|', REPLACE(title, "|", "|"));
 
У меня есть доп поле kp_id, как массово скопировать значения из этого поля в доп поле kinopoisk_id.?

Нашел похожее, но не знаю как title на доп поле заменить
Код:
UPDATE dle_post SET xfields = concat(xfields, '||', 'kinopoisk_id', '|', REPLACE(title, "|", "|"));
Блин, не помню точно, но вроде на форуме был скрипт или чет похожее. Короче позволял с одного доп.поля копировать все в другое. Но очень давно видел, даже сохранял, но пк уже давно другой, а старому почти кирдык.
 
Автор темы
Блин, не помню точно, но вроде на форуме был скрипт или чет похожее. Короче позволял с одного доп.поля копировать все в другое. Но очень давно видел, даже сохранял, но пк уже давно другой, а старому почти кирдык.
А через sql не знаешь как?
 
А через sql не знаешь как?
Это нет, я в sql ваще стараюсь не вмешиватся, то потом хер поймешь откуда глюки появились. Но думаю спецы форума тебе могли бы помочь, за копеечку канечно. Вроде byroot где-то чет подобное писал, подсказывал кому-то, но точно не помню.
 
мутите вы что-то, там одним запросом не обойтись, скриптец нужен, который будет считывать по строке всю базу и брать доп поле, разбирать его, вынимать оттуда kp_id и потом сохранять в поле kinopoisk_id
 
Автор темы
Вопрос решен, нужно в 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']."'");
}
 
Вопрос решен, нужно в 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']."'");
}
И где тут название доп.полей прописывать?
 
Вопрос решен, нужно в 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']."'");
}
Я не запускал перестроение публикаций, просто обновил главную страницу сайта и подождал минуты 2 е, у меня 75000 фильмов. И поле скопировалось. ДЛЕ 14.1 И нужно убрать из кода <?php в начале, код вставил в низ файла, перед последним кодом.
 

Похожие темы Последние темы Популярные темы

Назад
Сверху