使用Jquery将数据保存到数据库

时间:2014-01-02 15:32:32

标签: php jquery mysql

我正在创建一个浏览器RPG游戏。我想允许用户通过更新mysql数据库来保存他们当前的统计数据,而无需重新加载页面......所以我认为jquery可以提供帮助。

用户不会添加自己的统计信息。统计数据是通过用户操作生成的,例如解决挑战。我希望用户能够随时将这些更新的统计信息保存到数据库中。

问题是:

  • 在单击“保存”按钮之前,jQuery正在输出echo "saved..." . $stats . ", " . $stats2;

  • 单击“保存”时,数据库字段未更新。

我想知道为什么这不起作用。当我点击保存时,统计信息字段不应该是0,而应该是显示的统计信息 - 11。还应更新数据库字段。

出于测试目的,我刚刚创建了js变量var stats,当按下箭头键时会更新它。

我调用函数updateHUD()来执行更新HTML的$('#stats').html(stats);

function updateHUD() {  
    $('#stats').html(stats);
}

然后在按下箭头键后调用updateHUD。


HTML

<div class="span12">
    <button onclick="saveData(stats)" name="input" value="">Save Data</button>
        <br /><span id="output"></span><br />
        <ul>
        <li><b>Stats 1:</b>     <span id="stats"></span>    </li>
        </ul>
</div>

的jQuery

//Pass saved data to store in DB
$(document).ready(function() {
    saveData();
});


function saveData() {     
   $.get("php/CRUD.php", {"_input" : $('input[name=input]').val()},
        function(returned_data) {
            $("#output").html(returned_data);
        }
    );
}

PHP

<?php
//store all player data in array and save to/update db
include 'DbConnect.php';
session_start();

$stats = (isset($_GET['_input']) ? ($_GET['_input']) : 0); 

$formvars = array();
array_push($formvars, $stats);      

echo $stats;
echo $_SESSION['username'];


$qry = 'UPDATE users SET stats="'.$stats.'" WHERE username="' . $_SESSION['username'] . '"';    
$mysqli->query($qry) or die(mysqli_error($mysqli));

echo "saved..." . $stats;
mysqli_close($mysqli);
?>

输出

saved...0 //this should be 11
Stats 1: 11

3 个答案:

答案 0 :(得分:4)

你做了

$('input[name=input]').val()

但您已将提交按钮命名为“input”,而不是添加具有此名称的输入框。

但问题仍然不清楚。

您是否希望授予用户使用其所需值更新其统计信息的权限?您应该更新问题以使其更清晰,因为它目前没有多大意义。

答案 1 :(得分:0)

您也可以尝试使用load

//Pass saved data to store in DB
$(document).ready(function() {
    saveData();
});


$.fn.saveData=function(){
   $('#divforload').css('display','none');
   $('#divforload').load("php/CRUD.php?stats="+$('#stats').val(),function(){$('#divforload').fadeIn();});
}
//Just call the function onClick...
//Need an input called 'stats'
});

答案 2 :(得分:0)

首先,您从中获取数据的选择器不正确。您需要更改HTML ...

<button name="input"></button>

到......

<input type="button" name="input" />

或更改您的jQuery选择器...

$('input[name=input]')

选择正确的元素

$('button[name=input]')

其次,您需要确保在调用ajax函数时,按钮的'value =“”'实际上包含数据。

<button onclick="saveData(stats)" name="input" value="[Data Value Goes Here]">Save Data</button>

最后,在单击“保存”按钮之前输出jQuery的原因是因为您在文档加载后立即执行该功能。

$(document).ready(function() {
    saveData();
});

尝试更类似的内容:

<强> HTML

<button name="input" value="[data goes here]">Save Data</button>

JavaScript / jQuery

//Pass saved data to store in DB
$('button[name=input]').on('click', saveData);


function saveData() {     
    $.get("php/CRUD.php", {"_input" : $(this).val()},
        function(returned_data) {
            $("#output").html(returned_data);
        }
    );
}