在Mustache中加载数据。 json静态文件,我无法理解如何从MySQL DB加载数据。
示例:当前“部分”中包含的数据是从.json文件加载的,当然,无论应用程序需要以动态方式从数据库加载数据(在我的情况下都是mysql)。
我该怎么办?
提前致谢!
乔瓦尼
答案 0 :(得分:2)
Mustache PHP只是一个模板引擎。它不是一个完整的数据库绑定应用程序。
您需要编写一个实例化Mustache模板并提供必要数据的应用程序。
$m = new Mustache_Engine;
echo $m->render(
'Hello {{planet}}',
array('planet' => 'World!')
); // "Hello World!"
具有planet=> 'World!'
值的数组是传递给Mustache的数据(在本例中)。您可以从数据库加载该数据,并将其作为变量传递给mustache。
答案 1 :(得分:0)
如前所述,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
首先,您需要从MySQL获取数据的php脚本。使用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方法,我们可以循环遍历JSON对象actorData
中的每个“行”,并告诉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>
除了Mustache.js
之外,我还包括jQuery