2015-12-02 63 views
0

什么是“回声”生成的HTML代码的最佳做法?我必须通过循环显示一组数据。在这种情况下,html代码必须在函数apply_task()中生成。代码完成后,它将跳回到index.html。如果$ count = 0,则显示“生成的html代码”。PHP在哪里把生成的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>"; 

};

回答

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; 
    } 
} 
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>"; 

} 
+0

或者只是将其字符串化,然后回显 –

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> 
0

正如扎法尔说这是一件好事,不断呈现和逻辑的关注尽可能分开。我认为,对于任何不是静态的现代网站,处理这个问题的最佳方式是通过模板。这将允许您准备后端的所有数据,将数据传递到页面,然后您可以在视图中处理这些数据。使用你的代码作为一个例子,假设你有一个get_tasks()函数返回你的任务可能看起来像这样与枝条作为模板引擎:

$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