2016-09-19 21 views
-1

小さなブラウザベースのキャンバスゲームを構築しています。私はJavascriptとjqueryでうまくやっていますが、私はPHPと特に平凡な経験があり、特にPHPに基づいたWebページを作成しています。PHPを使用してHTMLページを作成する

現在行っていることは、$_GETに何らかのデータベースデータを取得することです。 そのデータに応じて、私は "ユニークな" HTMLページを作りたいと思います。

例:私はcreateGame.phpというページがあり、プレーヤーがゲーム中であるかどうかを確認します。

もしそうなら、私はテーブルを作成して表示したいと思います。

私のPHP:

<?php 
    $gamedata = someObject // basicly the entire gamedata, playerIds, subObjects, a bunch of database data clumped together. 

    if ($gamedata ->playerHasJoined()){ 
     $table = // code here to create a unique table element 
    } 
    ?> 

    <body> 
    <div> 
     <?php echo $table ?> 
    </div> 
    </body> 

今は、基本的に私の質問は:どのように私は "最高" のテーブル要素を構築するのですか? は私が行うのですか:

$table = "<table>"; 
$table .= "<tr><th>Im the Header</th></tr>"; 
$table .= "do this 50 times more"; 

またはマイ$gamedata変数に基づいて要素を作成するための良い方法はありますか? HTMLページを構築するために別の方法を使うべきですか?

あなたはおそらくそれ

<table> 
    <tr> 
     <?php 
     $header = array_keys($_GET); 
     for ($x=0; $x<count($header); $x++) { 
     ?> 

     <th><?=$header[$x]?></th> 

     <?php 
     } 
     ?> 
    </tr> 
    </table> 
+0

'$ gamedata'にあるものを教えてくれると便利かもしれませんので、処理しているデータのアイデアがあります – RiggsFolly

+0

これらの回答を見てみましょうhttp://programmers.stackexchange.com/questions/159529/how- to-structure-template-system-using-plain-php –

+1

あなたの質問はかなり広範で、おそらく意見に基づいています。しかし、私の「2セント」*あなたはHTMLマークアップのためにインクルードを使うことができ、それらが現れるべき場所に挿入される変数だけを使うことができます。しかし、あなたの* "これは50回以上" *は、それが保持するはずのものは不明です。おそらく、そしてそれがdb列のデータを保持することになっているのであれば、そのために 'foreach'を使うことができます。 –

答えて

1

今それはそうです。私が代わりにやるべきことは、すべての定型文(応答に何があっても同じままであるコード)を作成してから、ページ全体に情報を出力することです。

例:あなたは、より複雑な何かをやっている場合は

<body> 
    <?php 
     $array = ['One', 'Two', 'Three']; 
    ?> 
    <ul> 
     <?php 
      foreach($array as $item) { 
       echo "<li>" . $item . "</li>"; 
      } 
     ?> 
    </ul> 
</body> 

私は自分の生活を楽にするために小枝(http://twig.sensiolabs.org/)のようなテンプレートエンジンを使用するためにあなたを助言します。

1

に感謝し、最善の方法は、このようなSmarty、またはTwigように、テンプレートエンジンを使用することです。ここで

は、それが小枝で行われている方法です。

'/path/to/vendor/autoload.php'
require_once '/path/to/vendor/autoload.php'; 

$loader = new Twig_Loader_Filesystem('/path/to/templates'); 
$twig = new Twig_Environment($loader, array(
    'cache' => '/path/to/compilation_cache', 
)); 

$rows = fetch_an_array_from_database(); 

echo $twig->render('index.html', [ 'table_rows' => $rows ]); 

Composerによって生成されたファイルです。

index.html:あなたは右の初めにすべてのhtmlを作成してからちょうどページ全体を印刷するように

<table> 
{% for row in table_rows %} 
<tr> 
    <td>Name</td><td>{{ row.name }}</td> 
    <td>Age</td><td>{{ row.age }}</td> 
    <!-- etc. --> 
</tr> 
{% endfor %} 
</table> 
1

ような何かを行うことができますあなたの

関連する問題