2017-07-26 1 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 

J'ai 2 fonctions: l'une enregistre et l'autre affiche les données. Je suis intéressé par le second, car il ne prend pas la valeur du $ entrepôt variable (de la première fonction) pour l'utiliser exactement dans la requête de la deuxième fonction: $ query = "SELECT * FROM wreceipt OÙ entrepôt = entrepôt $Utiliser la même variable pour deux fonctions PHP

est-ce que quelqu'un a une idée pourquoi cela se produit?

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

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

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

Répondre

0

cela pourrait peut-être une question de portée variable. Je ne vois pas quelle variable saveInvoice() est d'être nourri de votre scrip principal t, mais si vous passez une variable appelée $data qui contient des clés comme code, data et warehouse alors ce même tableau doit être utilisé sur getinvoices() dans votre mainscript au lieu de $invoices = getInvoices($warehouse);

Encore une fois sur la portée variable à l'intérieur des fonctions ...

À l'intérieur de function saveInvoice(array $data){ ... getInvoices($warehouse); est valide à utiliser car $warehouse est une variable déclarée avec une valeur dans la fonction. En dehors de saveInvoice(), la variable $warehouse n'existe pas (sauf si vous l'avez déclarée à la portée globale dans le code non publié dans cette question).

Pour cette raison, je pense que la solution serait (dans votre deuxième bloc affiché de code) pour appeler getInvoices() quelque chose comme ceci: $invoices = getInvoices($data['warehouse']);



De plus, je vous recommande pas mysqli échapper les valeurs que vous reviendrez. Mon conseil serait d'utiliser les instructions préparées mysqli dans saveInvoiceDetail() et toutes les autres fonctions d'interrogation de base de données. Pour finir, examinez de près votre tableau contenant success. Il renverra success=>true même s'il n'y a pas eu de succès. Cette partie nécessite un peu plus de développement.

+0

Merci pour votre réponse, j'ai ajouté "'entrepôt' => $ entrepôt" au retour et ne fonctionnent toujours pas, je ne peux pas obtenir la valeur "entrepôt". Je veux juste cette valeur pour l'afficher dans une autre page avec "echo". Merci d'avance –

+0

@ IrvıngNgr 'Vous devriez écrire quelques "points de contrôle" (échos) dans votre fonction pour voir si la valeur est là où vous attendez qu'elle soit ... comme '$ data [' warehouse ']' et revoir le flux de vos if-déclarations. – mickmackusa

+0

@ IrvıngNgr 'J'ai peut-être mal lu votre question plus tôt. Veuillez montrer vos points de contrôle var_export() sur les tableaux générés dans votre code. Après '$ invoices = getInvoices ($ warehouse);' quoi ressemble 'var_export ($ invoices);'? – mickmackusa