내 프로젝트의 드릴 시간 그래프를 작성 중입니다.PHP + MySQL : 숫자로 된 문자열로 된 시간
현재 DB에는 드릴 지속 시간이 시간 필드로 저장됩니다. 시간은 MM : SS 형식으로 검색되므로 5 분 30 초는 05:으로 표현됩니다. 내가 선택한 그래프 패키지 (jpgraph)에는 숫자 값이 그래프로 배열로 전달되어야합니다.
I이 얻을 아래 코드를 사용해 :
어레이 ([0] =>를 0시 3분 25초 [1] => 0시 4분 23초 [2] => 0시 3분 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)
ere 이미 이것을하는 기존의 기능이나 PHP 정규 표현식 함수가 적절하다고 생각하기 때문에 정규 표현식을 사용해야합니다. 그러나 0 (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() :
을 에서 83,210결과
어레이 ([0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0)
는 귀하의 제안에 퍼팅 즉, (("S", "0시 3분 25초") + 날짜 ("I", "0시 3분 25초 날짜 에코 ") * 60 + Date ("G ","00:03:25 ") * 3600;) yields : 61200. 쿼리의 모든 값에 대해서도 시도해 보았고 모든 쿼리에 대해 61200을 반환합니다. 또한 Date ("G", "00:03:25") * 3600은 아무것도 기여하지 않는 것 (17 * 3600) 만 나머지는 모두 0입니다. – Zigu
내 실제 솔루션을 고무시키기 위해 upboated! – Zigu
그래, 미안, 한 가지 중요한 부분을 잊어 버렸어. "strtotime (...)"함수. 코드를 업데이트하겠습니다. – Ragnar