だからここに問題があります、私はindex.php
(すべてのphpコードを含む)そして私はindex.tpl
すべてのhtmlのものを含むファイルを持っています。しかし、今はajaxを使用しているので、データを出力する別のphpファイル(data.php)があります。問題は、data.phpファイルでテンプレートを選択する方法がわからないことです。私が知っているのは、index.php
を表示する関数がありますがtpl ($Smarty->display($filename);
、テンプレートを(再び)表示したくないということです。data.php
ファイル表示する必要のあるいくつかの変数を割り当てたいだけですindex.tpl
編集:
わかりました。これは長くなります。まず、何を達成したいのかを説明する必要があります。index.phpとdata.phpがあります。index.php:
<?php
include("../include/config.php");
include("../include/functions/import.php");
$thebaseurl = $config['baseurl'];
$query ="SELECT name FROM contacts";
$results = $conn->execute($query);
$select-names = $results->getrows();
STemplate::assign('select-names',$select-names);
$templateselect = "index.tpl";
STemplate::display($templateselect);
?>
index.tplは少し長いので、重要な部分を投稿します。
xmlhttp.open("get","data.php?q="+str,true);
これはAJAXコードです。このコードはGETメソッドの+str値をdata.phpファイルに送信し、data.phpファイルはその値を使用して、データベースからデータを取得します。
data.php:
$q=$_GET["q"];
$sql="SELECT * FROM contacts WHERE name = '$q'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$name = $row['name'];
}
STemplate::assign('name',$name);
$templateselect = "index.tpl";
STemplate::display($templateselect); //the second display
?>
私はここでそのクラスをsmarty関数のSTemplateに使用しますが、コードは何ですか。
今何が問題なのかご理解いただければ幸いです。テンプレートファイルを再度表示せずに、変数をテンプレートに割り当てるにはどうすればよいですか。このようにして、$ name変数はindex.tpl(名前はdbから表示されます)でアクセスできますが、data.phpのdispaly関数のため、コンテンツ全体が再び表示されます。