2016-03-30 5 views
0

Ich habe ein PHP-Skript, das verwendet wird, um Informationen für ein jeasyUI Grid zu generieren.Durchführen von Grundrechenarten in PHP-Array

$sql = $db->query(sprintf("SELECT ID, rec_purID, rec_qty, rec_date, p.pur_ID, p.pur_productID, p.pur_supplierID, p.pur_unitPrice, pr.prod_productName, c.cont_fullName FROM receipts inner join purchases p on rec_purID = p.pur_ID inner join products pr on p.pur_productID = pr.prod_productID inner join contacts c on p.pur_supplierID = c.cont_ID")) or SQLError(); 

while($rec = $sql->fetch_assoc()) { 
    $group[] = $rec; 
} 
foreach ($group as $key => $val) { 
    $group[$key]['rec_val'] = $val['rec_qty'] * $val['pur_unitPrice']; 
} 
$smarty->assign('group', $group); 

Wenn ich dieses Array print_r, scheint es, als richtig:

Array ( 
[0] => Array ([ID] => 78 [rec_purID] => 32 [rec_qty] => 1000 [rec_date] => 2016-03-30 [pur_ID] => 32  [pur_productID] => 5 [pur_supplierID] => 41 [pur_unitPrice] => 100.00 [prod_productName] => Acetate Tow [cont_fullName] => DELPACK TRADING (PTY) LTD [rec_val] => 100000) 
[1] => Array ([ID] => 79 [rec_purID] => 31 [rec_qty] => 2207 [rec_date] => 2016-03-30 [pur_ID] => 31 [pur_productID] => 5 [pur_supplierID] => 41 [pur_unitPrice] => 95.50 [prod_productName] => Acetate Tow [cont_fullName] => DELPACK TRADING (PTY) LTD [rec_val] => 210768.5) 
[2] => Array ([ID] => 80 [rec_purID] => 31 [rec_qty] => 3000 [rec_date] => 2016-03-31 [pur_ID] => 31 [pur_productID] => 5 [pur_supplierID] => 41 [pur_unitPrice] => 95.50 [prod_productName] => Acetate Tow [cont_fullName] => DELPACK TRADING (PTY) LTD [rec_val] => 286500) 
) 

Mein Gitter, wird jedoch nie den Wert von "rec_val" sehen. Bitte kann jemand erklären, wo ich falsch gelaufen bin.

<table id="dg" class="easyui-datagrid" style="width:100%;height:400px" 
       url="receipts.php?do=list" 
       title="Received Goods" 
       toolbar="#toolbar" pagination="true" 
       iconCls="icon-edit" showFooter="true" 
       sortName="ID" sortOrder="asc" 
       rownumbers="true" fitColumns="true" singleSelect="true"> 
       <thead> 
        <tr> 
         <th field="ID" width="10" sortable="true">Internal ID</th> 
         <th field="prod_productName" width="80" sortable="true">Product</th> 
         <th field="cont_fullName" width="80" sortable="true">Supplier</th> 
         <th field="rec_qty" width="80" sortable="true">Quantity</th> 
         <th field="pur_unitPrice" width="80">Unit Price</th> 
         <th field="rec_val" width="80">Value</th> 
         <th field="rec_date" width="80" sortable="true">Date Received</th> 

        </tr> 

       </thead> 

     </table> 

Vielen Dank.

+0

Die Schleife sieht gut aus mir. Aber um sicher zu gehen, können Sie das resultierende '$ group' Array immer in eine Protokolldatei schreiben. – arkascha

+0

Sorry arkascha, ich weiß nicht was du meinst? Ich habe die Ausgabe oberhalb des Rasters platziert, wo sie den Inhalt des Arrays anzeigt. – Nic

Antwort

0

Es scheint Klammern in einem der Namen zu geben, von denen ich denke, dass sie nicht korrekt maskiert sind.

DELPACK TRADING (PTY) LTD 

Dies schließt das Array genau vor dem "rec_val".

Ich bin nicht vertraut mit easyui, aber ich erwarte, dass dies das Problem ist, besonders wenn die anderen Werte korrekt angezeigt werden.

+0

Ich habe den Namen dieses Datensatzes bearbeitet und die() entfernt, aber das macht keinen Unterschied. – Nic

+0

Es scheint auch nicht als eine Zeichenfolge erkannt werden, vielleicht brauchen Sie "" um die ganze Sache? wie ich sagte, nicht vertraut mit easyui – Jester

0

am Ende Meine Lösung war die Calc in dem Look-up zu tun:

$row = $db->query(sprintf("SELECT ID, rec_purID, rec_qty, rec_date, p.pur_ID, p.pur_productID, p.pur_supplierID, p.pur_unitPrice, CAST((rec_qty * p.pur_unitPrice) as UNSIGNED) as rec_value, pr.prod_productName, c.cont_fullName FROM receipts inner join purchases p on rec_purID = p.pur_ID inner join products pr on p.pur_productID = pr.prod_productID inner join contacts c on p.pur_supplierID = c.cont_ID")) or SQLError(); 

CAST ((rec_qty * p.pur_unitPrice) als unsigned) als rec_value

+0

sollten Sie Ihre eigene Antwort akzeptieren –

Verwandte Themen