将执行php代码块的JS OnClick事件

时间:2012-06-07 23:37:58

标签: php javascript sql

有没有办法当我点击一个按钮时会执行一堆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事件,但我不知道如何。

请赐教我电脑的威客!

3 个答案:

答案 0 :(得分:3)

您只能将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']);

答案 1 :(得分:0)

使用jQuery:

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

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

答案 2 :(得分:0)

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