2017-07-26 73 views
0
<?php require_once 'config.php'; 

// FUNCTION 1 BEGINS 
     function saveInvoice(array $data){   if(!empty($data)){    global $con;   $count = 0;    if(isset($data['data'])){ 
         foreach ($data['data'] as $value) { 
          if(!empty($value['length']))$count++; 
         }   }   if($count == 0)throw new Exception("Please add atleast one item to warehouse form."); 
     if(!empty($data)){ 
         $codigo1 = mysqli_real_escape_string($con, trim($data['codigo1'])); 
         $shipper = mysqli_real_escape_string($con, trim($data['shipper'])); 
         $codigo2 = mysqli_real_escape_string($con, trim($data['codigo2'])); 
         $consignee = mysqli_real_escape_string($con, trim($data['consignee'])); 
         $carrier = mysqli_real_escape_string($con, trim($data['carrier'])); 
         $supplier = mysqli_real_escape_string($con, trim($data['supplier'])); 
         $tracking = mysqli_real_escape_string($con, trim($data['tracking'])); 
         $vlb_total = mysqli_real_escape_string($con, trim($data['airtotal'])); 
         $ft3_total = mysqli_real_escape_string($con, trim($data['oceantotal'])); 
         $weight_total = mysqli_real_escape_string($con, trim($data['totalweight'])); 
         $method = mysqli_real_escape_string($con, trim($data['method'])); 
         $user = mysqli_real_escape_string($con, trim($data['user'])); 
         $office = mysqli_real_escape_string($con, trim($data['office'])); 
         $notes = mysqli_real_escape_string($con, trim($data['notes'])); 
         $total_air_usd = mysqli_real_escape_string($con, trim($data['totalairusd'])); 
         $total_ocean_usd = mysqli_real_escape_string($con, trim($data['totaloceanusd'])); 

         $warehouse = mysqli_real_escape_string($con, trim($data['warehouse'])); 

         if(empty($warehouse)){ 
          $uuid = uniqid(); 
         $query = "INSERT INTO wreceipt (`warehouse`, `codigo1`, `shipper`, `codigo2`, `consignee`, `carrier`, `supplier`, `tracking`, `vlb_total`, `ft3_total`, `weight_total`, `method`, `user`, `office`, `notes`, `total_air_usd`, `total_ocean_usd`, `created`, `uuid`) VALUES ('', '$codigo1', '$shipper', '$codigo2', '$consignee', '$carrier', '$supplier', '$tracking', '$vlb_total', '$ft3_total', '$weight_total', '$method', '$user', '$office', '$notes', '$total_air_usd', '$total_ocean_usd', NOW() + INTERVAL 1 HOUR, '$uuid')"; 
         }else{ 
          throw new Exception("Please check, some of the required fields missing"); 
         } 
         if(!mysqli_query($con, $query)){ 
          throw new Exception( mysqli_error($con)); 
         }else{ 
         if(empty($warehouse))$warehouse = mysqli_insert_id($con); 
         } 

         if(isset($data['data']) && !empty($data['data'])){ 
          saveInvoiceDetail($data['data'], $warehouse); 
         } 
         return [ 
          'success' => true, 
          'uuid' => $uuid, 
          'message' => 'Warehouse Saved Successfully.', 
          'warehouse' => $warehouse 
         ];   }else{ 
         throw new Exception("Please check, some of the required fields missing");    }  } else{    throw new Exception("Please check, some of the required fields missing");   } } 
// FUNCTION 1 ENDS 

