2013-10-30 20 views
0

从Mustache中加载数据。 json静态文件,我不明白我怎么能从MySQL数据库加载数据。小胡子PHP - 如何从数据库加载数据?

示例:目前包含在“partials”中的数据是从.json文件中加载的,当然,无论应用程序需要以动态方式从数据库加载数据(我的情况是mysql)。

我该怎么办?

在此先感谢!

Giovanni

+0

你可以发布你曾尝试过的工作吗? – Fiver

回答

2

小胡子PHP只是一个模板引擎。这不是一个准备好进行数据库绑定的整个应用程序。

您需要编写一个应用程序来实例化小胡子模板并提供必要的数据。

$m = new Mustache_Engine; 
echo $m->render(
     'Hello {{planet}}', 
     array('planet' => 'World!') 
    ); // "Hello World!" 

planet=> 'World!'值的阵列是正在传递的数据,以小胡子(在这种情况下)。您可以从数据库加载该数据,并将其作为变量传递给胡子。

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 

首先,你需要的PHP脚本,它将从MySQL获取数据。使用json_encodefetch_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

相关问题