前提・実現したいこと
簡易的な検索画面が作りたい。
データベースから結果を取得して、画面にきれいに表示させたい。
テンプレートエンジンを使ってデータの受け渡しがしたい。
発生している問題・エラーメッセージ
RSSからXMLを取得し、データベースに保存。
条件を入力し、検索結果を表示する画面を作成しています。
条件入力欄を用意したHTMLファイルを作成し、その結果取得したデータを条件欄の下に一覧で表示させたいのですが、
テンプレートにデータを渡した際に、取得したデータのみを繰り返し表示させたいのですが、
用意している条件欄ごと繰り返し表示されてしまいます。
データの取得の仕方や、渡しかた、表示方法等全てに問題があるのかもしれません。
公式ドキュメントや、他の方の事例も参考にしたのですが、私では理解が足らず、詰まってしまいました。
ご存知の方がいましたらご指摘いただけないでしょうか。
該当のソースコード
(テンプレート用ファイル) <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>記事一覧</title> </head> <body> <h1>記事を探す</h1> <form action="../search.php" method="POST"> <ul> <input type="datetime" name="pubDate" placeholder="yyyy/mm/dd"><br> <input type="text" name="url" placeholder="URLでさがす"><br> <input type="text" name="title" placeholder="タイトルでさがす"><br> <input type="submit" value="検索"> </ul> </form> <!-- この部分だけ表示させたい --> <li> {foreach from=$rows item=row} {$row} {/foreach} </li> </body> </html> // 検索用PHPファイル <?php require_once("libs/Smarty.class.php"); require_once('manage.php'); $smarty = new Smarty(); $smarty -> template_dir = "templates/"; $smarty -> compile_dir = "templates_c/"; $pdo = connect(); // 別ファイルでデータベースに接続 $sql = createSQLStatement(); // 別ファイルでSQL文を複数作成 $stmt = $pdo -> prepare($sql); $stmt -> execute(); $count = 0; while($contents[] = $stmt->fetch(PDO::FETCH_ASSOC)) { $count++; } echo $count."件"; foreach($contents as $content) { $smarty -> assign("rows",array('title'=>$content['title'], 'url'=>$content['url'], 'pubDate'=>$content['pubDate'], 'description'=>$content['description']) ); $smarty -> display("display.html"); } // DB切断 $db = null; ?>
試したこと
(PHPファイル)
$smarty -> display("display.html");の部分をforeachの外に出す。
assign(~)の中身を、 "rows", $content(s) とした。
(HTMLファイル)
{foreach from=$rows item=row}
{$row}
{/foreach}
の部分を
{foreach $contents as $content}
{$content['title']}
{/foreach}
に変更(してもダメでした。)
補足情報(FW/ツールのバージョンなど)
開発環境
MacBook
PHP 7.3.9
Smarty 3.1.34-dev
XAMPP 7.1.33-1
https://teratail.com/questions/37708
https://illbenet.jp/view/56
https://www.smarty.net/docsv2/ja/language.function.foreach.tpl
https://qiita.com/sano1202/items/1f49f407f310f2e493ff
http://shain.blog.conextivo.com/2007/06/smarty.html
https://web開発備忘録.総合サービス.com/記事/28/
etc..
これらを見ても解決できませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/23 10:43