2016-11-24 105 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