2016-05-13 7 views
-1

これはとても新しいので、これは簡単な質問ですが謝ります。私はPHPで働いています。私はSQL Server 2008からデータを持ち込み、テーブルを作成しています。それぞれの列を合計するのに必要なフッターがあります。テーブルのデータをドリル可能にしたいと思います。データがドリル可能でない場合、フッターはすべてを完全に合計しますが、hrefを追加すると、フッターはその特定の列に対して$ NaNを返します。ここでは正常に動作してフッタ(なしのhref)と私のコードは次のとおりです。 `

$out = array(); 

while($data = odbc_fetch_array($resultsSalesOrdersHeader_SalesOrderHeader)) 
{ 
?> 

<?php 

$row = array(

    $data['SalesOrder'], 

    $data['Customer'], 

    $data['CustomerName'], 

    $data['Branch'], 

    $data['Salesperson'], 

    $data['FinalDate']); 

    array_push($row, "$".number_format(($data['PreDateValue']),2));  

    array_push($row, "$".number_format(($data['Adds']),2)); 

    array_push($row, "$".number_format(($data['Changes']),2)); 

    array_push($row, "$".number_format(($data['Deletes']),2)); 

    array_push($row, "$".number_format(($data['Delta']),2)); 

    array_push($row, "$".number_format(($data['EndingValue']),2)); 


     $out[] = $row; 
} 

echo json_encode(array("aaData" => $out)); 
?>` 

とフッターのコードからの抜粋です:

var iTotalPrice5 = 0; 
        for (var i=0 ; i<aiDisplay.length ; i++) { 
         var y = aaData[ aiDisplay[i] ][11]; 
         var z = y.replace("$",""); 
         iTotalPrice5 += parseFloat(skipComma(z)); 
        } 

        var nCells = nRow.getElementsByTagName('th'); 
        nCells[11].innerHTML = "$"+addCommas(iTotalPrice5.toFixed(2)); 

これは完全に合計をもたらします。ここで私がしようとすると、ハイパーリンクを追加するために使用しているコードのスニペットはあるが、それはフッター壊れる:

array_push($row, "<a href='index.php?p=SOEndingValue&enddate=".$enddate."&startdate=".$startdate."&SalesOrder=".$data['SalesOrder']."' target='_blank'>". 
       "$".number_format(($data['EndingValue']),2)."</a>"); 

を私はハイパーリンクを含めるために行う、と正しくフッターの合計を作成する必要がありますか?

ありがとうございます!

+0

'$ out'はどのように定義されていますか? –

+0

$ out = array(); – Djones

+0

'NaN'は数値ではありません。つまり、parseFloatはskipComma(z)をfloatに変換することはできません。あなたはz上で何が起こるのかを印刷するべきです。 – Unex

答えて

1

ご存じのとおり、配列$rowは、合計してJavaScriptで合計する数値のリストです。 1行のテキストを追加すると、それは数字ではないことに気付くでしょう(NaN)。

JSON配列にフッターを渡す場合は、$out配列のどこかに追加する必要があります。

+0

これをやってどうやったらいいか考えてみてください。私は本当に確実ではない。 – Djones

+0

'$ out [] = $ row;'の後に '$ out [] =" ". "$".number_format(($data['EndingValue']),2)." ";を追加します。 JavaScriptで使用する正確なコードについては、そのJSON配列の使用方法を特定する必要があります。 –

1

forループ上

var n = str.indexOf(">")+1; 
var m = str.indexOf("</a>"); 
z = z.substring(n, m); 

を追加してみてください。

for (var i=0 ; i<aiDisplay.length ; i++) { 
    var y = aaData[ aiDisplay[i] ][11]; 

    var n = str.indexOf(">")+1; 
    var m = str.indexOf("</a>"); 
    var z = y.substring(n, m); 

    z = z.replace("$",""); 
    iTotalPrice5 += parseFloat(skipComma(z)); 
} 

これは<a></a>タグの間の値を抽出します、そして、あなたは計算のためにそれを使用することができます。

+0

Hm。私はこれを追加しようとしましたが、何らかの理由でデータがテーブルに持ち込まれるのを防ぎました。それがどうしていいのか?フッターに$ NaNが返されなかった場合、$ 0が返されます。しかし、間違いなくデータが持ち込まれるはずです。ありがとう、 – Djones

+0

だから私はこれを理解しました。あなたはスーパークローズだった。私はstrをyに変更しなければならなかった。したがって、y.indexOf( ">")+ 1; y.indexOf( "");それは今完璧に動作します。助けてくれてありがとう – Djones

関連する問題