selectタグの中身をMySQLから取得したデータを表示したい
selectの中身をMySQLのデータベースから取得したいが
selectタグをクリックする際に中身が何も表示されず苦戦しています。
phpMyAdmin使用
データベースのテーブル名:category
カラム名(データ型):id(int), user_id(int), name(varchar), delete_flg(boolean)
※今回はselect内にnameカラムの値を入れ表示させたい
※delete_flgの値:デフォルトが0,値が1なら削除
データベースへの接続
$category_id = $_POST['category_id']; //selectで選択されたものを代入 $user_id = $_SESSION['user_id']; //ユーザーのIDを代入 function select_id($user_id) { $dsn = 'mysql:dbname=***;host=***;charset=utf8'; $user = '***'; $password = '***'; $option = array ( PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); $dbh = new PDO($dsn,$user,$password,$option); $stmt = $dbh->prepare('SELECT id,name FROM category WHERE user_id = :user_id AND delete_flg = 0'); $stmt->execute(array(':user_id' => $user_id)); if($stmt) { return $stmt->fetchAll(); } }
HTMLフォーム(select)
<form method="post"> <label> <select name="category_id"> <option value="0" selected>選択してください</option> <?php foreach(select_id($user_id) as $key => $val){ ?> <option value="<?php echo $val['id'] ?>"> <?php echo $val['name'];?> </option> <?php } ?> </select> <input type="submit" name="submit" value="post"> </label> </form>
試したこと
最初にselectをクリックする時は何も表示されないが(※「選択してください」のみ表示)
一度POSTすると中身が表示されます。
post送信前の表示
###post送信後の表示(postクリック後)
バリデーションにてページの移行は行わないが
クリック後にはちゃんとDBのnameカラムの値が表示される
###どうしたいか
一度もPOSTしていない状態でselectの中身を表示させることが可能なら
どのようにすればいいのでしょうか?
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。