2014-09-03 188 views
0

我试图在按下按钮时将一堆php中的变量传递给函数。该按钮会触发该功能,但某些变量的值不正确。php函数调用参数不通过

 <?php 
      function Commit($TID,$total,$itemCount,$barcoded,$barcodedQTY,$nonBarcoded,$nonBarcodedQTY) 
      { 
      var_dump($TID); //int 2 - correct 
      var_dump($total); //string '0.00' (length=4) - incorrect 
      var_dump($itemCount); //int 1 -incorrect value 
      var_dump($barcoded); // array (empty) // incorrect 
      var_dump($barcodedQTY); // array (empty) // incorrect 
      var_dump($nonBarcoded); // array (empty) // incorrect 
      var_dump($nonBarcodedQTY); //null - incorrect 

      } 
      var_dump($TID); // int 2 
      var_dump($total); // string "87.80 
      var_dump($itemCount);// int 3 
      var_dump($barcoded); // array (size=1) 0 => string '1' (length=1) 
      var_dump($barcodedQTY); // array (size=1) 0 => int 4 
      var_dump($nonBarcoded); // array (size=1) 0 => string '14' (length=2) 
      var_dump($nonBarcodedQTY); // array (size=1) 0 => string '4' (length=1) 
      if (isset($_REQUEST['commit'])) 
      { 
      if(isset($TID,$total,$itemCount,$barcoded,$barcodedQTY,$nonBarcoded,$nonBarcodedQTY)) 
      { 
       Commit($TID,$total,$itemCount,$barcoded,$barcodedQTY,$nonBarcoded,$nonBarcodedQTY); 
      } 
      else 
      { 
       echo 'not all variables were set!'; 
      } 
      } 
     ?> 

     <div class="row" id="powerwidgets"> 
     <div class="col-md-12 bootstrap-grid"> 
      <form> 
      <button class="btn btn-success" name="commit" style="float:right;margin-right:5em">Commit</button> 
      <button class="btn btn-danger" name="revert" style="float:right;margin-right:14em" onClick="location.href ='index.php'">Cancel</button> 
      </form> 
     </div> 
    </div> 
+0

检查你的'$ _REQUEST'或你的输入 – 2014-09-03 02:55:43

+0

你在var'$ total'和'$ barcode'中得到了什么? – kefy 2014-09-03 02:57:00

+0

在通过静态值发送动态值作为参数测试之前。可能是你$ _REQUEST值设置不正确.. – MH2K9 2014-09-03 02:57:19

回答

0

与您通话的变量提交:

$TID,$total,$itemCount,$barcoded,$barcodedQTY,$nonBarcoded,$nonBarcodedQTY 

可能你还没有证实,他们都有价值。你需要检查每一个与isset() - 你也可以在一个三元运算符。

// isset check before assigning variables 

if (!isset($_REQUEST['TID'], $_REQUEST['total'], ...)) die(); // something wasn't set 

$TID = $_REQUEST['TID']; 
$total = $_REQUEST['total']; 
... 


///////////////////////// 
///////////////////////// 


// ternary operators 

$TID = isset($_REQUEST['TID']) ? $_REQUEST['TID'] : "default value"; // don't forget to sanitize! 
$total = isset($_REQUEST['total']) ? $_REQUEST['total'] : "another default value"; // don't forget to sanitize! 

// if default values are not desired, just set the "default" as "" 
// and check if variables != "" 

尽管没有更多的代码,但这可以帮助你获得更多的帮助。

+0

我们还没有设置变量的代码,这就是我的代码所做的 - 设置和检查以确保它们是不是空白的,和/或设置一个默认,如果他们是空的 – Chad 2014-09-03 03:37:56

+0

我得到你,但肯定无关他们的设置,一旦他们的设置(由vardump确认),他们仍然应该通过罚款,正确吗? ? – user2329830 2014-09-03 03:44:32

+0

不一定;您可能会禁止其中的警告情况下,它会看起来像什么都设置,当事实上不是,这是我的答案的焦点 - 使用'isset()'检查**每个**变量(无论是在一个三元组)。而且你要放弃这个机会。如果我们没有看到更多的代码,我们无法确认。 – Chad 2014-09-03 03:47:46