2016-11-24 150 views
0

下面的代碼應在MySQL表中添加100到現有的號碼,如果該按鈕被點擊。如果我點擊按鈕什麼都沒有發生,但是如果我重新加載頁面,該功能會將數字加100。我的代碼有什麼問題?如何使用。點擊功能的jQuery

<?php 
define('DBHOST', 'localhost'); 
define('DBUSER', 'root'); 
define('DBPASS', '123'); 
define('DBNAME', 'dbtest'); 

$conn = mysql_connect(DBHOST,DBUSER,DBPASS); 
$dbcon = mysql_select_db(DBNAME); 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Test</title> 
    <meta charset="utf-8"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/css/materialize.min.css"> 
</head> 
<body> 
<a id="button" class="waves-effect btn deep-orange darken-1">Button 1</a> 
</body> 

<script> 
$("#button").click(function(){ 
    <?php 
    mysql_query("UPDATE users SET test = (test + 100) WHERE userId=1"); 
    ?> 
}); 
</script> 
</html> 
+4

你讓我的日子>< – Endless

+1

它不工作的方式。 Javascript是客戶端代碼,只能在客戶端(瀏覽器連接到服務器)上運行。 PHP是服務器端代碼,只能在服務器上運行,並且客戶端永遠無法看到。 – WEBjuju

+0

@ DelightedD0D - 當OP瞭解到,谷歌搜索的世界和調試將再次意義。這是一個簡單的定位問題 - 簡短而甜蜜的答案,不會混淆鏈接。 – WEBjuju

回答

1

你不能從這樣一個jQuery函數調用PHP代碼。所有的php運行時,頁面加載和它。但是,您可以使用jQuery和Ajax將消息發送到PHP腳本,處理該消息,然後返回響應。該腳本甚至可以在同一個實際的文件就像你有(或在不同的文件完全)像這樣的事:

<?php 
define('DBHOST', 'localhost'); 
define('DBUSER', 'root'); 
define('DBPASS', '123'); 
define('DBNAME', 'dbtest'); 
$conn = mysql_connect(DBHOST,DBUSER,DBPASS); 
$dbcon = mysql_select_db(DBNAME); 

if(isset($_POST['updateTest']){ 
    $val = $_POST['test']; 
    $id + $_POST['userId']; 
    // validate inputs and such.... 
    mysql_query("UPDATE users SET test = (test + 100) WHERE userId=1"); 
    // send success or error response... 
    echo json_encode(['success'=>true]); 
    exit; 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Test</title> 
    <meta charset="utf-8"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/css/materialize.min.css"> 
</head> 
<body> 
<a id="button" class="waves-effect btn deep-orange darken-1">Button 1</a> 
</body> 

<script> 
$("#button").click(function(){ 
    var count = 100; 
    var userId = 1; 
    var dataObject= {updateTest: true, test: 100, userId: 1}; 
    $.ajax({ 
    type: "POST", 
    // url: "page.php", // add this line to send to some page other than the this one 
    data: dataObject, 
    success: function(response) { 
     if(response.success){ 
       alert('test worked'); 
     } 
     else{ 
      alert('there was an error') 
     } 
    }, 
    error: function(xhr, status, error) { 
     console.log(xhr); 
    } 
    });  
}); 
</script> 
</html> 
1

正如前面的海報所提到的,PHP是服務器端和Javascript客戶端,所以實際發生的事情如下。

當頁面返回到您的JavaScript的一塊看起來就像下面的用戶..

你的MySQL聲明這裏已經執行這樣

<script> 
$("#button").click(function(){ 
    // nothing here.. But your MYSQL statement has executed anyway 
}); 
</script> 
它無法與客戶端代碼交互
+0

就像以前的答案,而這是真的,你真的應該提供將完成手頭任務的選項。 – DelightedD0D