Помогите поменять формулы и правила в php

moradin

Постоялец
Регистрация
11 Фев 2016
Сообщения
76
Реакции
14
Есть скрипт
<?php
error_reporting(0);
$host='localhost';
$user='пользователь';
$pass='пароль';
$db='бд';
include('sql.php');
include('inet.php');

$z=curl('Для просмотра ссылки Войди или Зарегистрируйся"d.m.Y"));
$n1=strpos($z,'<td>Доллар США</td>')+4;
$n1=strpos($z,'<td>',$n1)+4;
$n2=strpos($z,'</td>',$n1)-$n1;
$kurs=str_replace(',','.',substr($z,$n1,$n2));


$url='ссылка';
$tbl='cashbackengine_transactions';

$inp=curl($url);
$dd=date("Y-m-d H:i:s");
$inp = new SimpleXMLElement($inp);
foreach($inp->stat as $a){
$sqlw['transaction_id']=strval($a->order_id);
$sql['transaction_id']=strval($a->order_id);
$sql['transaction_amount']=strval($a->cart);
$sql['transaction_commision']=strval($a->payment);
$sql['user_id']=strval($a->subid);
$sql['program_id']=strval($a->advcampaign_id);
$sql['retailer']=strval($a->advcampaign_name);
$sql['status']=strval($a->status);

$sql_ret['program_id']=strval($a->advcampaign_id);
$x=db_read('cashbackengine_retailers',$sql_ret);
$b=str_replace('%','',$x[0]['cashback']);

$sql['transaction_commision']=$kurs*$sql['transaction_commision'];
$sql['transaction_amount']=$kurs*$sql['transaction_amount'];

$sql['amount']=round($b*$sql['transaction_amount']/100,2);
if($sql['amount']>$sql['transaction_commision']){$sql['amount']=round($sql['transaction_commision']*95/100,2);}
$sql['amount']=floor($sql['amount']);

$x=db_read($tbl,$sqlw);
if(!$x){
$sql['created']=$dd;
$sql['updated']=$dd;
db_ins($tbl,$sql);
}else{
$sql['updated']=$dd;
db_up($tbl,$sql,$sqlw);
}
}
так вот формула тут не правильная стоит ($sql['amount']=round($b*$sql['transaction_amount']/100,2); - вроде это), надо чтобы если в столбце cashback в таблице cashbackengine_retailers стоит значение в процентах (например 5%), то что бы было amount=transaction_amount*на 5%(данные из столбца cashback в таблице cashbackengine_retailers), а если без число без процентов, то amount=этому числу (данные из столбца cashback в таблице cashbackengine_retailers).
 
адо чтобы если в столбце cashback в таблице cashbackengine_retailers стоит значение в процентах (например 5%)
А как скрипт должен понять, что число в процентах, а не монгольских тугриках?
Мне нравится, что вы задаете вопос, а толком сами не знаете где и чего («вроде это»).
А так, если в поле надо найти знак процента, то есть спец. функция strripos для этого Для просмотра ссылки Войди или Зарегистрируйся
 
А как скрипт должен понять, что число в процентах, а не монгольских тугриках?
Мне нравится, что вы задаете вопос, а толком сами не знаете где и чего («вроде это»).
А так, если в поле надо найти знак процента, то есть спец. функция strripos для этого Для просмотра ссылки Войди или Зарегистрируйся
Просто вознаграждение может быть в процентах от суммы, а может быть фиксированной, зависит от магазина. В бд в таблице cashbackengine_retailers в столбце cashback это прописывается (отображается с % или без), вот и спрашиваю как сделать, что если % то умножить, а если просто число то amount=этому числу. Вот часть, которую надо изменить, а как не знаю
$sql_ret['program_id']=strval($a->advcampaign_id);
$x=db_read('cashbackengine_retailers',$sql_ret);
$b=str_replace('%','',$x[0]['cashback']);

$sql['transaction_commision']=$kurs*$sql['transaction_commision'];
$sql['transaction_amount']=$kurs*$sql['transaction_amount'];

$sql['amount']=round($b*$sql['transaction_amount']/100,2);
if($sql['amount']>$sql['transaction_commision']){$sql['amount']=round($sql['transaction_commision']*95/100,2);}
$sql['amount']=floor($sql['amount']);
 
PHP:
$sql['transaction_amount'] = (strripos($sql['transaction_amount']),'%')===FALSE) ? ($b+$sql['transaction_amount']) : ($b*$sql['transaction_amount']/100);
$sql['amount']=round($sql['transaction_amount'],2);
Заменил строку, но не хочет обновлять баланс, попробовал. Кстати в редакторе напротив строчки $sql['transaction_amount'] = (strripos($sql['transaction_amount']),'%')===FALSE) ? ($b+$sql['transaction_amount']) : ($b*$sql['transaction_amount']/100); показывает Syntax error.
 
stripos вместо strripos
 
Вы можете привести полный скрипт и желательно структуру БД? А то непонятно, что Вы хотите
 
Попробуйте так
PHP:
$sql['transaction_amount'] = (strpos($sql['transaction_amount']),'%') !== false) ? ($b*$sql['transaction_amount']/100) : ($b+$sql['transaction_amount']);
или так
PHP:
$sql['transaction_amount'] = (substr($sql['transaction_amount'], strlen($sql['transaction_amount'])-1) == "%") ? ($b*$sql['transaction_amount']/100) : ($b+$sql['transaction_amount']);
 
(strripos($sql['transaction_amount']),'%')===FALSE) ? ($b+$sql['transaction_amount']) : ($b*$sql['transaction_amount']/100); показывает Syntax error.
там скобка лишняя, надо так
PHP:
$sql['transaction_amount'] = (strripos($sql['transaction_amount'],'%')===FALSE) ? ($b+$sql['transaction_amount']) : ($b*$sql['transaction_amount']/100);
вы уж сами проверяйте на ошибки, мы только принцип подсказываем, а код надо самому;)
 
Назад
Сверху