参考サイトの用にコースを選んで予約するようにしたいのですが、このプルダウン方式だとカットかパーマかカラーかどれか一択しかできません。
できれば複数選択可能なチェックボックスに変更したいのですが、
まず、プルダウンで一択するのとチェックボックスの1つにチェックを入れるのが同じ(どちらも1項目分)だと考えればよいと思います。
参考になさったサイトが「会社名の行をコピーしてコースを追加」という方法を説明しているので、それを真似て「1個目のチェックボックスでカット」、「2個目のチェックボックスでパーマ」のように追加なさってはどうでしょうか。
course
という名前1つの代わりに、course_cut
, course_perm
, course_coloring
, course_headspa
のように別々の名前を付ければ分けられます。
その上で、予約フォームの入力画面と確認画面のレイアウトを工夫して、コースという行の中にチェックボックスを横に並べることができると思います。
予約フォーム画面のプルダウンをチェックボックスに変更しても予約確認画面では反映されず、データの受け渡しのためのソースがあるのではないのかと悩むのですが、、、
参考になさったサイトの『ステップ4/6:フォームデータ受け渡し部に「コース」を追加』は、1項目毎に受け渡し用のphpコードを足すようになっています。
ですので、チェックボックスがカットとパーマの2個なら、2個分のphpコードを足す必要があります。
まったく、longfreewayさんと同じところでつまずいています。
<select name>
を
<input>に置き換えて、
<input=”booking[client][course]”>
<input type=”checkbox” name=”cut” value=”1″>カット
<input type=”checkbox” name=”parm” value=”2″>カラー
<input type=”checkbox” name=”color” value=”3″>パーマ
にすると、フォーム入力画面では、上記3項目にチェックボックスが入る状態になるのですが、
確認画面に反映されません。
『ステップ4/6:フォームデータ受け渡し部に「コース」を追加』は、1項目毎に受け渡し用のphpコードを足すようになっています。
ですので、チェックボックスがカットとパーマの2個なら、2個分のphpコードを足す必要があります。
ここの記述がネックになってると思いますが、どのように記述したらいいのか、
試行錯誤しています。
できれば、ご教授いただきたいのですが。
当方の記述です。
switch ($keyname) {
case ‘course’ :
case ‘course_cut’ :
case ‘course_parm’ :
case ‘course_color’ :
−−−
‘client’ => array(
‘course_cut’ => ”,
‘course_parm’ => ”,
‘course_color’ => ”,
間違いなど、ご指摘いただけるとたいへん助かります。
何卒、宜しくお願い致します。
cuffsさん
フォーム入力画面では、上記3項目にチェックボックスが入る状態になるのですが、確認画面に反映されません。
オリジナルの「コースをプルダウンで選ぶ」つまり「同時に選べるコースは一つだけ」という形式はうまく動いてくれますよね。
ここで「チェックボックスを使って2つ以上選べるようにする」という変更を一気にやってしまう代わりに、次のように2段階に分けて変更してみては如何ですか。
- コースを1つだけ(例:カット)にして、チェックボックスで選ぶ。つまり「幾つかのコースの中からカットを選べる」のでなく、「カットするかしないか」を選べる(チェックを入れる、それとも入れない)ようにする。
- コースを1つだけチェックボックスで選べるようにできた後、それを複製して2つ目のコース、3つ目のコースという風に増やす。
さて、この変更を行う時には、幾つか注意が必要と思います。
input
タグのname
にcut、parm、colorの3つを指定するなら、オリジナルの例で company の部分をコピーして course に変えた箇所を(input
タグだけでなく他の部分も)course_cut 等にせずcut、parm、colorの3つ作る。
別の方法として、company を course に変えた例を生かすには、select
タグのname
をcourseのままにします。その代わりselect
タグのvalue
をcut、parm、colorにします。
しかし、これだけだと、2つ以上チェックを入れてもたぶん1つしか確認画面へ反映されないと思います。2つ以上選んで反映されるようにするには、他にも工夫が必要ですね。考える材料としては下記リンク先のページが役に立つのではないかと思います。
http://www.webword.jp/xhtml/form/index8.html
当トピックで取り上げていただいたサイトの作者です。
以下のページに解決策の記事を投稿しました。
http://www.nishi2002.com/7856.html
修正は2か所です。
1.ドロップダウンをチェックボックスに変更する
ポイントはname属性に[]を付けて、複数の選択値を配列で取得できるようにすることでしょうか。
2.送信された複数値を処理できるように確認画面以降のコードを変更する
もっと良い方法もあると思いますが、取り急ぎ。
※禁止事項に抵触していたのでフォーラム管理者により削除。
name属性に[]を付けて、複数の選択値を配列で取得できるようにする
コピー・ペーストだけでは原理が理解できないので、
ここをネットでめちゃくちゃ調べました。
エディタではうまくうごくようになり、あとは、MTS Simple Bookingの中での受け渡しを描いてようやっと理解できたかな、というところです。
ghvstさん、nisi1134さん、
ご回答いただき感謝です。