Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как сделать проверку и обновления данных в xfields по id?

Как сделать проверку и обновления данных в xfields по id?


     06.02.2018    php, sql    Общие вопросы, Общие вопросы по PHP, MySQL    1143

вопрос
Здравствуйте.

Подскажите пожалуйста, как сделать выбор из доп. полей по id.
Содержание такое:
price|2554644||price_eur|71800||code|Volvo||year|2011||on|1


Выбираю цену из price_eur, умножаю на число которое содержится в json (курс валют от банка) и после удаляю цену из price и записываю новое значение.

Как мне сделать, чтобы цена бралась из каждого id и записывалась в тот же id.

Приведу пример:
Как сделать проверку и обновления данных в xfields по id?


Беру цену в price_eur из id 39, умножаю на число из json, удаляю цену в price|1401750| и делаю запись её с новым значением. Запись выглядела так:
price|1401750||price_eur|40050||code|Manitou||year|2007||on|1
, а после манипуляций так: price_eur|40050||code|Manitou||year|2007||on|1||price|1377720

Как мне сделать, чтобы price_eur которое в столбце xfields бралось к примеру из столбца id 39 умножалось на число из json и записывалось обратно в строку с id 39. То есть сделать проверку по id для каждой записи.

То есть чтобы откуда взяло число туда и записало. Чтобы была проверка по id. Иначе оно берет price_eur из первого попавшегося столбца и записывает во все остальные.


Представляю себе примерно так это реализовать:
$sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE id=$id");

Подскажите пожалуйста, как сделать проверку по id.


Вот сам код (измененный модуль xflis)t :
<?php

if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }  

if(!$xflist) {
    $sql_result = $db->query( "SELECT xfields  FROM " . PREFIX . "_post" );
    while ( $rows = $db->get_row( $sql_result ) ) {
        $xfields[] = $rows;
    }   

    $stack = array();
    foreach($xfields as $value){
        if($value[xfields]){
            $row = xfieldsdataload($value[xfields]);
            if($row[price_eur]){
                $rowdata = explode( "|", $row[price_eur]);
                foreach($rowdata as $value){
                    if($value){
                        $value = trim($value);
                        array_unshift($stack, $value);
                    }
                }
            }
        }
    }

    $json = file_get_contents('https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5');
    $data = json_decode($json, true);
    $buy_eur = $data[1]['buy'] ;

    $stack = array_unique($stack);
    sort ($stack);  
    foreach( $stack as $value ){
        $xflist = $value * $buy_eur;
    }
}

  $db->query("UPDATE dle_post SET xfields = REPLACE(xfields, CONCAT ('price|', SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'price|', -1 ) ,  '||', 1 )), '')");

   $db->query( "UPDATE " . PREFIX . "_post SET xfields= CONCAT(xfields, '||price|', $xflist)");

?>



Ответа пока нет


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

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

наверх