Heim > Backend-Entwicklung > PHP-Tutorial > Beispiel für die Verwendung einer Smarty-Loop-Verschachtelung, Beispiel für „analysis_php'.

Beispiel für die Verwendung einer Smarty-Loop-Verschachtelung, Beispiel für „analysis_php'.

WBOY
Freigeben: 2016-08-04 08:56:54
Original
1043 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Verwendung der intelligenten Schleifenverschachtelung. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

test3.php:

<&#63;php
require "main.php";
$forum = array(
    array("category_id" => 1, "category_name" => "公告区",
      "topic" => array(
        array("topic_id" => 1, "topic_name" => "站务公告")
      )
    ),
    array("category_id" => 2, "category_name" => "文学专区",
      "topic" => array(
        array("topic_id" => 2, "topic_name" => "好书介绍"),
        array("topic_id" => 3, "topic_name" => "奇文共赏")
      )
    ),
    array("category_id" => 3, "category_name" => "电脑专区",
      "topic" => array(
        array("topic_id" => 4, "topic_name" => "硬件周边"),
        array("topic_id" => 5, "topic_name" => "软件讨论")
      )
    )
);
$tpl->assign("forum", $forum);
$tpl->display("test3.htm");
&#63;>

Nach dem Login kopieren

Die Beispiel-Schreibmethode ist wie folgt:

templates/test3.htm:

<html>
<head>
<title>循环嵌套测试</title>
</head>
<body>
<table width="200" border="0" align="center" cellpadding="3" cellspacing="0">
  <{section name=sec1 loop=$forum}>
  <tr>
    <td colspan="2"><{$forum[sec1].category_name}></td>
  </tr>
  <{section name=sec2 loop=$forum[sec1].topic}>
  <tr>
    <td width="25"> </td>
    <td width="164"><{$forum[sec1].topic[sec2].topic_name}></td>
  </tr>
  <{/section}>
  <{/section}>
</table>
</body>
</html>

Nach dem Login kopieren

test2.php:

<&#63;php
require_once('./include/db_fns.php');
include_once("./Smarty/libs/Smarty.class.php"); //包含Smarty类文件
$smarty = new Smarty(); //建立Smarty实例对象$Smarty
$smarty->template_dir = "./templates/dedecms";//设置模板目录
$smarty->compile_dir = "templates/templates_c"; //设置编译目录
$smarty->assign("template_url", "./");
$smarty->assign("$site_url", "http://www.php.net/");
$smarty->assign("$site_name", "文章管理系统");
$smarty->left_delimiter = "<{"; //设置左边界符
$smarty->right_delimiter = "}>"; //设置右边界符
$db_conn = db_connect();
$query = "SELECT cat_ID,cat_name FROM categories ORDER BY cat_ID DESC";
$result = mysql_query($query);
$i = 5;
while(($row = mysql_fetch_array($result)) && $i > 0)
{
        $query2="SELECT ID, post_title, post_date
                FROM post
                WHERE post.post_category =$row[cat_ID]
                AND post_status <> 'unpbulish'
                ORDER BY post_date DESC";
        $result2=mysql_query($query2);
        $i = 5; 
        while(($row2 = mysql_fetch_array($result2)) && $i > 0)
        {
            $row2[post_date]=date('m-d',strtotime($row2[post_date]));
            $category = array("cat_ID"=>"$row[cat_ID]","cat_name"=>"$row[cat_name]",
            "post"=>array("ID"=>"$row2[ID]",
            "post_title"=>"$row2[post_title]" ,
            "post_category"=>"$row2[post_category]" ,
            "post_date"=>"$row2[post_date]"));
            $i--;
        }
}
$smarty->assign("forum", $category);
$smarty->display("test2.htm");
&#63;>

Nach dem Login kopieren

test2.htm:

<html>
  <head>
  <title>嵌套循环测试</title>
  </head>
  <body>
  <table width="200" border="0" align="center" cellpadding="3" cellspacing="0">
  <{section name=sec1 loop=$forum}>
      <tr>
      <td colspan="2"><{$forum[sec1].cat_id}></td>
      </tr>
        <{section name=sec2 loop=$forum[sec1].post}>
          <tr>
          <td width="25"> </td>
          <td width="164"><{$forum[sec1].post[sec2].post_title}></td>
          </tr>
        <{/section}>
  <{/section}>
  </table>
