我有一些问题,我用PHP做了一些本地网站。
我有一个名为函数的文件.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
这是插入.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 本身指向文件插入.php插入.php正在执行另一个称为函数的文件的函数.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']);
对于其中每个变量,您都分配 isset()
的结果,其计算结果将为 TRUE
或 FALSE
。如果要绑定$_GET
输入的实际值,请更改以下语法中的每一行:
$idmt_salesarea = isset($_GET['salesarea']);
自
$idmt_salesarea = isset($_GET['salesarea']) ? $_GET['salesarea'] : '';
但是,此代码实际上不可维护,我还建议使用数组而不是将那么多参数传递给saveAll()
方法。
响应您的更新
如果你发送一个带有type: "POST"
的AJAX请求,你不能通过PHP访问你的输入数据$_GET
超全局的,你必须使用$_POST
。但是,我之前所说的仍然有效,因为您没有正确地将值绑定到变量。
虽然我不完全明白你在说什么,但仍然根据您的描述,问题可能是您使用 ajax 调用发送变量。如果 ajax 调用是异步的,则在使用它时可能无法获取该值。
因此,您可以在 ajax 调用中设置 async:false(这不是一个好方法),或者从 ajax 调用的成功回调处理程序中触发使用该变量的任何事物。
如果您可以分享一段代码来解释您的以下陈述,那将非常有帮助......"我从名为 index.php 的文件中获取输入参数,并使用 AJAX Jquery 传递参数。参数本身被发送并指向名为 insert 的文件.php"