【问题标题】:PHP echo button onclick functionPHP回显按钮onclick函数
【发布时间】:2013-03-23 00:20:01
【问题描述】:

对于一个小的“网上商店项目”,我用 PHP 和 echo“...”函数创建了一个表。该表显示了一些值,在最后一个单元格中,应该有一个按钮,使用户能够删除相应的行(或者更好地说,购买)。数据保存在数据库中,并在页面加载时读出,然后显示在表格中。

我使用“购买 ID”来找出必须删除哪些行,如果我只实现函数本身,它就可以正常工作。问题是我无法让该功能作为按钮的“onclick”事件工作。

所以,一些代码:

function delete_purchase($purchase_id){
mysql_query("DELETE FROM purchase WHERE purch_id = '$purchase_id'");};

这是删除行的PHP函数,很简单。

$result = mysql_query("SELECT purchase.purch_id, item.name, purchase.amount, purchase.purch_date, delivery.meaning, item.weight FROM purchase, item, delivery WHERE purchase.cust_id='$cust_id' AND delivery.del_id = purchase.delivered AND purchase.item_id = item.item_id");

while($row = mysql_fetch_array($result))
    {
    echo "<tr>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['amount'] . "</td>";
    echo "<td>" . $row['weight'] * $row['amount'] . "</td>";
    echo "<td>" . $row['purch_date'] . "</td>";
    echo "<td>" . $row['meaning'] . "</td>";
    echo "<td><button onclick=\"delete_purchase('" . $row['purch_id'] . "')\">Kill</button></td>";
    echo "</tr>";
    }

这是似乎不起作用的部分。只要有值,我就从数据库中获取变量和其他一些值并将它们插入到我的表中。一切都显示出来了,甚至是按钮;但点击它们不会做任何事情。

网站的源代码看起来不错:

<td><button onclick="delete_purchase('138')">Kill</button></td>

希望一切都清楚,并且你们有一些想法是哪里出了问题。如果您需要了解其他信息,请直接询问,我会看看我能做些什么。

【问题讨论】:

  • PHP 是服务器端的。 JavaScript 在浏览器中运行。

标签: php button onclick html-table echo


【解决方案1】:
onclick="delete_purchase('138')"

调用名为delete_purchase 的Javascript 函数,您的代码中似乎不存在该函数。您只有一个具有该名称的 PHP 函数。

由于所有 PHP 都在服务器端执行,HTML 将在客户端看到代码之前很久就构建好,因此您将永远无法从客户端调用 delete_purchase PHP 函数。

解决此问题的唯一两种方法是: - 创建一个delete_purchase JS 函数,然后通过使用AJAX 调用一个PHP 文件。 - 根本不要调用onclick JS 函数,并使按钮成为常规表单提交,然后您在服务器端捕获以删除购买。但是,这将涉及到完整的页面刷新。

【讨论】:

  • 非常感谢!我很想先使用 JS,但没想到 php 应该也能正常工作……似乎没有。 +1 用于完整描述解决方案。
【解决方案2】:

您的delete_purchase() 函数在服务器端定义,在客户端不可用。您需要向服务器发送请求并发送 id,例如:

?action=delete&id=1

然后你可以在服务器端验证它并调用函数

<?php
if(isset($_GET['action']) && $_GET['action'] == 'delete'){
 //do some staff
}
?>

【讨论】:

  • 等等,等等...这听起来不错,但我不明白你的第一行代码。我想为了获得一些价值,我需要一个表格? /edit 啊,好吧,我想那是 GET 表单之后的 URL 的一部分?
【解决方案3】:

您尝试直接从 HTML(从浏览器)调用 PHP 函数

这是不可能的!

您可以使用 2 种方式调用它:

1) php-script 的 AJAX 调用将删除购买

2) 将浏览器重定向到 php-script,这将删除购买,然后将您重定向回来

【讨论】:

  • 我将使用重定向。以前从未使用过 AJAX,现在还在学习如何正确使用 JS...不过还是感谢您的提示!
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 2015-06-20
  • 2010-10-19
  • 2015-05-14
  • 1970-01-01
  • 2014-07-11
  • 2023-03-15
  • 2013-04-03
相关资源
最近更新 更多