0

PHP 関数の MySQL ループを HTML カスタム マークアップ タグに変換するにはどうすればよいですか?

PHP 関数に MySQL While ループがあります。基本的に、コードをブロックするため、必要に応じて、ユーザー エラーなしで再利用できます。

ただし、これはクライアントの実装用です。クライアントが PHP を学ばなくても PHP 関数を追加できるように、このプロセスをできるだけ簡単にしたいのですが、CMS バックエンドを介してテキストエリアに挿入できるようにしたいと考えています。

preg_replaceを使用したカスタム マークアップ コードが既にありますが、関数の内容を変数として設定する必要があります。MySQL の while ループを現在設定している方法では、 echovariableに置き換えた場合に最初の行のみが表示されます。変数なしで preg_replace を使用できるかどうかを知るには、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

これは、HTML タグに出力するための、手早く、やや汚れた方法です。htmlentities は、xss の問題を防ぐのに役立つ db から来るものをエスケープするために使用されます。テキストエリアを使用する場合は、テーブル マークアップの代わりにタグを追加します。

理想的には、コードからマークアップを分離することを検討する必要があります。たとえば、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>'; 
}
于 2012-11-22T17:46:48.480 に答える