2014-09-03 226 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