Во-первых, я бы рекомендовал переосмыслить то, как вы построили свой запрос. Почему бы вам просто не использовать метод contains () для извлечения связанных данных?
Во-вторых, вы можете использовать пользовательские поисковые устройства с помощью paginator. Просто создайте его в своем классе Table и верните построенный запрос из него и попросите его использовать его. Подробнее читайте здесь. https://book.cakephp.org/3.0/en/controllers/components/pagination.html
Во-первых, удалите несогласованность имен переменных. НЕ СМЕШАЙТЕ ПЕРЕМЕННОЕ НАИМЕНОВАНИЕ, КАК ВЫ СДЕЛАЛИ, У ВАС ЕСТЬ ОДИН, КОТОРЫЙ НАЧИНАЕТ КАПИТАЛ, И ОДИН, КОТОРЫЙ НЕ БУДЕТ! Я реорганизовал ваш php для всех переменных нижнего регистра и возвратил json - так что он будет дружественным к JavaScript: PHP: Вместо чтобы отправить ваши данные в URL как запрос, укажите в свойстве JS: if(isset($request))
{
$marque = $request->get('marque');
$modele = $request->get('modele');
$finition = $request->get('finition');
$Debut = $request->get('debut');
$Fin =$request ->get('fin');
$TotalAproduire = 100;
$Commande = DB::connection('sqlsrv2')->table('Commande_nadine')
->join('finition','Commande_nadine.CodeFinition','=','finition.CodeFinition')
->where('finition.CodeFinition',"=",$finition)
->where('finition.CodeModele','=',$modele)
->where('Commande_nadine.DATE_DOCUMENT_CMD_ACHAT_FRS',">",$debut)
->whereDate('Commande_nadine.DATE_DOCUMENT_CMD_ACHAT_FRS',"<",$fin)
->whereDate('finition.CodeMarque','=',$marque)
->count('Commande_nadine.RECID_NADIN');
$PourcentageCommandee=($Commande/$TotalAproduire)*1000;
return response()->json($PourcentageCommandee);
}
else
{ //return error response with 500 code
response()->json("failed", 500);
}
data
. Он будет отправлен как данные тела. Пожалуйста, также console.log(data);
перед Ajax, чтобы убедиться, что он имеет правильные значения. Я также предоставил объяснение в коде, это само собой понятно, я надеюсь. var periode=$("#Période").val();
var DebutFin = periode.split(' - ');
var Debut = DebutFin[0];
var Fin = DebutFin[1];
var marque = $("#CodeMarque").val();
var modele = $("#CodeModele").val();
var finition = $("#CodeFinition").val();
const data = {debut, fin, marque, modele, finition};
// check if the output is correct! Illegal operator error means you may have done
// an operation that cannot be done to the datatype. E.g. multiplication, division etc
// on a non number datatype
console.log(data);
$.ajax({
url:"home/Calculer", //remove that ugly URL an pass it as data body instead
method:"GET",
data: data, //data body
cache : false,
datatype: "JSON",
processData: false,
success: function(result)
{
console.log(result);
$("#CommandePasses").data('easyPieChart').update(result);
$('span', $("#CommandePasses")).text(result);
},
error: function(err) {
console.log(err);
}
});
Проблема в том, что вы передаете свои данные в виде параметров строки запроса, но не соблюдаете правильный синтаксис для строк запроса.
Вот почему вы получаете HTTP-код ошибки ответа 500 и сообщение об ошибке, которое гласит InvalidArgumentException
Illegal operator and value combination.
Причина в том, что вы написали это:
url:"home/Calculer?Debut:"+Debut+"&Fin:"+Fin+"&Marque:"+marque+"&Modele:"+modele+"&Finition:"+finition
Но это должно записать так:
url:"home/Calculer?debut="+Debut+"&fin="+Fin+"&marque="+marque+"&modele="+modele+"&finition="+finition
Короче говоря, операнд Проблема в том, что вы передаете свои данные в виде параметров строки запроса, но не соблюдаете правильный синтаксис для строк запроса. Вот почему вы получаете HTTP-код ошибки ответа 500 и сообщение об ошибке, которое гласит [112] Причина в том, что вы написали это: Но это должно записать так: Короче говоря, операнд [113] (который иногда используется для объявления значений объектов в JavaScript) не является допустимым синтаксисом строки запроса. Также обратите внимание, что строки запроса в PHP разрешаются в именованные переменные в массиве [114] super global, который Laravel использует при вызове . Таким образом, правильные правила для формирования вашей строки запроса являются: 1) Откройте строку запроса с помощью оператора 2) За ним следует имя первой переменной 3) Далее следует [117 ] оператор 4) За ним следует значение переменной 5) Любые последующие объявления переменных объявляются в том же формате, что и шаги с 1 по 4, за исключением того, что оператор :
(который иногда используется для объявления значений объектов в JavaScript) не является допустимым синтаксисом строки запроса. Также обратите внимание, что строки запроса в PHP разрешаются в именованные переменные в массиве
super global, который Laravel использует при вызове
$request->get('<variable name>');
?
?
заменяется на амперсанд [ 119] оператор $request->get('<variable name>');
. Таким образом, правильные правила для формирования вашей строки запроса являются:
1) Откройте строку запроса с помощью оператора ?
2) За ним следует имя первой переменной
3) Далее следует [117 ] оператор
4) За ним следует значение переменной
5) Любые последующие объявления переменных объявляются в том же формате, что и шаги с 1 по 4, за исключением того, что оператор ?
заменяется на амперсанд [ 119] оператор