###前提・実現したいこと
独学で、PHPとMySQLを使っています。
作りたいものは以下の通りです。
1 index.phpでユーザーに品番を入力してもらい、test.phpに飛ぶ
2 DBで検索し、それに該当するものを引っ張ってくる
3 1つ1つの品番について、['kind']の中を参照して、野菜と果物のどっちに当てはまるかを確認する
4-1 野菜も果物もヒットした場合は、その旨のメッセージを出す
4-2 野菜だけヒットした場合、yasai.phpに飛ばす
4-3 果物だけヒットした場合、kudamono.phpに飛ばす
4-4 何もヒットしなかった場合、その旨のメッセージを出す
yasai.php、kudamono.phpは検索結果の一覧です。
本当は同じファイルにしたかったのですが、
表示すべき項目(th)が異なるため別ページにしています。
野菜と果物を同ファイル別テーブルで表示する案は却下されています。
###発生している問題・エラーメッセージ
現状、大きな問題が生じているわけではありませんが、
もっとよいやり方があるのでは、
めちゃくちゃ効率が悪いやり方をしているのではと不安になりました。
最も困っているのは、
index.phpからyasai/kudamono.phpに移動する間にちらっとtest.phpが描画されてしまうことです。
メッセージをtest.phpで表示するのを諦めたほうがいいのか、
あるいは違うやり方だったらtest.phpを介さなくてもいいのか……。
ブラウザバックなどの挙動も気になります。
###該当のソースコード
$id = $_POST['id']; $id = addslashes($id); if($_POST['method'] == "前方一致") $id = $id ."%"; $tmp ='SELECT * from `item` where `item`.`id` like ?'; $sql = $pdo->prepare($tmp); $sql->execute([$id]); $sql = $sql->fetchAll(); $a = $b = 0; foreach($sql as $row){ if(strpos($row['kind'],'野菜') !== false) $a = ++$a; if(strpos($row['kind'],'果物') !== false) $b = ++$b; } if($a > 0 and $b> 0){ $massage = '両方がヒットしては駄目'; } else{ if($a > 0 and $b == 0) $next = 'yasai.php'; if($a == 0 and $b> 0) $next = 'kudamono.php'; if($a == 0 and $b== 0) $massage = '見つかりません'; } (中略) <?php if(isset($massage)){ ?> <script> $(function(){ $('form[name=f]').submit() }) </script> <?php } else{?> <p><?php echo $massage ?></p> <?php } ?> <form name='f' method="post" action="<?php echo $next ?>"> <input type="hidden" name="id" value="<?php echo $_POST['id'] ?>"> <input type="hidden" name="method" value="<?php echo $_POST['method'] ?>"> </form>
###補足情報(言語/FW/ツール等のバージョンなど)
PHP7.1.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/22 08:07