【问题标题】:Need help with sending variables into a function PHP需要帮助将变量发送到函数 PHP
【发布时间】:2011-08-11 19:44:14
【问题描述】:

我在网上商店工作,需要帮​​助才能使 iDeal 插件(来自荷兰的付款方式)正常工作。

我需要发送需要支付的物品的金额(价格)。 我像这样从上一页获取商品的数量

$qty = $_POST['qty'];

并像这样创建一个总价格变量(2999 是价格,它需要以美分为单位,所以价格是 29,99)

$totaalprijs = 2999 * $qty;
$iAmount = $totaalprijs;

访问者选择他的银行并通过按下提交按钮开始付款 然后发生这种情况

$oIdeal->setIdealAmount ( $iAmount );

它正在将变量发送到另一个php文件中的这个函数,检查该值是否为非0的数字,并通过另一个函数将其发送到支付方式。

public function setIdealAmount ( $intIdealAmount ) {

  # Is this a valid ideal amount?
  if ( is_numeric ( $intIdealAmount ) && $intIdealAmount > 0 ) {
    $this->idealAmount = $intIdealAmount;    
  }
  else {
    throw new Exception( 'Invalid ideal amount, please check.' );   
  }
   return $this;

}

这就是问题所在,当它通过函数发送时,它总是返回 0 除非我这样做:

$iAmount = 2999;

我希望商品的总价格为 price * qty,但它仅在我声明 $iAmount 变量时返回 $this。

我得到的错误信息是这样的:

Fatal error: Uncaught exception 'Exception' with message 'Invalid ideal amount, please check.' in /home/spraytanning-express.nl/www/TargetPayIdeal.class.php:154 Stack trace: #0 /home/spraytanning-express.nl/www/betalen.php(116): TargetPayIdeal->setIdealAmount(0) #1 {main} thrown in /home/spraytanning-express.nl/www/TargetPayIdeal.class.php on line 154

希望你们中的一些人可以帮助我... 顺便说一句,对不起我的英语不好:)

提前致谢!

【问题讨论】:

  • 您是否 100% 确定在 $_POST['qty'] 中设置了某些内容?如果没有设置任何内容,0 将是可能导致此行为的默认值。
  • 是的,当我有 2 个产品添加到我的购物车时,它会返回例如 int(5998) var_dump($totaalprijs)

标签: php payment-processing webshop


【解决方案1】:

尝试拆分检查并根据检查失败显式抛出异常:

public function setIdealAmount ( $intIdealAmount ) {
    var_dump($intIdealAmount); // see what the value is
    if (!is_numeric($intIdealAmount)) {
           throw new Exception( 'ideal amount not numeric' );   
    }
    if ($intIdealAmount <= 0) {
        throw new Exception('ideal amount <= 0');
    }
    etc...
}

现在,您的异常对于显示某些错误有些有用,但对于准确解释错误的原因是无用的。

【讨论】:

  • 感谢您的回答!但在我的问题中,我已经声明它返回为 0 .. 我尝试了你的函数,它出现了消息 Ideal amount
  • 所以请执行var_dump($_POST['qty']) 并确保您确实从表单中获得了一些东西,然后在您操作值时复制该行。找出值被归零的地方,这就是你的错误。
  • 好的,我试过了,当我从 $oIdeal->setIdealAmount ( $iAmount ) 发送它时它返回 0; (在该函数下面它仍在工作,并且也是一个 int())所以当我将它从一个页面发送到另一个页面上的 setIdealAmount 函数时,它在通过该函数时返回 0.. 我该如何解决这个问题?对不起,我真的不擅长 php :$
  • 好的,所以您的表单没有正确提交值。检查其中是否有qty 字段等...
  • 不,当我 var_dump($totaalprijs) 将 2 个产品添加到购物车时它返回 int(5998) .. 所以没有问题。
【解决方案2】:

如果您还没有这样做,您可能需要在使用 $this-> 对象引用它之前初始化 $idealAmount 变量。此外,您可能需要检查 $_POST['qty'] 是否为数字。

【讨论】:

  • 感谢您的回答!当我转储变量时,变量 $totaalprijs 返回为 int .. 问题不在 $idealAmount..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 2021-01-12
相关资源
最近更新 更多