2017-07-26 21 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つの関数を持っています:1つはレジスタ、もう1つはデータを示します。私は2番目の関数に興味があります。$倉庫(最初の関数の)変数が正確にここで2番目の関数のクエリで使用されていないためです:$ query = "SELECT * FROM wreceipt倉庫= $倉庫2つのPHP関数に同じ変数を使用する

は誰もが、これはなぜ起こるか任意のアイデアを持っていますWHERE?

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()見ることができませんメインスクリプトからフィードトン、しかし、あなたは、この同じ配列は、あなたのmainscript代わりの機能の内部変数のスコープについて再び$invoices = getInvoices($warehouse);

getinvoices()で使用する必要がありcodedata、およびwarehouseのようなキーが含まれてい$dataという変数を渡している場合...

function saveInvoice(array $data){ ... getInvoices($warehouse);の内部は、$warehouseが関数内に値を持つ宣言された変数であるため、使用すると有効です。

saveInvoice()の外に変数$warehouseは存在しません(あなたがこの質問に投稿されていないコードのグローバルスコープに宣言していない限り)。このため

は、私は解決策は、このようなgetInvoices()何かを呼び出すために(コードの2番目の投稿をブロック単位)になると思います。また$invoices = getInvoices($data['warehouse']);



を、私はあなたがmysqliのないことをお勧めしますあなたが返すエスケープ値。私の助言はsaveInvoiceDetail()と他のすべてのデータベースクエリ機能でmysqli準備文を使用することです。

最後に、successを含む配列をよく見てください。成功しなかった場合でもsuccess=>trueを返します。この部分はさらに開発が必要です。

+0

返信いただきありがとうございます。返品に「 'warehouse' => $ warehouse」を追加しましたが、依然として仕事はできません。「倉庫」の値は取得できません。私はちょうど "エコー"と他のページでそれを表示するためのこの値が欲しいです。あらかじめありがとうございます –

+0

@IrvıngNgr 'あなたの関数全体にいくつかの "チェックポイント"(エコー)を書き、 '$ data [' warehouse ']'のような値が期待通りにあるかどうかを確認し、あなたのif文。 – mickmackusa

+0

@IrvıngNgr 'あなたの質問を誤って読んでいる可能性があります。あなたのコード全体で、生成された配列のvar_export()チェックポイントを表示してください。 '$ invoices = getInvoices($ warehouse);の後に' var_export($ invoices);とは何ですか? – mickmackusa

関連する問題