2013-10-30 36 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

相關問題