前提・実現したいこと
PHPとMySQLを使いMVCでオリジナルECサイトを製作中です。
キーワード検索機能を追加したいのですが、下記のコードを書き実行しても結果が反映されず、実行する前のページのままになってしまいます。
$_POST['word']に検索フォームに入力した文字が入っていたのはprint_rで確認しました。
SQL文で書き方を間違えていると思うのですが、自分で何回読んでも解決策がわかりません。
PHP
1//home_view.php 2//省略 3<form method="post"> 4 <input type="text" name="word"> 5 <input type="hidden" name="search" value="search"> 6 <input type="submit" value="検索"> 7</form> 8//省略
PHP
1//home_controller.php 2//省略 3//POSTされた場合 4if ($_SERVER['REQUEST_METHOD'] === 'POST') { 5 6 $search = search_post_check(); 7 8 if ($search === 'search') { 9 //データチェック 10 word_check(); 11 //問題がなければ指示に従いデータを読み込む 12 $data = search_data($dbh); 13 } 14} //POSTの終了 15 16//省略
PHP
1//home_model.php 2//省略 3function search_post_check() { 4 if (isset($_POST['saerch']) === TRUE) { 5 $search = trim($_POST['search']); 6 return $search; 7 } 8} 9 10function word_check() { 11 global $errors; 12 if ($_POST['word'] === '') { 13 $errors[] = "文字を入力してください"; 14 } 15} 16 17function search_data($dbh) { 18 global $errors; 19 if (count($errors) === 0) { 20 $rows = search_data_read($dbh); 21 return $rows; 22 } 23} 24 25function search_data_read($dbh) { 26 $sql = 'select ec_item_master.item_id, name, team, brand, price, img, status, stock, ec_item_master.create_datetime 27 from ec_item_master 28 left outer join ec_item_stock 29 on ec_item_master.item_id = ec_item_stock.item_id 30 where ec_item_master.status = 1 31 and name like ? 32 order by item_id desc'; 33 $stmt = $dbh->prepare($sql); 34 $stmt->bindvalue(1, $_POST['word'], PDO::PARAM_STR); 35 $stmt->execute(); 36 $rows = $stmt->fetchAll(); 37 38 return $rows; 39} 40//省略
大変読みにくく、細かい修正点もたくさんあると思いますが、検索結果が反映されない問題点だけでもまずは上げていただけるとありがたいです。
先輩方、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/15 15:59
退会済みユーザー
2019/07/15 16:12