php在哪里放置生成的HTML代码

时间:2015-12-02 08:10:32

标签: php echo

“回显”生成的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>";

};

4 个答案:

答案 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

上的文档