2014-02-20 68 views
0

我正在使用JavaScript來啓動和停止計時器(秒錶)。 我想要的是,當用戶按下停止按鈕時,數據(那時的時間)將被存儲在我的MySQL數據庫中。那可能嗎?如果是的話,我需要添加哪些代碼? (我只是一個用PHP啓動,如果有人可以增加一個小的解釋,那麼這將是巨大的,所以我可以從中學到)從stopwatch存儲時間在MySQL數據庫中的Javascript

下面的腳本是我工作的JavaScript代碼:

var clsStopwatch = function() { 

var startAt = 0; 
var lapTime = 0; 

var now = function() { 
    return (new Date()).getTime(); 
}; 

this.start = function() { 
    startAt = startAt ? startAt : now(); 
}; 

this.stop = function() { 
    lapTime = startAt ? lapTime + now() - startAt : lapTime; 
    startAt = 0; 
}; 

this.time = function() { 
    return lapTime + (startAt ? now() - startAt : 0); 
}; 
}; 

var x = new clsStopwatch(); 
var $time; 
var clocktimer; 

function pad(num, size) { 
var s = "0000" + num; 
return s.substr(s.length - size); 
} 

function formatTime(time) { 
var h = m = s = ms = 0; 
var newTime = ''; 

m = Math.floor(time/(60 * 1000)); 
time = time % (60 * 1000); 
s = Math.floor(time/1000); 
ms = time % 1000; 

newTime = pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 2); 
return newTime; 
} 

function show() { 
$time = document.getElementById('time'); 
update(); 
} 

function update() { 
$time.innerHTML = formatTime(x.time()); 
} 

function start() { 
clocktimer = setInterval("update()", 1); 
x.start(); 
} 

function stop() { 
x.stop(); 
clearInterval(clocktimer); 
} 

的接下來是我用於將數據存儲在數據庫中的PHP代碼,它位於單獨的頁面上。

define('DB_NAME', 'dbname'); 
define('DB_USER', 'user'); 
define('DB_PASSWORD', 'pass'); 
define('DB_HOST', 'host'); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { die('could not connect: ' . mysql_error()); } 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { die('can not use ' . DB_NAME . ': ' . mysql_error()); } 

$sql="INSERT INTO game (name, company, email, time) VALUES 
    ('".$_POST['name']."','".$_POST['company']."','".$_POST['email']."','".$_POST['time']."')"; 

if (!mysql_query($sql)) { die('Error: ' . mysql_error()); } 

mysql_close(); 

和我的HTML提交表單:

<body onload="show();"> 

<form action="highscore.php" method="post"/> 

name:<br/> 
<input type="text" name="name"/><br/> 

company:<br/> 
<input type="text" name="company"/><br/> 

email:<br/> 
<input type="text" name="email"/><br/> 

Time: <span id="time"></span><br/> 
<!--<input type="text" name-"time">--> 
<input type="button" value="start" onclick="start();"> 
<input type="submit" value="stop" onclick="stop();"> 
<br/><br/> 

</form> 

</body> 

可能的解決方案可以在一個隱藏的輸入字段後的數據而我依然在努力獲得一個工作。

回答

1

試試這個:

function stop() { 
x.stop(); 
document.getElementById('counter').value = formatTime(x.time()); 
clearInterval(clocktimer); 
} 

在您的形式:

<input type="hidden" value="" id="counter" name="counter" /> 
+0

感謝羅伯特一些嚴重的安全問題!它離我們更近了一步,但目前它只是在數據庫中存儲「1」,無論我等待多久。這是一個JavaScript的東西嗎? –

+1

讓我編輯答案xD – Hackerman

+0

答覆已更新。 – Hackerman

0

使用庫MySQLi而不是MySQL的,因爲有與MySQL