質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1051閲覧

PHP 検索機能について

ganbarukun

総合スコア3

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/10/09 13:21

編集2020/10/09 13:37

#前置き
本のタイトルと番号を管理するプログラムを制作しています。
DBは使用していないため、本のタイトルと番号はプログラムで管理しています。
![イメージ説明
#実現したいこと
このプログラムに検索機能をつけたい。
例:検索フォームに源氏物語と入力し検索ボタンを押す。
➡️ 源氏物語の書籍のみが表示される。
#コード詳細
book.php(本に関するクラス)

PHP

1<?php 2class Book { 3 4 public $number; 5 public $name; 6 7 public function __construct($number, $name) { 8 $this->number = $number; 9 $this->name = $name; 10 } 11} 12?> 13```data.php(本の名前と番号) 14```PHP 15<?php 16require_once('book.php'); 17 18$book01 = new Book(01, '吾輩は猫である'); 19$book02 = new Book(02, 'ハリーポッター'); 20$book03 = new Book(03, '源氏物語'); 21$book04 = new Book(04, 'こころ'); 22 23$books = array($book01, $book02, $book03, $book04); 24?>

index.php(検索画面)

PHP

1<?php require_once('data.php') ?> 2 3<!DOCTYPE html> 4<html> 5<body> 6 7 <form method="POST" action="find.php"> 8 <label>タイトルで検索</label><br/> 9 <input type="text" name="data" /><br /> 10 <input type="submit" value="送信" /> 11 </form> 12 13 <table> 14 <tr> 15 <th>番号</th> 16 <th>タイトル</th> 17 </tr> 18 19 <?php foreach ($books as $book): ?> 20 <tr> 21 <td><?php echo $book->number ?></td> 22 <td><?php echo $book->name ?></td> 23 </tr> 24 <?php endforeach ?> 25 </table> 26</body> 27</html>

find.php(検索後の画面)

PHP

1<?php require_once('data.php') ?> 2 3<!DOCTYPE html> 4<html> 5<body> 6<?php foreach ($books as $book): ?> 7 if ($book->name == $_POST["data"]){ 8 <?php echo $book->name ?> 9 } 10<?php endforeach ?> 11</body> 12</html>

#問題点
find.phpにて検索フォームから送られてきた文字列と本のタイトルが一致した時、本の名前を表示させるコードを記述したが上手く動かない。
分かる方がいましたら、ご教示いただきたく思います。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2020/10/09 13:33

find.phpは存在しますか? 存在していればそちらのソースの記載もお願いします。
ganbarukun

2020/10/09 13:40

find.phpをsearch.phpと誤記していました。 find.phpを記載しましたので、ご確認の程よろしくお願いいたします。
firegrape

2020/10/09 13:47

form部分のhtmlはありますか?
ganbarukun

2020/10/09 13:48

index.phpに記載してあります。 記載内容は下記になります。 <form method="POST" action="find.php"> <label>タイトルで検索</label><br/> <input type="text" name="data" /><br /> <input type="submit" value="送信" /> </form>
guest

回答1

0

ベストアンサー

PHP

1<?php require_once('data.php') ?> 2 3<!DOCTYPE html> 4<html> 5<body> 6<?php foreach ($books as $book): ?> 7 if ($book->name == $_POST["data"]){ 8 <?php echo $book->name ?> 9 } 10<?php endforeach ?> 11</body> 12</html>


こうするか

PHP

1<?php require_once('data.php'); ?> 2 3<!DOCTYPE html> 4<html> 5<body> 6<?php 7foreach($books as $book){ 8 if($book->name == $_POST["data"]){ 9 echo $book->name; 10 } 11} 12?> 13</body> 14</html>

こうですね

PHP

1<?php require_once('data.php') ?> 2 3<!DOCTYPE html> 4<html> 5<body> 6<?php foreach ($books as $book): ?> 7 <?php if ($book->name == $_POST["data"]): ?> 8 <?php echo $book->name ?> 9 <?php endif; ?> 10<?php endforeach ?> 11</body> 12</html>

質問とは関係ない部分ですが
$book01 = new Book(01, '吾輩は猫である');01は八進数と認識されてしまうので
参照 PHPマニュアル
$book01 = new Book('01', '吾輩は猫である');として文字列にしてしまうか
$book01 = new Book(1, '吾輩は猫である');として整数にしておき、表示する時に
sprintf('%02d', $book->number);としてゼロ埋めするなりしましょう。

投稿2020/10/09 13:53

編集2020/10/09 13:57
tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ganbarukun

2020/10/09 14:07

お忙しい中、ご回答ありがとうございます。 質問と関係ない部分までご指摘いただけて助かります。 感謝です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問