2016-03-30 4 views
0

У меня есть скрипт php, который используется для генерации информации для сетки jeasyUI.Выполнение базовой арифметики в php-массиве

$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); 

Если я print_r этот массив, оказывается правильным:

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) 
) 

Моя сетка, однако никогда не будет видеть значение "rec_val". Пожалуйста, объясните, где я ошибся.

<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> 

спасибо.

+0

петля выглядит отлично мне. Но, чтобы быть уверенным, вы всегда можете вывести полученный массив '$ group' в файл журнала. – arkascha

+0

Извините, аркаша, я не знаю, что вы имеете в виду? Я опубликовал вывод над сеткой, где он показывает содержимое массива. – Nic

ответ

0

Кажется, что есть скобки в одном из имен, которые, как я думаю, неправильно экранированы.

DELPACK TRADING (PTY) LTD 

это закрывает массив точно до "rec_val".

Я не знаком с easyui, но я ожидаю, что это проблема, особенно если другие значения отображаются правильно.

+0

Я отредактировал название этой записи и удалил(), но это не имеет никакого значения. – Nic

+0

Он также кажется не признанным нитью, может быть, вам нужно «всего»? как я сказал, не знакомы с easyui – Jester

0

Мое решение в конце было сделать известково в поиска:

$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) как беззнаковое), как rec_value

+0

, вы должны принять свой собственный ответ –