從Mustache中加載數據。 json靜態文件,我不明白我怎麼能從MySQL數據庫加載數據。小鬍子PHP - 如何從數據庫加載數據?
示例:目前包含在「partials」中的數據是從.json文件中加載的,當然,無論應用程序需要以動態方式從數據庫加載數據(我的情況是mysql)。
我該怎麼辦?
在此先感謝!
Giovanni
從Mustache中加載數據。 json靜態文件,我不明白我怎麼能從MySQL數據庫加載數據。小鬍子PHP - 如何從數據庫加載數據?
示例:目前包含在「partials」中的數據是從.json文件中加載的,當然,無論應用程序需要以動態方式從數據庫加載數據(我的情況是mysql)。
我該怎麼辦?
在此先感謝!
Giovanni
小鬍子PHP只是一個模板引擎。這不是一個準備好進行數據庫綁定的整個應用程序。
您需要編寫一個應用程序來實例化小鬍子模板並提供必要的數據。
$m = new Mustache_Engine;
echo $m->render(
'Hello {{planet}}',
array('planet' => 'World!')
); // "Hello World!"
與planet=> 'World!'
值的陣列是正在傳遞的數據,以小鬍子(在這種情況下)。您可以從數據庫加載該數據,並將其作爲變量傳遞給鬍子。
如前所述,Mustache將幫助模板化,但您必須提供數據才能使用,並獲取需要將PHP連接到MySQL並返回的數據。我猜你正在使用PHP,因爲它的標題...
希望這會幫助你開始。本例中,我使用Sakila example database的actor表中的數據。
的樣本數據:
# actor_id, first_name, last_name, last_update
1, PENELOPE, GUINESS, 2006-02-15 04:34:33
2, NICK, WAHLBERG, 2006-02-15 04:34:33
3, ED, CHASE, 2006-02-15 04:34:33
4, JENNIFER, DAVIS, 2006-02-15 04:34:33
5, JOHNNY, LOLLOBRIGIDA, 2006-02-15 04:34:33
首先,你需要的PHP腳本,它將從MySQL獲取數據。使用json_encode將fetch_all()
方法返回的數組轉換爲JSON字符串。通過指定我們想要得到一個關聯數組(fetch_all(MYSQLI_ASSOC)
),它將具有「列名稱」=>「值」對。 json_encode()
照顧其餘的。
<?php
//test.php
$mysql = new mysqli(DB_HOST, DB_USER, DB_PASSWD, 'sakila');
$query = "SELECT * FROM actor LIMIT 5";
$result = $mysql->query($query);
echo json_encode($result->fetch_all(MYSQLI_ASSOC));
?>
有您需要了解查詢和從數據庫返回的數據時,特別是如果你通過用戶提交的數據作爲查詢的一部分,其他的事情,但這已經超出了問題的範圍,所以我在這裏不用擔心。
PHP腳本輸出:
[
{
"actor_id":"1",
"first_name":"PENELOPE",
"last_name":"GUINESS",
"last_update":"2006-02-15 04:34:33"
},
{
"actor_id":"2",
"first_name":"NICK",
"last_name":"WAHLBERG",
"last_update":"2006-02-15 04:34:33"
},
{
"actor_id":"3",
"first_name":"ED",
"last_name":"CHASE",
"last_update":"2006-02-15 04:34:33"
},
{
"actor_id":"4",
"first_name":"JENNIFER",
"last_name":"DAVIS",
"last_update":"2006-02-15 04:34:33"
},
{
"actor_id":"5",
"first_name":"JOHNNY",
"last_name":"LOLLOBRIGIDA",
"last_update":"2006-02-15 04:34:33"
}
]
然後可以使用$.getJSON()加載test.php
。收到的數據可以通過actorData
變量在我們的示例中的回調函數中訪問。使用$.each方法,我們可以遍歷actorData
(一個JSON對象)中的每個「行」,並告訴Mustache根據之前定義的模板呈現每個「行」。一旦呈現每行被追加到#content
元素。
<!--index.html-->
<script type="text/javascript" src="/recipes/include/js/jquery.js"></script>
<script type="text/javascript" src="/recipes/include/js/mustache.js"></script>
<script>
var template = "<div><span>{{first_name}}</span> <span>{{last_name}}</span></div>";
$(function() {
$.getJSON('test.php',
function (actorData) {
$.each(actorData, function (i, actor) {
var html = Mustache.render(template,
actor);
$('#content').append(html);
});
});
});
</script>
<div id="content"></div>
我在這裏除了鬍子還包括jQuery。js
你可以發佈你曾嘗試過的工作嗎? – Fiver