php mysqlを使用したデータベース内検索について教えてください。
現在、phpを独学しており、一から学生登録システムを作成しておりますが、複数の検索条件を入力して該当した生徒を表示する方法がうまく行きません。
現在はこちらhttps://noumenon-th.net/programming/2016/02/15/pdo_search/のページを参考にコードを作成し、名前のみで検索が可能となっております。
今後、名前以外でもコース開始日やキャンパスでも検索できるようにしたいと思っております。
下記が検索フォームとなります。
php
1 <form action="searchtest.php" method="post"> 2 3<div class="studentinfo"> 4 <p>顧客番号: <input type="text" name="id"> 5 <p>担当者: <input type="text" name="Staff_Name"></p> 6 <p>ステータス: <input type="text" name="Status"></p> 7</div> 8 9<div class="Schoolinfo"> 10<p> 名前: <input type="text" name="Name"></p> 11<p> キャンパス: <input type="text" name="Campus"></p> 12<p> コース開始日: <input type="date" name="Start_Date"></p> 13</div> 14 15 <div> 16 <input type="submit" value="検索する"> 17 </form>
こちらのファイル名がsearchtest.phpとなります。
php
1header("Content-type: text/html; charset=utf-8"); 2 3if(empty($_POST)) { 4 header("Location: registeredenroll.php"); 5 exit(); 6} 7 8if(count($errors) === 0){ 9 10 $dsn = 'mysql:host=localhost;dbname=TMI;charset=utf8'; 11 $user = 'root'; 12 $password = 'root'; 13 14 try{ 15 $dbh = new PDO($dsn, $user, $password); 16 17 $statement = $dbh->prepare("SELECT * FROM studentinfo WHERE Name LIKE (:Name) "); 18 19 if($statement){ 20 $Name = $_POST['Name']; 21 $like_Name = "%".$Name."%"; 22 //プレースホルダへ実際の値を設定する 23 $statement->bindValue(':Name', $like_Name, PDO::PARAM_STR); 24 25 if($statement->execute()){ 26 //レコード件数取得 27 $row_count = $statement->rowCount(); 28 29 while($row = $statement->fetch()){ 30 $rows[] = $row; 31 } 32 33 }else{ 34 $errors['error'] = "検索失敗しました。"; 35 } 36 37 //データベース接続切断 38 $dbh = null; 39 } 40 41 }catch (PDOException $e){ 42 print('Error:'.$e->getMessage()); 43 $errors['error'] = "データベース接続失敗しました。"; 44 } 45}
下記のURLを参考に作業してみましたが、うまく行きませんでした。
https://teratail.com/questions/78730
https://teratail.com/questions/170399
https://kinocolog.com/where11/
できれば今あるコードをベースに作成できればと思いますが、フォームのPostもしくはgetにて検索された結果を次のページで表示できる良いコードがあれば教えていただけませんでしょうか。
よろしくおねがいいたします。