2017-11-25 166 views
0

我想打印所有的sql表並在html表中顯示它們。我是新的PHP,JSON和AJAX。我成功發送用戶名並在php中獲得結果。我認爲在JSON部分或AJAX中存在問題。誰能幫我?用JSON打印sql表

的index.php

<div class="col-lg-6"> 
    <p id="usr" style="color:gray; font-size: 48px;"></p> 
    <script type="text/javascript"> 

     var usr = document.getElementById("dom-target"); 
     var username = usr.textContent; 
     username = username.trim().replace(/ /g, '%20'); 
     document.getElementById("usr").innerHTML = username; 
     var sendtophp = "username="+username; 

     $.ajax({ 
     type: "POST", 
     url: "getcoursetable.php", 
     data: sendtophp, 
     dataType:"json", 
     success: function(response) { 
      console.log(response); 
      var trhtml =''; 
      document.getElementById("demo").innerHTML = response; 
      $.each(response, function (i, item) { 
       trHTML += '<tr><td>' + item.cname + '</td><td>' + item.subject + '</td><td>' + item.course + '</td><td>'+ item.grade + '</td></tr>'; 
      }); 
      $('#results').append(trHTML); 
     } 
     }); 

    </script> 
    <table id="results"></table> 
</div> 

getcoursetable.php

<?php 
    include_once "connection.php"; 

    if(isset($_POST["username"])){ 
    $nick = $_POST["username"]; 

    $prep = "SELECT * FROM `enrolledtable` WHERE nickname='$nick'"; 

    $results = mysqli_query($con, $prep); 

    $jsonData = array(); 
    while ($row = $results->fetch_row()) { 
     $jsonData[] = $row; 
    } 
    echo json_encode($jsonData); 
     } 
?> 

現在,我可以打印數據,但不喜歡的表,這樣

<p id="demo">denemee,CS,300,B,denemee,CS,301,B ,denemee,CS,305,B ,denemee,CS,307,B,denemee,CS,408,A-,denemee,IE,208,B ,denemee,MATH,306,B</p> 
+0

** 1)**不使用mysql_ *函數,這是不安全的證明對於年[參見參考文獻](HTTPS:/ /stackoverflow.com/questions/14151458/difference-between-mysql-mysqli)。使用mysqli_ *或PDO。 ** 2)**然後,要顯示結果,請查找[Datatables](https://datatables.net/) - 您將從一開始就學會如何節省大量時間。 –

+0

在這個項目中安全並不重要,但謝謝。數據表中哪裏出錯? – ozan

+0

安全**總是**很重要... –

回答

0

頂部宣佈這個我解決我的問題。這可以採取在PHP表和創建HTML表。

的index.php

<div class="col-lg-6"> 
    <p id="usr" style="color:gray; font-size: 48px;"></p> 
    <script type="text/javascript"> 

     var usr = document.getElementById("dom-target"); 
     var username = usr.textContent; 
     username = username.trim().replace(/ /g, '%20'); 
     document.getElementById("usr").innerHTML = username; 
     var sendtophp = "username="+username; 

     $.ajax({ 
     type: "POST", 
     url: "getcoursetable.php", 
     data: sendtophp, 
     dataType:"json", 
     success: function(response) { 
      var trhtml =''; 
      $.each(response, function (i, item) { 
       trhtml += '<tr><td>' + item[0] + '</td><td>' + item[1] + '</td><td>'+ item[2] + '</td></tr>'; 
      }); 
      $('.append').append(trhtml); 
     } 
     }); 

    </script> 
    <table id="results"> 

    <tr> 
    <th>Name</th> 
    <th>Subject</th> 
    <th>Course</th> 
    <th>Grade</th> 
    </tr> 
    <tbody class="append"> 

    </tbody> 
    </table> 
</div> 

getcoursetable.php

<?php 
    header('Content-Type: application/json'); 
     include_once "connection.php"; 

     if(isset($_POST["username"])){ 
     $nick = $_POST["username"]; 

     $prep = "SELECT subject,course,grade FROM `enrolledtable` WHERE nickname='$nick'"; 

     $results = mysqli_query($con, $prep); 

     $jsonData = array(); 
     while ($row = $results->fetch_row()) { 
      $jsonData[] = $row; 
     } 
     echo json_encode($jsonData); 
     } 
?> 
0

問題可能圍坐這裏:

 console.log(response); 
     var trhtml =''; 
     document.getElementById("demo").innerHTML = response; 
     $.each(response, function (i, item) { 
      trHTML += '<tr><td>' + item.cname + '</td><td>' + item.subject + '</td><td>' + item.course + '</td><td>'+ item.grade + '</td></tr>'; 
     }); 
     $('#results').append(trHTML); 

首先,JavaScript是區分大小寫的語言:trhtmltrHTML不是相同的變量。第二,如果你的句子「輸出php」意味着你報告了輸出console.log(),那麼response看起來像一個字符串給我,你必須將它解析爲Json。

此外,我不知道字符串denemee的開頭是什麼,但它打破了Json表示法。

+0

複製粘貼導致區分大小寫錯誤,抱歉這個愚蠢的錯誤。 _denemee_是暱稱。 _item.cname_沒有解析你說的?我應該解析爲JSON。 – ozan

+0

不知道關於item.cname,我正在採用'console.log()'打印的響應字符串。很高興你解決了你的問題。這可能對其他人有用,詳細說明你的錯誤和過程;)Bye –

+0

由於cname是sql中的一個列名,沒有人知道它,所以我沒有提到這一點。謝謝你的努力。再見 – ozan

1

你的Ajax功能正在尋找類型的JSON數據,因此你需要在getcoursetable.php

header('Content-Type: application/json'); 
+0

我加了,我在搜索這個有什麼好處。 – ozan

+0

這是絕對沒有必要的...... LOL內容類型json與json編碼在ajax中稱它是荒謬的 – Spizzi