- ベストアンサー
HTML+PHPのリストボックス表示について
- HTML+PHPでリストボックスをテーブル内に表示する方法について教えてください。
- HTML+PHPでリストボックスがテーブル内に表示されず、位置がずれて表示される問題を解決したいです。
- MySQLからデータを読み込み、その値をリストボックスに表示する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まともにデバッグ出来てないですがこういう実装でどうでしょうか・・・? 恐らく何か所かミスしてると思うので注意深く見てみてください。(デバッグ丸投げすみません) disp_list関数に関しては逆に分かりにくくなると思ったので今回はそのまま書きました。 http://codepad.org/eJ9SO136
その他の回答 (2)
サンプルを作っていたのですが、途中でどうも理解できなかったことがあるので一旦ここで中断させていただきます。 http://codepad.org/fOxpAAnW kekkaテーブルとcode_hyoテーブルはどうして別になっているんでしょうか? 全くその意図が分かりませんでした。 また、各カラムの意味とdisp_list関数もいまいち分からないので説明お願いします。 以下キリが無いですが指摘入れます。 ・MySQLのカラム名は全て小文字にしてください。大文字を使うと定数や予約語と紛らわしくなります。 ・HTMLとPHPを可能な限り分離させてください。echoでべた書きしていると非常に読みづらくなります。 ・htmlspecialchars関数ではSQLインジェクション対策にエスケープしたことになりません。むしろ正しいクエリを送信しようとしても意図していないものに書き換えられる可能性すらあります。正しいクエリ実行方法については先ほどURLを掲載した私のQiitaの記事を参照してください。 ・変数のスコープについて学んでください。「$conn2」「$row2」などの変数が使われているところを見るとスコープに対する理解が無いように見えます。 http://php.net/manual/ja/language.variables.scope.php ・本題に戻りますが、PHPを触る以前にHTMLについてもう少し学んだ方がいいように見えます。今回のトラブルの直接の原因は<tr>の書き忘れですが、それにとどまらず非推奨要素・非推奨属性についても知っておいた方がいいと思います。<font>は代表的な非推奨要素です。今時使っているとバカにされるぐらいです。bgcolor属性も非推奨です。その他cellpadding,cellspacing属性などもCSSに任せられるので可能な限り使わないほうがいいです。
補足
・kekkaテーブルとcode_hyoテーブルについて別にしている理由は、code_hyoテーブルと同じような内容のマスターテーブルを複数作成する必要がありそれらを同じようにリスト表示させる為に分けています。kekkaテーブルはcodeに対して、KBN_CODEと同じようなコードを複数紐付けさせる事になります。更にkekkaテーブルからCSVでデータを引っ張るという要求もあるので、そこにあ保持させてます。kekkaテーブルと同じようなテーブルが増えるので、関数にしてリスト表示で使いまわせればと思っている次第です。(クラス化すべきかもしれませんが) ・大文字/小文字の件はご指摘通りです。以降変更します。 ・echoべた書きの件もご指摘通りなのですが、まずは動作させる事を第一にし質問させていただきましたので見苦しい点はお許しください。(綺麗なソースコードが解りやすくBugも減る事は知っていますが、そこまで技術力がついていません) ・htmlspecialchars関数だけで脆弱性チェックを終わらせるつもりはありませんので、ぜひ記事を参考にさせていただきます。スコープの件も分ける必要がないのは解りますが、自分が混乱してしまう為に、現状あえて分けてます。 ・非推奨要素/属性については全てではありませんが存じております。後で表示周りはCSSで対応させる予定ではありますが、まだそこまで全然手が回っていないのです(学習もです)。 以上、説明不足している部分もあるかと思いますが、ご丁寧に指摘ありがとうございます。
質問とは直接関係ないですがとりあえずこちらをご一読ください。 脆弱性に気づいていただければ幸いです。 http://qiita.com/mpyw/items/b00b72c5c95aac573b71 後ほどまた追記します。
お礼
素晴らしいです!(誤記はありましたが、私でもすぐわかるレベルの程度の問題でした)例外処理等も追記していただきありがとうございます!動作自体は私が望んでいるものでしたので、記載していただいたソースをちょっと自分なりに解析してみます。本当に助かりました!!