【问题标题】:JS OnClick event that will execute block of php codes将执行 php 代码块的 JS OnClick 事件
【发布时间】:2012-06-07 23:37:58
【问题描述】:

有没有一种方法,当我点击一个按钮时,它会执行一堆 php 代码?

例如;

<input type="button" value="Submit Order" class="minibutton" **onClick="executePHP"**>

这个按钮对象就在这里,如果我点击它,这个 php 代码将被执行。

    include("../includes/connect.php");
    include("../includes/generateTimestamp.php");
    include("../includes/knowthename.php");


    $pid=$_POST['submit_id'];
    $pname = $_POST['submit_name'];
    $total = $_POST['submit_total'];
    $quantity = $_POST['submit_qty'];
    $price = $_POST['submit_price'];
    $unit = $_POST['submit_unit'];
    $change = $_POST['submit_sukli'];
    $payment = $_POST['submit_payment'];
    $count = $_POST['count'];
    //explode
    $newpid = explode(";",$pid);
    $newpname = explode(";",$pname);
    $newquantity = explode(";",$quantity);
    $newprice = explode(";",$price);
    $newpriceunit = explode(";",$unit);


    $sql = mysql_query("INSERT INTO sales (sales_date, total_price, emp_id) VALUES ('$timestamp','$total', '$employee_id')");
    mysql_query($sql);
    $id_gen = mysql_insert_id();
    $count = $count - 1;
    while($count = -1){

            $product_id = $newpid[$count];
            $product_name = $newpname[$count];
            $product_quantity = $newquantity[$count];
            $product_price = $newprice[$count];

            $sql2("INSERT INTO sales_details (sales_id,product_id,sales_qty,unit_price,net_price) VALUES ('$id_gen','$newpid[$count]','$product_quantity[$count]',
            '$product_price[$count]','$newpriceunit[$count]')");
            mysql_query($sql2);         
        }
    header('Location: prompt.php?x=5');

    }else{
        echo 'Nothing here!';
        }

我想让 onclick 函数成为一个断路器,如果我点击它,它将解开并继续执行那些代码,

如果我没有办法做到这一点,还有其他办法吗?

函数 isset 将不起作用,因为数据将丢失(数组),因为原始数据来自 $_POST。我希望是 onclick 事件,但我不知道如何。

请各位电脑高手赐教!

【问题讨论】:

标签: php javascript sql


【解决方案1】:

您只能将 JavaScript 附加到浏览器事件。如果要执行 PHP 等服务器端代码,则需要调用服务器。在您的情况下,忘记 javascript,只需将您的表单发布到您的 PHP 页面。

<form method="post" action="file.php">

  <!-- form inputs -->

  <input type="button" value="Submit Order" class="minibutton" />

</form>

然后将您的代码放入file.php

编辑

将所有帖子数据放在隐藏的表单字段中。然后当你点击按钮时,它会重新提交帖子数据。

foreach($_POST as $key => $val) {
    echo '<input type="hidden" name="'.htmlspecialchars($key).'" value="'.htmlspecialchars($val).'" />'."\n";
}

如果你有一个多维帖子数组,只需serialize()它,将其粘贴在 1 个字段中

echo '<input type="hidden" name="data" value="'.htmlspecialchars(serialize($_POST)).'" />'."\n";

然后unserialize()它在另一边。

$_POST = unserialize($_POST['data']);

【讨论】:

  • 就像我说的,我不能做一个 POST 并在 isset 上获取它,因为文件数据也来自另一个 POST 方法。如果我这样做,那么所有数据都将被删除,它是一个数组。
  • 好的,原始数据来自 sales.php 使用 POST。我所在的当前页面是 checkorder.php。我已经显示了来自 sales.php 的所有数据。现在我做了一个按钮,如果该按钮被点击,那么它将执行一个 php 块将数据放入数据库中。
  • 这可能是我正在寻找的答案,这是我第一次遇到这个 serialize() 函数。如果可行,我将阅读更多相关信息并更新您。非常感谢 ddlshack!
【解决方案2】:

使用 jQuery:

$('.minibutton').on('click', function(e) {
    // do some ajax stuff here 
});

示例:http://api.jquery.com/jQuery.ajax/

【讨论】:

  • 这是一个很好的解决方案,但我还没有尝试过 ajax 或 jquery,我会在未来尝试。如果有的话,我正在用基本的 php 和 js 做这个项目。
【解决方案3】:

如果您的 .php 需要来自被点击元素的值,不,您不需要。 如果您的代码本身只是一堆 php,与客户端请求无关,那么您 可以在 js 函数 中回显它并在点击时调用它。

【讨论】:

  • 我想这可以工作,但问题是如何将 php 代码放入 JS 函数中?我可能会因此而出错,但我会尝试看看它是否有效
  • 实际上没有——我的意思是你在服务器上调用你的 php -while- 并通过 .php 回显一个可能生成的 js 代码(js 唯一可以调用而不访问服务器的东西) - 你不能调用.php 在客户端;只是 .php 回显(js/html)的结果,只是在你的函数中回显..
猜你喜欢
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 2020-04-15
  • 1970-01-01
相关资源
最近更新 更多