前提・実現したいこと
メインのプログラムでは前の画面で入力した値を元にDBから詳細な情報を検索できるようにしています。
functions.phpではswitchでメインのプログラムで指定したcaseを実行しているのですが、他のcaseにもreturnを書いていると検索する画面(searchのところ)が上手く動作しません。
結論言うと、一つのswitchの中にreturnを書くのはいけないのでしょうか?
p.s.
require_onceについては今回無視していただければと思います。
メインのプログラム
try{ $db='search_ans'; require_once('C:\xampp\htdocs\customer\functions.php'); db_access($db); } catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null;
functions.php
<?php function db_access($db){ $dsn = 'mysql:dbname=example;host=localhost'; $user = 'root'; $password = 'shapshap'; $dbh = new PDO($dsn, $user, $password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); switch($db){ case 'search': $query = $dbh->query('select C_nm from example'); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo '<option value="'.$row['C_nm'].'">'.$row['C_nm'].'</option>'; } return $row; break; case 'search_ans'; if (isset($_POST['C_num'])){ $get_C_nam[] = $_POST['C_name']; $get_C_nm[] = $_POST['C_num']; $get_C_phn[] = $_POST['C_phon']; $get_C_add[] = $_POSt['C_add']; } else{ $C_nm = $_GET['C_num']; $sql = 'select * from example where C_nm= '.$C_nm.''; foreach ($dbh->query($sql) as $row) { $get_C_nam[] = $row['C_nam']; $get_C_nm[] = $row['C_nm']; $get_C_phn[] = $row['C_phn']; $get_C_add[] = $row['C_add']; } } return [$get_C_nam[], $get_C_nm[], $get_C_phn[], $get_C_add[]]; break; default: break; } } ?>
> 検索する画面(searchのところ)が上手く動作しません。
どうなるのですか?エラーなどが出たのであれば、その詳細を書いていただければと思います。
エラーは出ていないのですが、searchの画面ではDBからの値が表示されないというのが起きています。
伝わましたか?
あなたが言っている、うまく動作しない、という状況が他の人にはさっぱり理解できません
そこらへん詳しく説明しましょう
そうなんですね。
上手く動作しないというのは、searchの画面ではドロップダウンリストでデータベースから値を持ってきて、表示するのですが、その値が表示されないということですね。
わかりづらい説明をしてすいませんでした。
searchのプログラムがリンク先に貼ってありますのでご参考までに
https://teratail.com/questions/326324
「期待する結果」と「実際の結果」を具体的に書くと伝わりやすいと思います。
回答2件
あなたの回答
tips
プレビュー