2014-10-13 2 views
1

Я - Сатья, пытаясь получить данные из базы данных и отображать данные в данных JQuery datatables.Невозможно прочитать свойство NULL в JQuery Datatables

Я включил свой код ниже. Здесь сценарий - это когда я пытаюсь получить sql-данные запроса без предложения where. Я могу отображать данные в datatable, когда я включил там, где он показывает: Cannot read property error of null, я пробовал много, чтобы исправить это, даже я получаю данные с php на страницу javascript через ajax, но он не получает данные в datatables, вот мой код:

Jquery:

$("<table id='example' class='display' cellspacing='0' width='100%' style:'text-align:center;'>" 
    +"<thead>" 
    +"<tr>" 
    +"<th>EID</th>" 
    +"<th>EMICH_EMAIL</th>" 
    +"<th>FIRSTNAME</th>" 
    +"<th>LASTNAME</th>" 
    +"<th>SIGN_IN</th>" 
    +"<th>SIGN_OUT</th>" 
    +"<th>DURATION</th>" 
    +"</tr>" 
    +"</thead>" 
    +"<tbody>").appendTo('#table-section'); 
    $('#example').dataTable({   
     "dom": 'T<"clear">lfrtip', 
     "tableTools": { 
        "sSwfPath":"http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf" 
     },   
     "bProcessing": false, 
     "sAjaxDataProp":'', 
     "sAjaxSource":"fetchdata.php" 
    }); 

PHP:

<?php 
    include 'dataconnection.php'; 

    $user_id=$_POST['eid']; 
    $from=$_POST['startdate']; 
    $to=$_POST['enddate']; 

    $students_data="select st.EID,st.emich_email,firstname,lastname,sign_in,sign_out, " + 
    "SEC_TO_TIME(TIME_TO_SEC(timediff(sign_out,sign_in))) AS totalduration from "+ 
    "student_details st INNER JOIN scans sc ON st.emich_email = sc.emich_email where st.EID ='$user_id'"; 

    $students_data_query=mysqli_query($connection,$students_data); 

if($students_data_query){ 
    while($row = mysqli_fetch_array($students_data_query)){ 

    $output[]=array($row[0],$row[1],$row[2],$row[3],$row[4],$row[5],$row[6]); 
} 
echo json_encode($output); 
//echo $user_id; 
}else 
echo die("The error is:".mysqli_error($connection)); 
?> 
+0

Вы должны относиться значения NULL. В вашем запросе положите функцию 'IFNULL()'. –

+0

Здравствуйте, Fernando У меня нет никаких значений NUll в данных, даже после получения данных из базы данных, я просто предупреждаю их на экране, и я не нашел нулевые значения, но данные не отображаются в datatables. Я так благодарен вам за то, что вы нашли время на мой вопрос. –

+0

Hummm ... Я понимаю .. Какой формат JSON выходит? –

ответ

0

Картик, попробуйте это. Для меня это работает отлично.

<?php 
include 'dataconnection.php'; 

$user_id = $_POST ['eid']; 
$from = $_POST ['startdate']; 
$to = $_POST ['enddate']; 

if (isset ($_POST ['eid'])) { 
    // Descrição se $_POST['truc'] existe 

    /* Table Columns */ 
    $aColumns = array (
      'EID', 
      'EMICH_EMAIL', 
      'FIRSTNAME', 
      'LASTNAME', 
      'SIGN_IN', 
      'SIGN_OUT', 
      'TOTALDURATION' 
    ); 

    $students_data = "select st.EID,st.emich_email,firstname,lastname,sign_in,sign_out, " + 
     "SEC_TO_TIME(TIME_TO_SEC(timediff(sign_out,sign_in))) AS totalduration from " + 
     "student_details st INNER JOIN scans sc ON st.emich_email = sc.emich_email where st.EID ='$user_id'"; 

    $students_data_query = mysqli_query ($connection, $students_data); 

    $output = array (
      "aaData" => array() 
    ); 

    if ($students_data_query) { 
     $row = array(); 
     while ($aRow = mysqli_fetch_array ($students_data_query)) { 
      for($i = 0; $i < count ($aColumns); $i ++) { 
       if ($aColumns [$i] != ' ') { 
        // Charset for accentuation. 
        $row [] = iconv ("iso-8859-1", "utf-8", $aRow [$aColumns [$i]]); 
       } 
      } 
      $output ['aaData'] [] = $row; 
     } 
     echo json_encode ($output); 
    } else 
     echo die ("The error is:" . mysqli_error ($connection)); 
} else { 
    echo die ("The error is: S_POST [eid] IS NULL"); 
} 
?> 

Jquery:

$("<table id='example' class='display' cellspacing='0' width='100%' style:'text-align:center;'>" 
    +"<thead>" 
    +"<tr>" 
    +"<th>EID</th>" 
    +"<th>EMICH_EMAIL</th>" 
    +"<th>FIRSTNAME</th>" 
    +"<th>LASTNAME</th>" 
    +"<th>SIGN_IN</th>" 
    +"<th>SIGN_OUT</th>" 
    +"<th>DURATION</th>" 
    +"</tr>" 
    +"</thead>" 
    +"<tbody>").appendTo('#table-section'); 
    $('#example').dataTable({ 
     "dom": 'T<"clear">lfrtip', 
     "tableTools": { 
        "sSwfPath":"http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf" 
     },   
     "bProcessing": false, 
     "sAjaxDataProp":'', 
     "sAjaxSource":"fetchdata.php", 
     "aoColumns" : [ 
        { 
         "sTitle": "EID", 
         "aTargets": [0] 
        },  
        { 
         "sTitle": "EMICH_EMAIL", 
         "aTargets": [1] 
        }, 
        { 
         "sTitle": "FIRSTNAME", 
         "aTargets": [2] 
        }, 
        { 
         "sTitle": "LASTNAME", 
         "aTargets": [3] 
        }, 
        { 
         "sTitle": "SIGN_IN", 
         "aTargets": [4] 
        }, 
        { 
         "sTitle": "SIGN_OUT", 
         "aTargets": [5] 
        }, 
        { 
         "sTitle": "DURATION", 
         "aTargets": [6] 
        }] 
    }); 
+0

Да, просто дайте мне несколько минут, я дам вам знать Фернандо. –

+0

Или попробуйте использовать этот пример. Это похоже на ваше дело. [POST data - Server Side] (https://datatables.net/examples/server_side/post.html) –

+0

Здравствуйте, Фернандо, мне просто интересно, откуда вы объявили $ aRow в коде, даже я получил предупреждение для этого. –

Смежные вопросы