2012-05-24 100 views
1

我编写了删除MySQL表行的代码。但是当我点击删除图标时,没有任何反应。有人能告诉我我的代码中剩下什么吗?PHP Ajax MySQL表行删除

<?php 
include_once 'include/DatabaseConnector.php'; 
$query1="SELECT * FROM MyTable;"; 
$result1=DatabaseConnector::ExecuteQueryArray($query1); 
?> 

<script type="text/javascript"> 
function deleteRow(tableName,colName,id){ 
    $.ajax({ 
      type: "POST", 
      url: "delete.php", 
      data: "tableName=tableName&colName=colName&id=id", 
      success: function(msg){ 
      alert("Row has been updated: " + msg); 
      } 
    }); 
} 
</script> 

<table id="newspaper-b" border="0" cellspacing="2" cellpadding="2" width = "100%"> 
<thead> 
<tr> 
    <th scope="col">Opr</th> 
    <th scope="col">Flt Num</th> 
    <th scope="col">From</th> 
    <th scope="col"></th> 
</tr> 
</thead> 
<tbody> 
<?php foreach ($result1 as $row):?> 
<tr> 
<td><?php echo $row['airlineName'];?></td> 
<td><?php echo $row['flightNum'];?></td>      <td><?php echo $row['from'];?></td> 
<td> 
    <div title='Delete' onclick='deleteRow(<?php echo 'flightschedule','flightNum',$row['flightNum']; ?>)'> 
<img src='images/delete.png' alt='Delete' /> 
</div>    
</td> 
</tr> 
<?php endforeach;?> 
</tbody> 

delete.php

<?php 
    /* Database connection */ 
    include_once 'include/DatabaseConnector.php'; 
    if(isset($_POST['tableName']) && isset($_POST['colName']) && isset($_POST['id'])){ 
     $tableName = $_POST['tableName']; 
     $colName = $_POST['colName']; 
     $id = $_POST['id']; 
     $sql = 'DELETE FROM '.$tableName.' WHERE '.$colName.' ="'.$id.'"'; 
     mysql_query($sql); 
    } else { 
     echo '0'; 
    } 
?> 
+1

'Ajax.Request'从哪里来?你做到了,还是它是图书馆的一部分?另外,如果你不小心,这样的代码可能允许用户从数据库中的任何表中删除任何数据。 – dpk2442

+1

在你的ajax请求中你没有提到cal类型'post'或者得到...并且在ur脚本尝试$ _GET来获得url params – jugnu

+2

只是一个观察,使用某种限制来执行“delete.php”,因为某人可以删除你的数据库,从外部窗体调用该文件,给它的参数,这就是它..关心 – jcho360

回答

1
  • 你检查你的PHP的日志,看看是否有错误?
  • 什么是Ajax.Request?如果您使用的是原型库,那么它包含在HTML代码中的什么位置?
  • 终于,你确定你的PHP代码被调用? (请在Chrome浏览器中使用,例如网络Developper工具, “请求” 选项卡)
0

你在这一行

<div title='Delete' onclick='deleteRow(<?php echo 'flightschedule','flightNum',$row['flightNum']; ?>)'> 

有一个错误,这将打印

<div title='Delete' onclick='deleteRow(flightscheduleflightNumid)'> 

你有将其更改为

<div title='Delete' onclick='deleteRow("flightschedule","flightNum",<?php $row['flightNum']; ?>)'> 

要工作。

最良好的祝愿

更新:对于上面的代码也行添加

<script src="js/jquery.js" type="text/javascript" ></script> 

或从互联网加载

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script> 

包括jQuery的HTML时的标题。我现在已经测试好了。

+0

谢谢。我改变了这条线,但仍然没有任何作用。也许有更多的东西在我的代码中是错的? –

+0

它更新后为你工作?我可以正常读取值。 –

+0

您是否测试了代码?附:在编写javascript时,您可以很好地使用JavaScript调试器。我使用bugzilla这是一个不错的Firefox插件。 –