0

如何将 PHP 函数的 MySQL 循环转换为 HTML 自定义标记?

我在 PHP 函数中有一个 MySQL 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 安全自定义标记。

如果您需要更多详细信息,请告诉我。

4

1 回答 1

0

Here's a quick and somewhat dirty way to output to html tags. htmlentities is used to escape what comes from the db which helps prevent xss issues. If you want to use textareas then add the tags in place of the table markup.

Ideally you should look at separating markup from the code, take a look at the MVC design pattern for example. I hope this helps you.

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>'; 
}
于 2012-11-22T17:46:48.480 回答