2017-06-29 9 views
0

私は、MySQLデータベースからJSONファイルを作成する方法解決策を探しています。ここでは、コードは次のとおりです。JSONファイル内JSONファイルの作成

*

<!DOCTYPE html> 
<html> 
<body> 
<p id="container"></p> 
<script> 
var obj, dbParam, xmlhttp, myObj, x, txt = ""; 
obj = { "table":"produkty", "limit":10 }; 
dbParam = JSON.stringify(obj); 
xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     myObj = JSON.parse(this.responseText); 
     for (x in myObj) { 
      txt += myObj[x].name + "<br>"; 
     } 
     document.getElementById("demo").innerHTML = txt; 
    } <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
}; 
xmlhttp.open("POST", "test4.php", true); 
xmlhttp.setRequestHeader("Content-type", "text/xml"); 
xmlhttp.send("x=" + dbParam); 
</script> 
<?php 
header("Content-Type: application/json; charset=UTF-8"); 
$obj = json_decode($_POST["x"], false); 

$conn = new mysqli("localhost", "root", "", "projekt_1"); 
$result = $conn->query("SELECT produkt FROM ".$obj->table." LIMIT ".$obj->limit); 
$outp = array(); 
$outp = $result->fetch_all(MYSQLI_ASSOC); 
echo json_encode($outp); 
?> 
</body> 
</html> 

*

私は情報をrecievied:

<br /> 
<b>Notice</b>: Undefined index: x in <b>C:\xampp\htdocs\projekt_1\test4.php</b> on line <b>31</b><br /> 
<br /> 
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\projekt_1\test4.php</b> on line <b>34</b><br /> 
<br /> 
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\projekt_1\test4.php</b> on line <b>34</b><br /> 
<br /> 
<b>Fatal error</b>: Call to a member function fetch_all() on boolean in <b>C:\xampp\htdocs\projekt_1\test4.php</b> on line <b>36</b><br /> 

ないところ間違いがあることを確認してください。私はかなり新しい人ですので、私の質問は明らかです。

ありがとうございます。

私はこのフォーラムで新しい人です。私の質問への回答は前にチェックしておいたはずですが、コードに以下のような提案を入れて、それをApacheの白い画面で実行すると、私はデータベースから最初の10行を探しました。私は、白い画面が表示されるときに何ができるかを確認しました。 1つのファイルtest4.phpに含まれる全コード:あなたのPOST要求を開始する前にも

<?php 
ini_set('display_errors', 1); error_reporting(~0); 
?> 

<!DOCTYPE html> 

<html lang="pl"> 
<head> 
    <meta charset="utf-8" /> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
    <title>Test file</title> 
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 

</head> 

<body> 

<p id="container"></p> 

<script> 
var obj, dbParam, xmlhttp, myObj, x, txt = ""; 
obj = { "table":"produkty", "limit":10 }; 
dbParam = JSON.stringify(obj); 
xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     myObj = JSON.parse(this.responseText); 
     for (x in myObj) { 
      txt += myObj[x].name + "<br>"; 
     } 
     document.getElementById("container").innerHTML = txt; 
    } 
}; 
xmlhttp.open("POST", "test4.php", true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlhttp.send("x=" + dbParam); 

</script> 

<?php 

if (count($_POST)) { 
    header("Content-Type: application/json; charset=UTF-8"); 
    $obj = json_decode($_POST["x"], false); 

    $conn = new mysqli("localhost", "root", "", "projekt_1"); 
    $result = $conn->query("SELECT produkt FROM ".$obj->table." LIMIT ".$obj->limit); 
    $outp = array(); 
    $outp = $result->fetch_all(MYSQLI_ASSOC); 
    echo json_encode($outp); 
} 
?> 


</body> 
</html> 
+5

これらのエラーメッセージのすべてがそうそれらを_research_行ってください、すでに多くの時間を議論してきました。 – CBroe

+2

これは1つのファイルですか?あなたは、jsonだけを出力し、他には何も出力しない、あなたのajax呼び出しのための別個のスクリプトを用意する必要があります。 – jeroen

+0

もtest4.phpを表示してください。 – YvesLeBorg

答えて

1

は、あなたが$_POST配列にアクセスしようとしています。だからあなたは小切手を持っている必要があります。このようにして

<?php 
if (count($_POST)) { 
    header("Content-Type: application/json; charset=UTF-8"); 
    $obj = json_decode($_POST["x"], false); 

    $conn = new mysqli("localhost", "root", "", "projekt_1"); 
    $result = $conn->query("SELECT produkt FROM ".$obj->table." LIMIT ".$obj->limit); 
    $outp = array(); 
    $outp = $result->fetch_all(MYSQLI_ASSOC); 
    echo json_encode($outp); 
} 
?> 
</body> 

headerや他のものは、それがグローバル$_POSTアレイ内のコンテンツを発見した場合にのみ実行されます。これは、ページがPOSTメソッドでリクエストされたことを意味します。

関連する問題