在html链接上运行php点击并在刷新后保持在同一页面上

时间:2013-09-13 17:20:36

标签: php html

我有一个数据表,我想让用户通过单击表中的链接来删除行。我正在寻找页面刷新和用户选择从表中删除的行。这是基于调用改变表的数据库的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。 有什么想法吗?感谢

4 个答案:

答案 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...';
?>