Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 31
1

Динамическое обновление цен в зависимости от курса валют

14.01.2021, 00:55. Просмотров 147. Ответов 0

Здравствуйте!
Нужен скриптик для обновление динамически цен на сайте, тоесть сейчас так, ввожу в админке сайта курс и он в зависимости от курса выставляет цены, скрипт ниже
Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php 
/*
Plugin Name: Курс доллара
Version: 1.0
Author: Sagov
*/
 
add_action('admin_menu', 'menu_kurs_doll');
 
function menu_kurs_doll(){
    add_options_page('Курс доллара','Курс доллара','edit_pages',__FILE__, 'kurs_doll_admin');
}
 
function kurs_doll_admin(){
?>
    <h3>Курс доллара</h3>
    <form action="" method="POST">
        <p><label for="text_kers">(Курс доллара в рублях) <strong style="font-size: 18px;">1$ = </strong></label>
            <input type="text" name="kurs" id="text_kers" value="<?php echo get_option('kurs')?get_option('kurs'):84; ?>" style="width:57px;">
            <strong style="font-size: 18px;">.руб</strong>
            <input type="submit" name="save_kurs"value="Сохранить" id="btn_kurs">
        </p>
    </form>
<?php
}
$kurs = 84;
if(isset($_POST['save_kurs'])){
    if(!empty($_POST['kurs'])){
        update_option('kurs',$_POST['kurs']);
    }else if(get_option('kurs')){
        $kurs = (int)get_option('kurs');
    }
}
 
add_action('wp_footer', 'add_script');
function add_script() {
    $kurs = (int)get_option('kurs');
$content = '<script type="text/javascript">
$(function(){
    var kurs_dol = '.$kurs.';
    $( ".table-bordered.table-hover" ).each(function(){
        var tr_head = $( this ).find( "tr" ).first();
        var col_count = tr_head.find( "td" ).length;
        $( this ).find( "tr" ).each(function( i, elem ){
 
            if( 0 != i ){
                var td = $( this ).find( "td" );
                var rub = parseFloat( td.eq( col_count-1 ).text());
                var dol = parseFloat( td.eq( col_count-2 ).text());
 
                var text = "";
                
                    if( rub ){
 
                        text = parseFloat( rub / kurs_dol );
                        td.eq( col_count-2 ).text( text.toFixed(2) );
                    }else{
                        text = parseFloat( kurs_dol * dol );
                        td.eq( col_count-1 ).text( text.toFixed(2) );
                    }
                
 
            }
        });
 
    });
});
</script>';
  echo $content;
}
?>


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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);
function my_woocommerce_get_price($price, $_product) {
    // параметры ------------------------------------
    $kurs_base                 = 58; // фиксированный базовый курс валюты
    $kurs_current             = 60; // текущий курс валюты по умолчанию
    $kurs_cb = get_currency_cb('EUR'); // получить курс EUR
    // $kurs_cb = get_currency_cb('USD'); // получить курс USD
    // --------------------------------------------------
 
    $kurs_base = ($kurs_base <= 0) ? 1 : $kurs_base;
    $kurs_current = ($kurs_cb['kurs'] <= 0) ? $kurs_current : $kurs_cb['kurs'];
    $new_price = $price * ($kurs_current / $kurs_base);
 
    return $new_price; // новая цена
}
function get_currency_cb($code_valute = 'USD', $time_cash = '60' ) {
    // параметры -------------------;
    if ($code_valute != 'USD' && $code_valute != 'EUR') $code_valute = 'USD';
    if ($time_cash <= 0) $time_cash        = 60;         // время кеширования в минутах
    // ------------------------------
 
    $name_cash         = 'cash_kurs_cb';
    $cached = get_transient($name_cash);
    if ($cached !== false && $cached['code'] == $code_valute) {
        $kurs_cb = $cached;
        return $kurs_cb;
    } 
    else {
        libxml_use_internal_errors(true);
        $kurs_cb_xml = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp");
        if ($kurs_cb_xml === false) {
            echo "Ошибка загрузки XML\n";
            foreach(libxml_get_errors() as $error) {
                echo "\t", $error->message;
            }
            $kurs_cb = $cached;
            return $kurs_cb;
        }     
        else
        {
            foreach ($kurs_cb_xml->Valute as $valute) {
                if ((string)$valute->CharCode == $code_valute) {
                    $kurs_cb['date'] = (string)$kurs_cb_xml['Date'];
                    $kurs_cb['kurs'] = (string)$valute->Value;
                    $kurs_cb['code'] = $code_valute;      
                    break;
                }
            }
            $kurs_cb['kurs'] = round(str_replace(',','.',$kurs_cb['kurs']),2);
            set_transient($name_cash, $kurs_cb, MINUTE_IN_SECONDS * $time_cash);
            return $kurs_cb;
        }
    }
}


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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$content = '<script type="text/javascript">
$(function(){
    var kurs_dol = '.$kurs.';
    $( ".table-bordered.table-hover" ).each(function(){
        var tr_head = $( this ).find( "tr" ).first();
        var col_count = tr_head.find( "td" ).length;
        $( this ).find( "tr" ).each(function( i, elem ){
 
            if( 0 != i ){
                var td = $( this ).find( "td" );
                var rub = parseFloat( td.eq( col_count-1 ).text());
                var dol = parseFloat( td.eq( col_count-2 ).text());
 
                var text = "";
                
                    if( rub ){
 
                        text = parseFloat( rub / kurs_dol );
                        td.eq( col_count-2 ).text( text.toFixed(2) );
                    }else{
                        text = parseFloat( kurs_dol * dol );
                        td.eq( col_count-1 ).text( text.toFixed(2) );
                    }
                
 
            }
        });
 
    });
});
</script>';
  echo $content;

