Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Как можно скопировать все данные одного дополнительного поля в другое?

Как можно скопировать все данные одного дополнительного поля в другое?


     16.10.2018    Все вопросы » MySQL    115

вопрос
Есть созданные три дополнительных поля (label1, label2, label3)/ Необходимо продублировать данные из label2 в label1
Каким образом это возможно провернуть? Вручную очень долго, в базе несколько тысяч позицию.

Ответил: Proff


Можно скриптом, можно в 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['label1'] = $xfields_array['label2'];

	$xfields = array();
	foreach ( $xfields_array as $key => $value ) { if ($value!=''){$xfields[] = $key.'|'.str_replace('|','|',$value);} }
	$xfields = addslashes(implode("||",$xfields));
	$db->query("UPDATE ".PREFIX."_post SET xfields='".$xfields."' WHERE id='".$row['id']."'");
}
?>

5 комментариев

Proff
Юзер

Proff - 16 октября 2018 19:22 -

дубль

jeka66
Юзер

jeka66 - 16 октября 2018 19:48 -

Копирует данные правильно, но порядок меняется. второе доп.поле становится первым, а первое, куда вносятся данные, вторым. изначально первое поле с пустыми данными, видимо из-за этого.

jeka66
Юзер

jeka66 - 16 октября 2018 20:23 -

Proff огромное спасибо. Через небольшой костыль (REPLACE) переименовал вторую метку как первую и добавил при помощи вашего скрипта данные как во вторую. Все получилось.

dj-avtosh
Эксперт

dj-avtosh - 17 октября 2018 12:53 -

str_replace('|','|',$value)


WAT?

telegram: @blob42 (https://t.me/blob42)

Proff
Юзер

Proff - 17 октября 2018 14:58 -

Вот тебе и ват. Такая вот вставка исходного кода.
str_replace('|','&ЯЯЯ#124;',$value);

ЯЯЯ - удалить.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх