2012-11-22 97 views
0

如何將PHP函數的MySQL循環轉換爲HTML自定義標記標記?

我在PHP函數中有一個MySQL While循環。基本上,如果需要的話,可以重新使用塊代碼,而不會出現任何用戶錯誤。PHP While循環功能

雖然這是客戶端實現。我想讓這個過程儘可能簡單,讓客戶端不需要學習PHP就可以添加PHP函數,但也可以通過我的CMS後端插入到textarea中。

我已經有使用preg_replace的自定義標記代碼,但涉及函數的內容被設置爲一個變量。使用我的MySQL while循環當前設置的方式,它只顯示第一行何時/如果我將echo替換爲變量。我對preg_replace知之甚少,不知道是否可以在沒有變量的情況下使用它。

的MySQL While循環/ PHP功能(例如):

function myPageList($var1,$var2) 
{ 
    global $dbc; 

    $query = "SELECT page_url, title, desc FROM pages ORDER BY nav_order ASC"; 
    $query_result = @mysql_query($query, $dbc); 

    while ($row = mysql_fetch_array($query_result)) 
    { 
     $page = $row['page_url']; 
     $title = $row['title']; 
     $desc = $row['desc']; 
     echo "content goes here"; 
    } 
} 

自定義標記(最終結果):

[myPageList] 

我是否添加到我現在有代碼或使用完全不同的東西,最後我需要一個PHP函數的HTML安全自定義標記。

如果您需要更多細節,請告訴我。

+0

所以基本上你試圖實現自己的模板系統? –

+0

Mhmmmz。在函數內部進行數據庫調用對我來說是新的。所以如果我不能讓這個簡單的標記爲客戶端手動添加,我可能只是做一個觸發器,如果​​他們選擇,它會自動添加功能的頁面。 – Tony

回答

0

下面是一個快速和有點髒的方式輸出到html標籤。 htmlentities用於轉義來自db的有助於防止xss問題的內容。 如果您想使用textareas,請添加標籤以代替表格標記。

理想情況下,您應該查看代碼中的分隔標記,例如查看MVC設計模式。我希望這可以幫助你。

function myPageList($var1,$var2) { 
global $dbc; 
$query = "SELECT page_url, title, desc FROM pages ORDER BY nav_order ASC"; 
$query_result = @mysql_query($query, $dbc); 

//begin table 
echo '<table>'; 
    while ($row = mysql_fetch_array($query_result)) { 

    $page = htmlentities($row['page_url']); 
    $title = htmlentities($row['title']); 
    $desc = htmlentities($row['desc']); 

    //produce table row 
    echo '<tr>'; 
    echo ' <td>'.$page.'</td>'; 
    echo ' <td>'.$title.'</td>'; 
    echo ' <td>'.$desc.'</td>'; 
    echo '</tr>'; 

    } 
//end table 
echo '</table>'; 
}