2016-09-19 176 views
-1

我构建了一个基于浏览器的小型帆布游戏。我很好,Javascript和jQuery,但我只有平庸的经验与PHP和特别是创建基于PHP的网页。使用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页面吗?

谢谢

+0

可能会告诉我们'$ gamedata'中的内容是什么,所以我们对你正在处理的数据有一些想法 – RiggsFolly

+0

看看这些答案http://programmers.stackexchange.com/questions/159529/how- to-structure-template-system-using-plain-php –

+1

你的问题相当广泛,可能是基于观点的。但是,对于我的*“2美分”*;你可以使用包含HTML标记,只需使用变量插入他们应该显示的位置。然而,你的“做这50倍”*尚不清楚应该保持什么。你可以使用一个'foreach',可能,如果这应该保存db列的数据。 –

回答

1

现在好像你要创建之初的所有HTML右侧,然后只打印整个页面。我会做的是建立所有样板(无论响应中的内容都保持相同的代码),然后在整个页面中回显内容。

例子:

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

如果你正在做一些更复杂的,我会建议你使用模板引擎就像嫩枝(http://twig.sensiolabs.org/),使生活更方便自己。

1

你可以不喜欢它

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

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

     <?php 
     } 
     ?> 
    </tr> 
    </table> 
1

也许,最好的办法是使用模板引擎,如Smarty,或Twig

这里是它是如何与枝条做:

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 ]); 

其中'/path/to/vendor/autoload.php'Composer生成的文件。

index.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>