// FUNCTION 2 BEGINS  
     function saveInvoiceDetail(array $wreceipt_items, $warehouse = ''){  global $con; 

      foreach ($wreceipt_items as $wreceipt_item){ 
       $desc = mysqli_real_escape_string($con, trim($wreceipt_item['desc'])); 
       $length = mysqli_real_escape_string($con, trim($wreceipt_item['length'])); 
       $width = mysqli_real_escape_string($con, trim($wreceipt_item['width'])); 
       $height = mysqli_real_escape_string($con, trim($wreceipt_item['height'])); 
       $weight = mysqli_real_escape_string($con, trim($wreceipt_item['weight'])); 
       $quantity = mysqli_real_escape_string($con, trim($wreceipt_item['quantity'])); 
       $volumeweight = mysqli_real_escape_string($con, trim($wreceipt_item['volumeweight'])); 
       $volume = mysqli_real_escape_string($con, trim($wreceipt_item['volume'])); 
       $weightrow = mysqli_real_escape_string($con, trim($wreceipt_item['weightrow'])); 

       $query = "INSERT INTO wreceipt_items (`id`, `warehouse`, `desc`, `length`, `width`, `height`, `weight`, `quantity`, `volumeweight`, `volume`, `weightrow`) 
         VALUES (NULL, '$warehouse', '$desc', '$length', '$width', '$height', '$weight', '$quantity', '$volumeweight', '$volume', '$weightrow')"; 
       mysqli_query($con, $query); 
      } } 

     function getInvoices($warehouse){ 
       global $con; 
       $data = []; 
       $query = "SELECT * FROM wreceipt WHERE warehouse = '$warehouse'"; 
       if ($result = mysqli_query($con, $query)){ 
        while($row = mysqli_fetch_assoc($result)) { 
         array_push($data, $row); 
        } 
       } return $data; } ?> 
// FUNCTION 2 ENDS 

我有2個函數:一個寄存器和另一個顯示數據。我對第二個函數感興趣,因爲它沒有把第二個函數的查詢中使用它的變量(第一個函數的值)存儲在$ warehouse $ query =「SELECT * FROM wreceipt WHERE倉庫= $倉庫對兩個PHP函數使用相同的變量

有沒有人有任何想法,爲什麼出現這種情況?

PD: I use this for show the (function 2) data: 

<?php 
$invoices = getInvoices($warehouse); 

if(!empty($invoices)){ 
foreach ($invoices as $value) { 
$value['warehouse']; 
} 
} 
?> 

回答

0

這或許是可變範圍的問題。我看不出saveInvoice()是什麼變量爲從你的主要腳本餵食噸,但如果你是通過一個名爲$data變量包含了像codedatawarehouse那麼這同一個陣列應該getinvoices()在mainscript而不是$invoices = getInvoices($warehouse);

再約的函數中的變量範圍內使用鑰匙...

function saveInvoice(array $data){的內部... getInvoices($warehouse);可以使用,因爲$warehouse是一個聲明變量,其值在函數內部。

saveInvoice()之外的變量$warehouse不存在(除非您已在未發佈到此問題的代碼中將其聲明爲全局範圍)。

出於這個原因,我認爲解決辦法是(在代碼的第二貼塊)調用getInvoices()像這樣:$invoices = getInvoices($data['warehouse']);



此外,我建議你不要的mysqli您將返回的轉義值。我的建議是在saveInvoiceDetail()和所有其他數據庫查詢功能中使用mysqli準備的語句。最後,仔細看看包含success的數組。即使沒有成功,它也會返回success=>true。這部分需要更多的開發。

+0

感謝您的回覆,我添加了「倉庫」=> $倉庫「到回報,仍然沒有工作,我不能得到」倉庫「的價值。我只是希望這個值在其他頁面顯示「echo」。在此先感謝 –

+0

@IrvıngNgr'您應該在整個函數中編寫一些「檢查點」(回聲),以查看該值是否與您期望的相同......比如'$ data ['warehouse']'並重新檢查你的if語句。 – mickmackusa

+0

@IrvıngNgr'我以前可能會誤解你的問題。請在您的代碼中的生成陣列上顯示您的var_export()檢查點。在'$ invoices = getInvoices($ warehouse);'什麼是'var_export($ invoices);'? – mickmackusa

相關問題