0

我有一些问题,我使用 php 制作了一些本地网站。

我有一个名为 functions.php 的文件,代码如下:

public function saveAll($idmt_salesarea, $thn_bln, $no_pesanan, $tgl_pesan, $idms_langganan, $idms_kodebarang, $quantity, $harga, $jumlah, $disc_cash, $disc_kredit){
    $message = "Waiting input...";
    try{
        $con = new db();
        $conn = $con->connect();
        $query = "INSERT INTO mt_pesanan(idmt_salesarea,thn_bln,no_pesanan,tgl_pesan,idms_langganan, idms_kodebarang,quantity,harga,jumlah,disc_cash,disc_kredit) VALUES ($idmt_salesarea, '$thn_bln', '$no_pesanan', '$tgl_pesan', $idms_langganan, $idms_kodebarang, '$quantity', $harga, $jumlah, '$disc_cash', '$disc_kredit')";
        $result = mysqli_query($conn, $query) or die(mysqli_error($conn) . "  " . mysqli_errno());
        if($result == 1){
            $message = "Success";
        } else if($result == 0){
            $message = "Failed";
        }
    }catch(Exception $exc){
        echo $exc->getCode();
    }
        $con->disconnect();
        return $message;
}

我从名为 index.php 的文件中获取输入参数,并使用 AJAX Jquery 传递参数。参数本身被发送并指向名为 insert.php 的文件

这是 insert.php 文件:

 <?php

  include_once 'functions.php';

    $idmt_salesarea = isset($_GET['salesarea']);
    $thn_bln = isset($_GET['thn_bln']);
    $no_pesanan = isset($_GET['nopes']);
    $tgl_pesan = isset($_GET['tglpes']);
    $idms_langganan = isset($_GET['idlangganan']);
    $idms_kodebarang = isset($_GET['idbarang']);
    $quantity = isset($_GET['quantity']);
    $harga = isset($_GET['harga']);
    $jumlah = isset($_GET['jumlah']);

    $disc_cash = isset($_GET['disc_cash']);
    $disc_kredit = isset($_GET['disc_kredit']);
    if (($disc_cash == null) || ($disc_kredit == null)) {
        $disc_cash = 0;
        $disc_kredit = 0;
    }

    $insert = new functions();
    $insert->saveAll($idmt_salesarea, $thn_bln, $no_pesanan, $tgl_pesan, $idms_langganan, $idms_kodebarang, $quantity, $harga, $jumlah, $disc_cash, $disc_kredit);

 ?>

但是当我检查错误时,这是​​无法从 insert.php 文件中获取的变量(使用$_GET 语句)。

如何正确获取变量?因为所有参数都设置好了。

我知道这是结合了面向对象的风格和老式的 php 编码。有任何想法吗?

提前致谢。

更新

这是使用 jquery ajax 发送数据的 index.php 文件

    function sendAll(){
            var tgl_pesan = $('#dpc').val();
            var sales_area = $('#sales_area').val();
            var nopes = $('#no_pesanan').val();
            var thnbln = getTahunBulan();
            var id_langganan = $('#kode_langganan').val();
            var id_barang = $('#kode_barang').val();
            var quantity = getQuantity();
            var harga = $('#harga').val();
            var jumlah = $('#jumlah').val();
            var disc_cash = $('#cash').val();
            var disc_kredit = $('#kredit').val();
            var max = $('#max').val();

            $.ajax({
                type:"POST",
                **url:"insert.php",**
                data:{
                  salesarea:sales_area,
                  thn_bln:thnbln,
                  nopes:nopes,
                  tglpes:tgl_pesan,
                  idlangganan:id_langganan,
                  idbarang:id_barang,
                  quantity:quantity,
                  harga:harga,
                  jumlah:jumlah,
                  disc_cash:disc_cash,
                  disc_kredit:disc_kredit,
                  max:max
                },
                success:function(msg){
                   alert("Data Inserted"); 
                },
                error:function(msg){
                   alert("Data Failed to save" + msg); 
                }
            });

ajax 本身指向文件 insert.php,其中 insert.php 正在执行另一个名为 functions.php 的文件中的函数

4

2 回答 2

1

问题在于这段代码:

$idmt_salesarea = isset($_GET['salesarea']);
$thn_bln = isset($_GET['thn_bln']);
$no_pesanan = isset($_GET['nopes']);
$tgl_pesan = isset($_GET['tglpes']);
$idms_langganan = isset($_GET['idlangganan']);
$idms_kodebarang = isset($_GET['idbarang']);
$quantity = isset($_GET['quantity']);
$harga = isset($_GET['harga']);
$jumlah = isset($_GET['jumlah']);

$disc_cash = isset($_GET['disc_cash']);
$disc_kredit = isset($_GET['disc_kredit']);

对于这些变量中的每一个,您将分配 的结果isset(),该结果将评估为TRUEFALSE。如果要绑定$_GET输入的实际值,请从以下语法更改每一行:

$idmt_salesarea = isset($_GET['salesarea']);

$idmt_salesarea = isset($_GET['salesarea']) ? $_GET['salesarea'] : '';

但是,这段代码并不是真正可维护的,我还建议使用数组而不是将那么多参数传递给您的saveAll()方法。

响应您的更新

如果您使用 发送 AJAX 请求type: "POST",则无法通过 PHP$_GET超级全局访问您的输入数据,您必须使用$_POST. 但是,我之前所说的仍然有效,因为您没有正确地将值绑定到变量。

于 2013-10-04T09:46:54.033 回答
0

虽然我没有完全理解你在说什么,但仍然根据你的描述,问题可能是你使用 ajax 调用发送变量。如果 ajax 调用是异步的,那么您在使用它时可能无法获得该值。

因此,您可以在 ajax 调用中设置 async:false (这不是一个好方法),也可以在 ajax 调用的成功回调处理程序中触发任何使用该变量的东西。

如果您可以分享一段解释您的以下语句的代码,那将非常有帮助....“我从名为 index.php 的文件中获取输入参数并使用 AJAX Jquery 传递参数。参数本身已发送并指向名为 insert.php 的文件”

于 2013-10-04T09:49:03.337 回答