プロジェクトのドリル時間のグラフを作成しています。
現在、DBには、ドリル期間が時間フィールドとして格納されています。時間はMM:SS形式で取得されるため、5分30秒は05:30として表されます。私が選択したグラフ作成パッケージ(jpgraph)では、グラフ化する配列として数値を渡す必要があります。
以下のコードを使用すると、次のようになります。
配列([0] => 00:03:25 [1] => 00:04:23 [2] => 00:03:48 [3] => 00:02:48 [4] => 00:03 :09 [5] => 00:02:25)
00:03:25が文字列としてどのように格納されるかを推測しています(動的タイプを確認する方法はありますか?)。
おそらく必要なのは次のいずれかです。
A)小数分として表されます:
配列([0] => 3.417 [1] => 4.383 [2] => 3.800 [3] => 2.800 [4] => 3.150 [5] => 2.433)
B)整数秒で表されます:
配列([0] => 205 [1] => 267 [2] => 228 [3] => 168 [4] => 189 [5] => 145)
PHP idate関数は適切であるように見えますが、0の配列を返すだけのようです(以下のコードを参照)...
SQLからフェッチするときは、作成した次の関数を使用してフェッチします。
public static function queryDB($aSQLQuery,&$aResult,&$aNumResult){
$aResult = mysql_query($aSQLQuery);
$aNumResult = mysql_num_rows($aResult);
}
//Returns User aIDNum's 6 most recents attempts of aExcerNum
public static function getTimes($aIDNum, $aExcerNum, &$aResult,&$aNumResult){
$query = " SELECT * FROM (
SELECT *
FROM Times
WHERE uid = ".$aIDNum." AND
exid = ".$aExcerNum."
ORDER BY Date DESC
LIMIT 6
) AS T1 ORDER BY Date ASC;";
DBHelper::queryDB($query, $aResult, $aNumResult);
}
public static function processTimeData($aResult, $aNumResult, &$aArray){
for( $i=0; $i<$aNumResult; $i++){
$row = mysql_fetch_array($aResult);
$aArray[$i] = DBHelper::txtP($row, 'Date');
}
$paddingData = 6 - $aNumResult;
for ( $j=0; $j < $paddingData; $j++){
$aArray[ ($j+$aNumResult) ] = 0;
}
}
public static function txtP($aRow, $aString){
return htmlspecialchars(stripslashes($aRow[$aString]));
}
そのように使用されます:
DBHelper::getTimes($userID, $excerciseID, $aResult,$aNumResult);
DBHelper::processTimeData($aResult,$aNumResult,$timeData);
PHP idate()を使用する私の試み:
public static function processTimeData($aResult, $aNumResult, &$aArray){
for( $i=0; $i<$aNumResult; $i++){
$row = mysql_fetch_array($aResult);
//Tried "i" (Minutes) and "s" (seconds)
$aArray[$i] = iDate("i",$aRow['Time']);
//$aArray[$i] = iDate("s",$aRow['Time']);
}
$paddingData = 6 - $aNumResult;
for ( $j=0; $j < $paddingData; $j++){
$aArray[ ($j+$aNumResult) ] = 0;
}
}
結果:
配列([0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0)