ホームページ  >  記事  >  バックエンド開発  >  dede で SQL で php タグを使用する方法

dede で SQL で php タグを使用する方法

墨辰丷
墨辰丷オリジナル
2018-05-15 16:20:011577ブラウズ

この記事では、dede で SQL で php タグを使用する方法を主に紹介します。興味のある方は参考にしていただければ幸いです。

  {dede:php}  
    //echo 'vvvv';  
    {/dede:php}   
      
{dede:php}  
  
//print_r($refObj->Fields);  
$sql = "select ars.*, art.typedir from dede_archives AS ars   
        LEFT JOIN dede_arctype AS art ON ars.typeid=art.id   
        where typeid=2 ORDER BY weight ASC ";  
$dsql->SetQuery($sql);//将SQL查询语句格式化  
$dsql->Execute();//执行SQL操作  
//通过循环输出执行查询中的结果  
while($row = $dsql->GetArray()){  
    $link   = $refObj->Fields['indexurl'].'/'.$row['typedir'].'/'.$row['id'];  
    $link   = str_replace('{cmspath}', '', $link);  
    $class  = "ahy";  
    if($refObj->Fields['id'] == $row['id']) $class="ahytt";  
  
    echo &#39;<a href="&#39;.$link.&#39;.html" class="&#39;.$class.&#39;">&#39;;  
    echo $row[&#39;title&#39;];  
    echo &#39;</a> &#39;;  
}  
{/dede:php}


{dede:sql} タグの使用法

sql タグは、データベースにクエリを実行して出力します。

1.たとえば、公開された記事の総数を数えてみましょう。このアイデアは、記事 dede_addonarticle の追加テーブル コンテンツの総数を出力することです。

{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"}  
  
[field:name = "nums"/]  
  
{/dede:sql}

2. ~field~ を使用して特別なクエリを実行します。たとえば、フォーラムの多くのメンバーは、現在記事を公開しているメンバーの関連コンテンツを出力する必要がありました。これは、各記事が原因で、以前は sql タグや arclist タグを使用することはできませんでした。内容は異なりますが、ここではデモンストレーションとして 5.5 SQL ステートメントを使用します。

まず、記事テンプレート内の対応する位置に次のタグを追加します

 {dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}  
  [field:id/], DEDE模板   
  {/dede:sql}

これをarticle_article.htmページに配置します。これにより、現在のメンバーによって公開された関連記事が取得されます。ここでの ~writer~ は環境に基づきます。現在の内容の変数 クエリを実行する前に置換を実行します。

SQL ステートメントの条件付きクエリに表示される ~writer~、つまり、$refObj->Fields[$value] の関連コンテンツです

テンプレートで PHP を使用します

多くの人は、DreamWeaver のテンプレートタグはより柔軟になり、PHP を実行する機能が追加されました。DedeCMS V5.5 では、PHP ステートメントを実行できる特別なタグ {dede:php}{/dede:php} が追加されました。

一般的に使用される例をいくつか示します:

1. 最も単純な出力内容:

  {dede:php}  
  $numA = 1;  
  $numB = 2;  
  echo $numA + $numB;  
   
  {/dede:php}

{dede:php} 内の情報を出力したい場合は、print や echo などを直接使用して出力し、 assign it to @me 無効です

この出力の内容は計算結果です:

  3

2. SQL クエリと組み合わせて単一の内容を出力します

 {dede:php}  
  $row = $dsql->GetOne(&#39;select id,typename from dede_arctype where id=2&#39;);  
  print_r($row);  
  {/dede:php}

この出力の内容は

  Array  
  (  
  [id] => 2  
  [typename] => 问答  
  )

3現在のページの変数を取得します

たとえば、ここではシステムの背景 [テンプレート]-[グローバル マーク テスト] を入力し、コードに次の内容を入力します:

 {dede:php}  
  print_r($refObj->Fields);  
   
  {/dede:php}


PHP で特定のフィールド値をデデするには、$refObj->Fields オブジェクトを使用して列を取得します。タイトルを取得 => 環境変数テストを見てみましょう。ここではテストとしてローカル列を使用します。

このようにして、現在のページのローカル変数が取得され、前の SQL ステートメントを組み合わせて、さまざまな列からさまざまな環境 ID を実装できます。

例:

 Array  
  (  
  [typeid] => 0  
  [phpurl] => /plus  
  [indexurl] => /  
  [templeturl] => /templets  
  [memberurl] => /member  
  [specurl] => /special  
  [indexname] => 主页  
  [templetdef] => /templets/default  
  )

これは、現在の列のタイトルを呼び出すためのものです。このラベル関数は {dede:field.typename/} に似ています。

次に、クエリを実行して SQL を処理し、変数を出力します。

このようにして、クエリ結果が基になるテンプレートに表示される関連変数に置き換えられ、出力文字列が生成され、すべての文字列情報が $revalue に保存されます。

最後にこの値を返します return $revalue;

ファイル全体の内容は次のとおりです:

 Array  
  (  
  [id] => 3  
  [reid] => 0  
  [topid] => 0  
  [sortrank] => 1  
  [typename] => 产品  
  [typedir] => {cmspath}/product  
  … …  
  [indexname] => 主页  
  [templetdef] => /templets/default  
  [position] => 主页 > 产品 >  
  [title] => 产品  
  )

次に、article_article.htm テンプレートを変更して、次のタグ コードを追加します。

関連する推奨事項 :

dedecms5.7 最新の SQL エクスプロイト、guestbook.php インジェクションの脆弱性

dedecms SESSION 変数の上書きにより SQL インジェクションが発生する common.inc.php ソリューション

PHPコマンドインジェクション dedecms リモート書き込みファイルリンク例共有

以上がdede で SQL で php タグを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。