我有一个数据表,我想让用户通过单击表中的链接来删除行。我正在寻找页面刷新和用户选择从表中删除的行。这是基于调用改变表的数据库的php函数完成的。到目前为止我所拥有的是
<tr>
<td width = '35%'><?php echo $the_title?></td>
<td width = '20%'><?php echo $val1?></td>
<td width = '10%'><?php echo $val2 ?></td>
<td width = '15%'><a href='?remove_now=<?php echo $row?>' name=''>Remove Now</a></td>
</tr>
<?php
if (isset($_GET['remove_now'])){
$row_to_remove=$_GET['remove_now'];
my_func ($row_to_remove);}
?>
当我点击立即删除链接时,它会更改页面,因为我已经在哈希页面上,我不希望它这样做。它也不会运行my_func。 有什么想法吗?感谢
答案 0 :(得分:1)
PHP在服务器端运行,在客户端(浏览器)上运行页面更新。如果你想执行php代码,要么必须刷新页面,要么你需要使用javascript ajax调用来实际访问你正在寻找的服务器上的“页面”,获取它的数据,并使其可用到当前页面(进行了ajax调用)。
如果您只是想操纵页面而不需要服务器中的任何数据,只需使用javascript即可。 Javascript用于dom操作,而不是php。
答案 1 :(得分:0)
好吧,你不能做你想用php做的事情。你需要使用javascript来做你想做的事。
以下是一些可以实现目标的方法
1)使用javascript来操作已经在页面上呈现的表
或
2)在页面最初加载时使用php渲染没有所需行的表
如果你需要使用php作为行删除过程的一部分,你应该查看ajax。
根据你的评论,尝试这样的事情:
<tr>
<td width = '35%'><?php echo $the_title?></td>
<td width = '20%'><?php echo $val1?></td>
<td width = '10%'><?php echo $val2 ?></td>
<?php
$maxnumrows = 10;
for($i=0;$i<$maxnumrows;$i++){
if ( (!isset($_GET['remove_now'])) || ( (isset($_GET['remove_now'])) && ($_GET['remove_now']!=$i) ) ){
?>
<td width = '15%'><a href='?remove_now='<?php echo $i?> name=''>Remove Now</a> </td>
<?php
}
}
?>
</tr>
答案 2 :(得分:0)
关于href属性的结束报价是错误的。它应该在关闭这样的php标签之后。
<td width = '15%'><a href='?remove_now=<?php echo $row?>' name=''>Remove Now</a></td>
是的.. javascript和ajax只需单击链接并显示相同页面即可。如果您不希望更改网址,请在my_func调用后添加header("Location ....")
干杯
答案 3 :(得分:0)
听起来你正试图从数据库中删除条目,而你只是在想一点倒退。这是一个简化的逻辑部分,可以帮助您了解如何解决这个问题:
// See if they just deleted something
// If so we will delete the data and reload the page
if(isset($_GET['delete_id']))){
// Run the code that deletes the entry from the database
deleteFromDatabase($_GET['delete_id']);
// Now that we've done that just cleanly reload the page
header('Location: '.$_SERVER['PHP_SELF']); // This refers to the current page without the $_GET query string - there must not be any page output before you call this
die(); // Always kill the script after reloading the location header
}
// Here's your normal output (whatever you would normally do for output)
getTableData();
outputTable();
echo '<table>Whatever etc...';
?>