</body>
</html>

Nach dem Login kopieren

test4.php:

<&#63;php
require "main.php";
$my_array = array(
array("value" => "0"),
array("value" => "1"),
array("value" => "2"),
array("value" => "3"),
array("value" => "4"),
array("value" => "5"),
array("value" => "6"),
array("value" => "7"),
array("value" => "8"),
array("value" => "9"));
$tpl->assign("my_array", $my_array);
$tpl->display('test4.htm');
&#63;>

Nach dem Login kopieren

Die Vorlage ist wie folgt geschrieben:

templates/test4.htm:

<html>
<head>
<title>横向重复表格测试</title>
</head>
<body>
<table width="500" border="1" cellspacing="0" cellpadding="3">
<tr>
<{section name=sec1 loop=$my_array}>
<td><{$my_array[sec1].value}></td>
<{if $smarty.section.sec1.rownum is div by 2}>
</tr>
<tr>
<{/if}>
<{/section}>
</tr>
</table>
</body>
</html>

Nach dem Login kopieren

Der entscheidende Punkt ist die Smarty-Variable $smarty.section.sec1.rownum. In der Abschnittsschleife erhält diese Variable den Indexwert beginnend bei 1. Wenn rownum also durch 2 geteilt werden kann, wird < ;tr> bewirkt, dass die Tabelle die Spalten wechselt (Achtung! steht vorne und hinten). Die Zahl 2 ist also die Anzahl der Datensätze, die wir in einer Spalte darstellen möchten. Sie können damit andere unterschiedliche Präsentationsmethoden ändern.

Die

-Operatoren haben folgendes :

eq, ne, neq, gt, lt, lte, le, gte, ge, ist gerade, ist ungerade, ist nicht gerade, ist nicht ungerade, not, mod, div by, even by, odd by

Beispiel:

<!--{if $bigsize ge '650'}-->
   <img src="photo/<!--{$photo}-->" border="0" width="650" class="product_photo" />
<!--{else}-->
    <img src="photo/<!--{$photo}-->" border="0" class="product_photo" />
<!--{/if}-->

Nach dem Login kopieren

Ich habe smarty in der Vergangenheit nicht oft verwendet, aber die Website eines Freundes musste in den letzten zwei Tagen geändert werden. Ich habe es ausprobiert und es ist ziemlich interessant.

Anleitung zur Aufnahme:

Die Funktion der Erfassungsfunktion besteht darin, die von der Vorlage ausgegebenen Daten in einer Variablen zu sammeln, anstatt sie auf der Seite auszugeben

Alle Daten zwischen {capture name="foo"} und {/capture} werden in der Variablen empfangen, die durch das Namensattribut der Funktion ($foo) angegeben wird

Die gesammelten Informationen können in der speziellen Variablen $smarty verwendet werden

Capture.foo erfasst beispielsweise die oben genannten Daten. Wenn die Funktion kein Namensattribut hat, wird „default“ verwendet

Jedes {capture} muss {/capture} entsprechen und die Capture-Funktion kann nicht verschachtelt werden.

Leser, die an weiteren Smarty-bezogenen Inhalten interessiert sind, können sich die speziellen Themen auf dieser Website ansehen: „Grundlegendes Tutorial für den Einstieg in Smarty-Vorlagen“, „Zusammenfassung der PHP-Vorlagentechnologie“, „Zusammenfassung der auf PHP-Datenbanken basierenden Fähigkeiten“. zu PDO“, „Zusammenfassung der Verwendung von PHP-Operationen und -Operatoren“, „Zusammenfassung der Fähigkeiten zur PHP-Netzwerkprogrammierung“, „Einführungs-Tutorial in die grundlegende PHP-Syntax“, „Einführungs-Tutorial in die objektorientierte PHP-Programmierung“, „Zusammenfassung der Verwendung von PHP-Strings (Strings)“, „Einführungs-Tutorial zum PHP-MySQL-Datenbankbetrieb“ und „Zusammenfassung allgemeiner Datenbankbetriebsfähigkeiten in PHP“

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf Smarty-Vorlagen hilfreich sein wird.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage