0

Mustache ではデータがロードされます。json 静的ファイルを使用していて、MySQL DB からデータをロードする方法がわかりません。

例: 現在、「パーシャル」に含まれるデータは .json ファイルからロードされますが、もちろん、動的な方法でデータベースからデータをロードする必要があるアプリケーション (私の場合は mysql) です。

どのようにできるのか?

前もって感謝します!

ジョバンニ

4

2 に答える 2

2

Mustache PHP は単なるテンプレート エンジンです。これは、すぐに使用できるデータベース バインディングを備えた完全なアプリケーションではありません。

Mustache テンプレートをインスタンス化し、必要なデータを提供するアプリケーションを作成する必要があります。

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

値を持つ配列planet=> 'World!'は、Mustache に渡されるデータです (この場合)。そのデータをデータベースからロードして、変数として mustache に渡すことができます。

于 2013-10-30T12:08:33.037 に答える
1

既に述べたように、Mustache はテンプレート化に役立ちますが、使用するデータを提供する必要があり、そのデータを取得するには、PHP を MySQL に接続して返す必要があります。タイトルにあるのでPHPを使っていると思いますが…

うまくいけば、これはあなたが始めるのに役立ちます. この例では、 Sakila サンプル データベースのアクター テーブルのデータを使用しています。

サンプルデータ:

# 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.phpactorData受信したデータは、変数を介してこの例のコールバック関数にアクセスできます。$.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 を含めています。

于 2013-11-06T21:27:44.537 に答える