2013-08-18 2 views
1

У меня есть большая проблема для получения/вычисления минут.Как получить минуты?

Сценарий:

У меня есть форма, которая является пользователь может ввести секунды [5s, 10s, 25s, 30s, 60s]. Я назвал таблицу «Продолжительность»

У меня уже есть «Продолжительность» [сочинить минут: секунд], в моей базе данных, которая «1: 5» [последний вход]. Затем я вставляю снова еще секунд "10s" ...

* формат является минуты: секунды

Правильный вывод должен быть: 1:15

Текущий результат: 0:15

AS мы видим. У меня проблема с вычислением минут. Коды, которые я покажу, хороши для вычитания секунд. Но теперь мне нужно пересмотреть его, добавив секунды.

Вот мой код:

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

Длительность $ = это пришел из другой формы, где ее выпадающий/раскрывающийся, который состоит из 5s, 10s, 25s, 30s, 60s.

В настоящее время для добавления секунд все в порядке, но за минуты не хорошо.

моя проблема для вычисления это "$ getMin = пол ($ subSecMin/60);" .Отель Результатом этого является "0", но это должно быть "1" потому что этот расчет для «минут».

Спасибо, что помогли мне с этой проблемой.

+1

Можете ли вы сделать 'var_dump'' $ time' и '$ dur' и сообщить нам результат? – DanielX2010

+0

@ DanielX2010 .... вот результат для вашего запроса. array (2) {[0] => string (1) "0" [1] => string (1) "5"} array (2) {[0] => string (2) "10" [1] => string (1) "s"} –

ответ

0

Собственно, вы получили то, что вам нужно. Если

$time = [0, 5] 

и

$dur = [10, s] 

затем

$computeSecMin = 60 * $time[0] = 60*0 = 0 

и

$subSecMin = $computeSecMin + $time[1] + $dur[0] = 0 + 5 + 10 = 15 

Таким образом

$getMin = floor($subSecMin/60) = floor(15/60) = floor(0.25) = 0 

Мне кажется, что вы правильно его вычисляете, и результат действительно равен 0 минутам. Проблема заключается в вашей переменной продолжительности. Мне кажется, что ваша программа получает неправильное значение. Если я понимаю, это должно быть [1, 5], а не [0,5]. Проверьте функцию, которая получает это значение.

+0

@ DanielX2010 .... это правильно ... я не знаю, как пересмотреть $ getMin. поэтому он не станет 0 ... –

+0

@PrincessToledo Как вы получаете переменную продолжительности? из базы данных? Из того, что я вижу, вы не понимаете это правильно. Попробуйте опубликовать, как вы его получите. Мы можем найти проблему – DanielX2010

+0

@ DanielX2010 ... Я редактирую свои коды .... Спасибо, что помогли мне .. –

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

+0

@NabilKadimi .. как я могу изменить $ time, а не версию массива? –

0

Вы можете найти с помощью MySQL для времени манипуляции будет для вашего приложения. AddTime() позволяет делать то, что вы хотите, всего за несколько секунд и минут.

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

дает результат:

01: 59: 01,000000

Таким образом, это добавляет 32,5 секунд до 1 минуты 27.50 секунд = 1 минута 59 секунд и 0,01 миллисекунды.