но вот как этот кусочек в недрить во второй ума не приложу.

Буду очень благодарен за любую помощ спасибо!

Добавлено через 1 час 21 минуту
Сделал так

Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php 
/*
Plugin Name: Курс доллара
Version: 1.0
Author: Sagov
*/
 
 
function get_currency($currency_code, $format) {
 
    $date = date('d/m/Y'); // Текущая дата
    $cache_time_out = '3600'; // Время жизни кэша в секундах
 
    $file_currency_cache = __DIR__.'/XML_daily.asp';
 
    if(!is_file($file_currency_cache) || filemtime($file_currency_cache) < (time() - $cache_time_out)) {
 
        $ch = curl_init();
 
        curl_setopt($ch, CURLOPT_URL, 'https://www.cbr.ru/scripts/XML_daily.asp?date_req='.$date);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_HEADER, 0);
 
        $out = curl_exec($ch);
 
        curl_close($ch);
 
        file_put_contents($file_currency_cache, $out);
 
    }
 
    $content_currency = simplexml_load_file($file_currency_cache);
 
    return number_format(str_replace(',', '.', $content_currency->xpath('Valute[CharCode="'.$currency_code.'"]')[0]->Value), $format);
 
}
 
add_action('wp_footer', 'add_script');
function add_script() {
    $kurs = get_currency('EUR', 3);
$content = '<script type="text/javascript">
$(function(){
    var kurs_dol = '.$kurs.';
    $( ".table-bordered.table-hover" ).each(function(){
        var tr_head = $( this ).find( "tr" ).first();
        var col_count = tr_head.find( "td" ).length;
        $( this ).find( "tr" ).each(function( i, elem ){
 
            if( 0 != i ){
                var td = $( this ).find( "td" );
                var rub = parseFloat( td.eq( col_count-1 ).text());
                var dol = parseFloat( td.eq( col_count-2 ).text());
 
                var text = "";
                
                    if( rub ){
 
                        text = parseFloat( rub / kurs_dol );
                        td.eq( col_count-2 ).text( text.toFixed(2) );
                    }else{
                        text = parseFloat( kurs_dol * dol );
                        td.eq( col_count-1 ).text( text.toFixed(2) );
                    }
                
 
            }
        });
 
    });
});
</script>';
  echo $content;
}
?>


тему можно закрыть.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2021, 00:55
Ответы с готовыми решениями:

Обновление курса валют по инету и фильтрация отображения курса
Добрый день! Отыскал форму которая вытягивает курсы валют. Подскажите, что и как надо прописать,...

Обновление цен по курсу валют
У меня есть база данных с пятью столбиками для цены товара: uah, rub, usd, eur и currency. В первых...

Онлайн обновление курса валют
Я написал программу (C++ Embarcadero RAD) конвертирования валюты и каким образом можно реализовать...

Автоматическое обновление курса валют для программы-конвертера
Здравствуйте. Есть небольшая программа конвертер валют. Подскажите как сделать чтобы курсы валют в...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2021, 00:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ввести номер курса студента, вывести пожелание, в зависимости от номера курса
1. Написать программу, которая спрашивает, на каком курсе учится студент и выводит в его адрес...

Отношение цен нефти и валют
Господа математики, выведите пожалуйста формулу по которой можно рассчитать цену доллара, если к...

Функция курса валют
помогите пожалуйста.. мне нужно сделать так что при вводе в любое окно любое число. при нажатии...

Виджет курса валют
Доброго времени суток. Хочу реализовать прототип данного виджета, но с возможностью изменять курсы...

Информер курса валют
(вопрос новичка) Подскажите как сделать также как на сайте https://bitcoinity.org/ а именно,...

Получение курса валют
Добрый день, надо получить курс валют, для этого использую api банка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.