希望这只需要一个灵魂的两分钟答案。
PHP网页显示数据库记录的内容。这很好。数据库打开,并为给定的$ refno正确显示记录。
我想添加的一个功能是更新该记录(用“X”替换状态字段中的任何内容),按Ctrl + Shift + Z.
我发现了一些用于侦听Ctrl + Shift + Z键组合的JQuery,这也有效。但是什么不起作用的是更新!
代码(如下)包含警报(仅用于测试目的)。
如果我省略了UPDATE的行,那么警报会触发,所以我可以告诉我到达了那个脚本。 如果我将行包含在UPDATE中,则不会触发警报,也不会更新记录。
我的错误是什么?
<script type="text/javascript">
//CTRL+Shift+z combo
$(document).keydown(function(e){
if( e.which === 90 && e.ctrlKey && e.shiftKey ){
alert('Whhooppie!');
UPDATE TestTable SET status='X' WHERE refno='$refno';
}
});
</script>
非常感谢你选择这个。还没有成功 - 我真的是一个新手,并且在过去的几个小时里一直在努力去理解这一切。失败了。
你肯定知道我想做什么(在给定$ refno的记录上将状态更新为“X”)并且我确信你的编码方向正确。但是我需要使用我的数据库,表和字段名来本地化你的代码,还有一些我不理解的东西。
在你的第一段代码中,我猜我不需要关于单击按钮的行,因为这是由Ctrl + Shift + Z触发的。所以我只用你的&amp; .ajax部分替换了我错误的UPDATE行。我也猜测“炸玉米饼”只是一个例子,但我可能是错的。 (如上所述,所有新东西都适合我。)
所以我的代码现在是:
<script type="text/javascript">
//CTRL+Shift+z combo
$(document).keydown(function(e){
if( e.which === 90 && e.ctrlKey && e.shiftKey ){
$.ajax({
url: "my_php_page.php",
data: {id:1,value:"&refno"},
method: "post"
})
.done(function(data) {
alert(data);
});
}
});
</script>
对于my_php_page.php: 我用实际的数据库名称替换了“test”(如下所示为xxx), 将数据库密码放在引号之间(如下所示为yyy), 用实际的表名替换“my_table”, 并更改了“value =?where table_id =?”如下:
<?php
// print_r($_POST);
$dsn = 'mysql:host=localhost;dbname=xxx';
$user = 'root';
$pass = 'yyy';
$db = new PDO($dsn, $user, $pass);
$id = isset($_POST['id']) ? $_POST['id'] : '';
$value = isset($_POST['value']) ? $_POST['value'] : '';
$success = false;
if (!empty($id) && !empty($value)) {
$query = "update TestTable set status='X' where refno='$value'";
$stmt = $db->prepare($query);
$success = $stmt->execute(array($value,$id));
}
if ($success) echo "it worked!";
else echo "it did not work...!";;
?>
(我需要双倍;;在最后一行吗?)
当按下Ctrl + Shift + Z时,我得不到“它工作了!”也没有“它不起作用......!”,并且记录没有更新。
我确定我必须要靠近,但我哪里出错。
再次,非常感谢你的帮助。
答案 0 :(得分:0)
你用jquery标记它,所以我使用了jquery ......
阅读本页:http://api.jquery.com/jquery.ajax/
并且:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
并且:http://www.explainxkcd.com/wiki/index.php/327:_Exploits_of_a_Mom
<button id="do_stuff">do stuff!</button>
<script>
$("#do_stuff").on('click',function(){
$.ajax({
url: "my_php_page.php",
data: {id:1,value:"tacos"},
method: "post"
})
.done(function(data) {
alert(data);
});
});
</script>
然后在my_php_page.php
<?php
// print_r($_POST);
$dsn = 'mysql:host=localhost;dbname=test';
$user = 'root';
$pass = '';
$db = new PDO($dsn, $user, $pass);
$id = isset($_POST['id']) ? $_POST['id'] : '';
$value = isset($_POST['value']) ? $_POST['value'] : '';
if (!empty($id) && !empty($value)) {
$query = "update my_table set value = ? where table_id = ? ";
$stmt = $db->prepare($query);
// run the query and bind the values
$success = $stmt->execute(array($value,$id));
if ($success) echo "it worked!";
// else echo "it did not work...!";
else echo $stmt->errorInfo()[2];
}
else echo "post params were blank";
?>
这完全适用于表格架构,如...
create table my_table (
table_id int,
value varchar(20)
);
insert into my_table values (1,'one');