“回显”生成的HTML代码的最佳做法是什么?我必须通过循环显示一组数据。在这种情况下,html代码必须在函数apply_task()内生成。代码完成后,它将跳回index.html。如果$ count = 0则显示“生成的html代码”。
它工作正常,但调试它很烦人。我必须从index.html跳转到function.php文件,看看会发生什么,然后跳回index.html来跟踪代码。我觉得这很累!!
你们有同样的问题吗?如果没有,你会如何做更好的结构?
的index.html
<?php
$count = check_user($link, $taskid, $taskerid);
If ($count == 0){
apply_task($link, $taskid);
}else{
echo "you can't add yourself to your own work";
echo "<br>";
};
?>
function.php
function apply_task($link, $task_id){//change name
//echo $session[$id] = $id;
$sql = "select * from wuuk where id = '$task_id';";
$result = mysql_query($sql, $link);
$row = mysql_fetch_array($result, MYSQL_NUM);
echo "<br>";
echo "<h1>Workk information:</h1>";
echo "<table class='apply_table'>";
echo "<tr class='blank_row'><td colspan='2'></td></tr>";
echo "<tr><td>Name:</td><td>$row[2]</td></tr>";
echo "<tr><td>Price:</td><td>$row[4]</td></tr>";
echo "</table>";
echo "<br>";
};
答案 0 :(得分:3)
始终确保在您的应用程序中遵循MVC。将HTML与PHP函数分开。 以下是如何在index.html中呈现html的方法
<?php $row = apply_task($link, $taskid); ?>
<?php if($row !== false) { ?>
<h1>Workk information:</h1>
<table class='apply_table'>
<tr class='blank_row'><td colspan='2'></td></tr>
<tr><td>Name:</td><td>$row[2]</td></tr>
<tr><td>Price:</td><td>$row[4]</td></tr>
</table>
<br>
<?php } else { ?>
<p>you can't add yourself to your own work</p>
<?php } ?>
更新function.php如下:
function apply_task($link, $task_id){
$sql = "select * from wuuk where id = '$task_id';";
$result = mysql_query($sql, $link);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count = check_user($link, $taskid, $taskerid);
if($count == 0) {
return $row;
} else {
return false;
}
}
答案 1 :(得分:0)
用多重回声显示你的内容是件坏事。
如果您想展示各种内容,请使用一个echo
。
function apply_task($link, $task_id) {
//change name
//echo $session[$id] = $id;
$sql = "SELECT
*
FROM
wuuk
WHERE
id = '".$task_id."'";
$result = mysql_query($sql, $link);
$row = mysql_fetch_array($result, MYSQL_NUM);
echo " <br>
<h1>Workk information:</h1>
<table class='apply_table'>
<tr class='blank_row'>
<td colspan='2'></td>
</tr>
<tr>
<td>Name:</td>
<td>".$row[2]."</td>
</tr>
<tr>
<td>Price:</td>
<td>".$row[4]."</td>
</tr>
</table>
<br>";
}
答案 2 :(得分:0)
<table>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
<?php
$query = "select * from table_name";
$res = mysql_query($query);
while($data = mysql_fetch_array($res) ){ ?>
<tr>
<td><?= $data['column_name'] ?></td>
</tr>
<?php }
?>
</table>
答案 3 :(得分:0)
正如扎法尔所说,尽可能将表现和逻辑的关注分开是件好事。我认为对于任何非静态的现代网站,处理此问题的最佳方法是通过模板。这将允许您准备后端的所有数据,将数据传递到页面,然后您可以在视图中处理该数据。使用您的代码作为示例,假设您有一个get_tasks()函数来返回您的任务,可以使用Twig作为模板引擎:
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader);
echo $twig->render('index.html', array('rows' => get_tasks()));
的index.html
{% if rows %}
<br>
<h1>Workk information:</h1>
<table class='apply_table'>
<tr class='blank_row'><td colspan='2'></td></tr>
<tr><td>Name:</td><td>$row[2]</td></tr>
<tr><td>Price:</td><td>$row[4]</td></tr>
</table>
<br>
{% else %}
you can't add yourself to your own work
<br>
{% endif %}
有关模板及其使用原因的详细信息,请参阅PHP the right way
上的文档