まず第一に、親愛なるマスターの皆さん、PHP コードを Smarty テンプレートに埋め込むべきかどうかについて心配するのはやめましょう。他の人のコードに関数を追加することもあるので、問題をすぐに解決できるのであれば、どんな方法でも大丈夫です。
問題の説明:
テーブルで、foreach を使用して $items から各レコードを読み取り、テーブルの各行に複数のキーワードの対応する内容を表示します。 $items はバックエンド PHP コードによる処理の結果です。今度は、特定のキーワードのコンテンツを表示するときに判断を追加し、該当するコンテンツを読んで、小さなリンクを作成する必要があります。
コードは次のとおりです:
{foreach $items as $item} {strip}。。。。。。。。。。。。。。。。。。。。。。。。。。。。{if $item->kind == "folder"} <td class="name"><p><a href="/Views/Regions/{$item->id}">{$item->name}</a></p></td> {elseif $item->type != "link"} <td class="name"><p><a href="/Regions/Files/Download/{$item->id}">{$item->name}</a></p></td> {else} {$link_content=""} {$this_id=$item->id} {$search_link_query="select * from archive.file where id='$this_id'"} {$con = mysqli_connect("localhost","root","root")} {$result = mysqli_query($con,$search_link_query)} {mysqli_close($con)} {$row=mysqli_fetch_row($result)} {$link_content=$row[8]} <td class="name"><p><a href="{$link_content}" target="_blank">{$item->name}</a></p></td> {/if}................................................... {/strip} {/foreach}
これはPHPで書いてタグに置き換えればデータベースに接続できます。
ループに追加したいコンテンツを追加して、ページ上で直接呼び出してみましょう
ご清聴ありがとうございます。私はまだ他の機能に基づいて新しい関数を追加しています。人々のコード。
上記のようにラベルに置き換える方法がわかりません。次のように変数を渡すことも検討しました:
$smarty->assign("action", $action);
$smarty->display("folders.tpl"); 私の意見では、上記の側面は次のようになります。送信できるのは 1 回だけです。しかし、私のテーブルでは、各レコードが継続的にループされて表示されます。フロントエンドの各ループのキー変数 ID をバックエンドに転送して処理したい場合、どうすればよいでしょうか。
問題は要約すると次のとおりです。smarty テンプレートのフロントエンドはループを使用してコンテンツを表示します。各ループのキー変数をバックエンドに渡し、その後結果をループに返すにはどうすればよいですか。処理?
実際、ロジックを考えるのは難しくありません。マスターの皆さん、コード例はありますか?こちらこそありがとうございます。
バックエンド コードを投稿してマークしてください。そうすれば私が見てみることができます
実際、私は非常に困惑しています。なぜ「1」がこんなにたくさんあるのでしょうか?
このスマートに対応するバックエンド PHP コードは次のとおりです: (コメントを追加するために最善を尽くしました)
<?phpload_module("folders");load_module("files");//该页面的基本功能就是在表格中显示某个区域里的文件或者文件夹,我要增加一个链接link,并且其他一些链接等功能$id = getParamStr("id"); //此处id应该是这表格所属区域的Id,与我的问题相联系的数据库中储存的文件或链接id不一样,这个是我的理解,我也是刚看这代码if ($action == "search") //对这个页面有两个动作,一个是search{ $search = postParamStr("search"); $folders = do_action("folders","search", array($search, $currentUser->allowedRegion)); $files = do_action("files","search", array($search, $currentUser->allowedRegion)); $smarty->assign("folder", NULL); $paths = array("Search Result"); $path = new stdClass(); $path->id = NULL; $path->name = "Search Result"; $smarty->assign("paths", array($path));}else //对这个页面的另一动作是正常显示{ $folders = list_items("folders", $id); $folder = get_item("folders", $id); $files = list_items("files", $id); $smarty->assign("folder",$folder); $paths = $folder->path; if ($currentUser->level == 2) { unset($paths[0]); $paths = array_values($paths); } $smarty->assign("paths", $paths);}$items = array_merge($folders,$files); //获取到显示记录,并把多个记录组合起来$items = sort_items($items); //排序功能$smarty->assign("items", $items);$smarty->assign("action", $action);$smarty->display("folders.tpl");?>
2. Smarty テンプレートのフロントエンド ループがバックエンドの PHP コード処理で値を動的に送信するとどうなるでしょうか?
各ループのキー変数をバックエンドに渡し、処理後に結果をループに返し、ループ内で PHP によって送信された値を表示する必要があります。やったらどうなるでしょうか?
マスター、何か解決策はありますか?コード例を教えていただければ幸いです。そうでないと実行できません。ありがとう。
おばあちゃん、私の中国語は体育の先生に教えてもらいました。
訂正: PHP コード部分の最初のコメントは次のとおりです:
//このページの基本的な機能は、テーブル内の特定の領域にあるファイルまたはフォルダーを表示することです。ファイルとフォルダーの種類に加えて、追加したいものもあります。 1 つのタイプ: link link、およびこのタイプのリンク link に関連する他の関数も追加します
テンプレートにロジック コードを書かず、php で書くようにしてください。
2. Smarty テンプレートのフロントエンド ループがバックエンドの PHP コード処理で値を動的に送信するとどうなるでしょうか?
各ループのキー変数をバックエンドに渡し、処理後に結果をループに返し、ループ内で PHP によって送信された値を表示する必要があります。やったらどうなるでしょうか? インタラクションには、バックエンドへのフォーム送信、または Ajax 値転送の 2 種類しかありません。
訂正:
となりました。
文 {mysqli_close($con)} が「1」を生成する場合
次に、{mysqli_close($con)} を削除します
xu モデレーターがここにいます、ようこそ。
それが私がやったことです、もう本当に「1」はありません。でも、これをしても悪影響はありませんよね?たとえば、データベースへのリンクはどれくらいのメモリを使用しますか?システムへの他の影響はありますか?
しかし、よく考えてみると、システムがリンクを表すために $con を使用するのはせいぜい 1 つの変数だけであり、解放できないため、これは大したことではないはずです。
徐モデレーター、このように削除しても大きな問題はありませんか?
文 {mysqli_close($con)} が「1」を生成する場合
次に、{mysqli_close($con)} を削除します
これは問題ありません
まあ、モデレータの Xu は「質問なし」と言いましたが、それはおそらく同じことです。
結び目。
これは問題ありません