0

我有一个数据表,我希望允许用户通过单击表中的链接从中删除行。我希望刷新页面并从表中删除用户选择的行。这是基于调用更改表的数据库的 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

4 回答 4

1

PHP 在服务器端运行,页面更新在客户端(浏览器)上运行。如果要执行 php 代码,要么必须刷新页面,要么需要使用 javascript ajax 调用来实际访问您正在查找的服务器上的“页面”,获取其数据并使其可用到当前页面(进行 ajax 调用)。

如果您只想操作页面并且不需要来自服务器的任何数据,只需使用 javascript。Javascript 用于 dom 操作,而不是 php。

于 2013-09-13T17:23:29.200 回答
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>
于 2013-09-13T17:23:18.070 回答
0

href 属性的结束引号是错误的。它应该是在像这样关闭 php 标签之后。

<td width = '15%'><a href='?remove_now=<?php echo $row?>' name=''>Remove Now</a></td>

是的 .. javascript 和 ajax 可以正常工作,只需单击链接并显示相同的页面。如果您不想header("Location ....")在 my_func 调用之后更改 url

干杯

于 2013-09-13T17:40:27.080 回答
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...';
?>
于 2013-09-13T17:43:43.480 回答