2015-12-02 60 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