1

議事録の取得/計算に大きな問題があります。

シナリオ:

ユーザーが秒 [5 秒、10 秒、25 秒、30 秒、60 秒] を入力できるフォームがあります。テーブルを「Duration」と呼びました

私のデータベースには、 「1:5」 [最後の入力]である「期間」 [分:秒で構成] が既にあります。その後、もう一度「10s」秒を挿入します...

*形式は分:秒です

正しい出力は次のようになります: 1:15

現在の結果: 0:15

私たちが見るように。議事録の計算に問題があります。これから紹介するコードは、秒を引くのに適しています。しかし今、秒を追​​加するように修正する必要があります。

これが私のコードです:

$duration = $_POST["duration"];

if(sizeof($bldg) == 1)
{
$total = sizeof($bldg)-1;
}
else
{
$total = sizeof($bldg)%2;
}

for($i=0; $i<sizeof($bldg);$i++)
{
          $result = mysql_query("SELECT fldTotalDuration FROM tbldata  WHERE  fldNetname = '".$network."' AND fldBldgName = '".$bldg[$i]."'  AND  fldWeek = '".$week."' AND fldMonth = '".$month."' ");

if(mysql_num_rows($result)==0)
{
$totalduration = "";
$seconds = 0;
$minutes = 0;

$computeSecMin = $seconds * $minutes; 
$subSecMin = $computeSecMin + $duration; 
$getMin = floor($subSecMin/60); 
$getSec = $subSecMin%60;
$totalduration = $getMin .":". $getSec; 
}
else{
$row = mysql_fetch_array($result);
$time = explode(":",$row['fldTotalDuration']);
$dur = explode(" ",$duration);

$computeSecMin = 60 * $time[0]; 
$subSecMin = $computeSecMin + $time[1] + $dur[0];
$getMin = floor($subSecMin/60); 
$getSec = $subSecMin%60; 
$totalduration = $getMin .":". $getSec; 
  }     
}

        $query = "INSERT INTO tbldata(fldNetname,fldBldgName,fldPlaylist,fldMonth,fldWeek,fldDuration,fldFrom,fldTo,fldTotalDuration) VALUES ('".$network."','".$bldg[$i]."','".$AdName."','".$month."','".$week."','".$duration."','".$from."','".$to."', '".$totalduration."')";
        mysql_query($query) or die (mysql_error()); 

$duration = は、5 秒、10 秒、25 秒、30 秒、60 秒で構成されるコンボボックス/ドロップダウンである別のフォームから来ています。

現在、秒を追加するのは問題ありませんが、分を追加するのは良くありません。

計算に関する私の問題は、この"$getMin = floor($subSecMin/60); "です。この計算の結果は"0"ですが、この計算は"minutes"のため、"1"である必要があります。

この問題を解決してくれてありがとう。

4

3 に答える 3

0

これがあなたがやろうとしていることです(申し訳ありませんが、変数名を変更しました。あなたのものは明らかではありませんでした):

$time = array(1,5);
$time_plus = '10s';

$time_plus = preg_replace('#\D#', '', $time_plus);
$minutes = $time [0] + (($time_plus + $time[1] >= 60) ? 1 : 0);
$seconds = ($time[1] + $time_plus) % 60;

echo $new_time = $minutes . ":" . $seconds; 

デモ: http://codepad.org/eOBNeHrq

于 2013-08-18T02:34:50.073 に答える
0

時間操作に mysql を使用すると、アプリケーションにとってよりクリーンになる場合があります。AddTime() を使用すると、数秒と数分でやりたいことを実行できます。

SELECT ADDTIME('00:32.50','1:27.50');

次の結果が得られます。

01:59:01.000000

したがって、32.5 秒を 1 分 27.50 秒に追加すると、1 分 59 秒と 0.01 ミリ秒になります。

于 2013-08-18T02:40:23.033 に答える