2016-09-15 8 views
0

なぜ私のPHP関数が空の配列を返すのか理解しようとしています。 ajax呼び出しをトリガーするイベントは、ドロップダウンが変更されたときにPHP関数にヒットしたときです。ほとんどの場合、データベースからデータが返されますが、まったく同じこと(ドロップダウンの変更)にもかかわらず、何が起こる可能性がありますか?基本的には、返される内容を確認するためにconsole.logを使用していますが、時には何もありません。同じ入力で他の時間にもかかわらず、それはうまく動作します。時々ajaxデータベース呼び出しが空の配列を返しますか?

$(document).ready(function() { 

$("#qtrselect").change(function() { 
    qtrselection = $("#qtrselect").val(); 
    createQtrTable(qtrselection); 
    $('#qtrselect').prop('disabled', true); 

    setTimeout(function() { 
    $('#qtrselect').prop('disabled', false); 
}, 1000); 

});  

}); 

function createQtrTable(qtrselection, id) { 

    $.ajax({ 
     type : 'POST', 
     url : 'createnewtable.php', 
     data : {qtrdate: qtrselection, id: id}, 
     success : function(response) 
     { 
     response = jQuery.parseJSON(response); 
      totalcommision = 0; 
      totalpayments = 0; 
      for (i = 0; i < response.length; i++) { 
      totalcommision += parseFloat(response[i][0]); 
      totalpayments += parseFloat(response[i][3]); 

      } 
//I've cut out a bit here as it's not really needed to see the problem. 
     } 
    }); 

} 

createnewtable.php

$qtrdate = $_POST['qtrdate']; 
$id = $_POST['id']; 
$startdate = ''; 
$enddate = ''; 

switch ($qtrdate) { 
     case 0: 
     $startdate = '2016-01-01' ; 
     $enddate = '2018-12-30'; 
     break; 
     case 1: 
     $startdate = '2016-08-01' ; 
     $enddate = '2016-10-31';  
     break; 
     case 2: 
     $startdate = '2016-11-01' ; 
     $enddate = '2017-01-31';   
     break; 
     case 3: 
     $startdate = '2017-02-01' ; 
     $enddate = '2017-04-30'; 
     break; 
     case 4: 
     $startdate = '2017-05-01' ; 
     $enddate = '2017-07-31';  
     break; 

} 

    try 
    { 

    $stmt = $db_con->prepare("SELECT com.commisionAmount, stu.studentName, pay.paymentDate, pay.paymentAmount FROM `commisions` as com INNER JOIN `accounts` as acc ON com.commisionAccount = acc.id INNER JOIN `studentpayments` as pay ON com.paymentID = pay.id INNER JOIN `students` as stu ON pay.paymentStudent = stu.id WHERE pay.paymentDate BETWEEN '$startdate' AND '$enddate' AND acc.id = '$id'"); 

    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
    $results = json_encode($results); 
     echo $results; 

    } 
    catch(PDOException $e){ 
    echo $e->getMessage(); 
    } 

感謝。

答えて

1

javascriptのあなたのid変数は、常に未定義です。この行で

createQtrTable(qtrselection); 

あなたは

createQtrTable(qtrselection, id); 
+0

はありがとうございIDが必要です!まあそれではありませんでした...まあそれはそうでしたが、そうではありませんでした。私は、私のHTMLページ上にいくつか古いコードがあり、関数が2度呼び出されたことに気付きました。 –

関連する問題