• 締切済み

チェックボックス

Ruby on Railsを利用したオープンソースのCMS(Rubricks)で作成しているのですが。。 チェックボックスで複数選択した情報をDBへ保存する方法が分かりません。 【状況】 C コントローラ @kudamonos = Kudamono::KudamonoKind.find(:all) V ビュー <% @kudamonos.each do |kudamono| %> <span style="white-space:"> <%= check_box kudamonos",kudamono.id, :checked => nil %> <%= hl(kudamono.kudamono_name) %> </span> <% end %> check_box_tag はうまくいきません。。 DB mysql> select * from kudamono_kinds; +----+---------------+ | id | kudamono_name | +----+---------------+ | 1 | りんご | | 2 | みかん | | 3 | いちご | +----+---------------+ mysql> select * from kudamono_masters; +----+------------------+----------------+ | id | kudamono_name_id | select_buy_id | +----+------------------+----------------+ | 1 | 1 | 1 | | 2 | 2 | 1 | | 3 | 3 | 1 | +----+------------------+----------------+ select_buy_id  は今は無視して下さい。 チェックボックスですべてチェックした場合上記の用に保存したいです。 説明不足ですが、どなたか教えていただきらいです。

みんなの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

【状況】のビューの中の以下の行で、とりあえず”(ダブルクォート)が抜けていてエラーになっていると思います。また、チェックボックスの指定のやりかたも、書籍に載っているのと違っているように思えます。 <%= check_box kudamonos",kudamono.id, :checked => nil %> とりあえず、問題を簡単にするために、1つだけのチェックボックスの指定で正常動作するのを確認して、それを複数行記述して、それがOKになったら、本来のリピートを使った記述方法に直すのがいいと思います。 ちなみに、チェックボックスが1つだけの場合、手元のサンプルを修正して試したら、以下の記述でOKでした。この例は1と0で、オン/オフを表しています。 <%= f.check_box(:chk1, {}, 1, 0) %>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 連動させたいセレクトボックスについて。

    こんにちは。DB+PHPが初心者のものです。 前にもここで質問させていただきましたが、 自分なりにコードを書いてみたので コードの訂正、ご教授をよろしくお願いいたします。 セレクトボックス1には、[table 1]の、種類が入り れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。 下記のようにソースを書いてみましたが、 table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T) 動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。 <html> <body> <select name="mkoumoku"> <option selected>-------------</option> <?php //DB接続 $dbcon=mysql_connect("localhost","abcd","defg"); //DB選択 mysql_select_db("zozozo"); //table1を取得 $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n"; } echo "</select>"; ?> <select name="skoumoku"> <option selected>-------------</option> <? //table1に連動して項目を変えたいところのコード $res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id"); while ($rows=mysql_fetch_array($res1)) { echo "<option value=\"".$rows['id']."\">".$rows['name']."\n"; } //Dbクローズ mysql_close($dbcon); ?> </body> </html>

    • ベストアンサー
    • PHP
  • 何種類かのチェックボックスグループを検索フォームに追加したい

    PHP 5、MySQL 4.0.14という組み合わせで、検索システムに挑戦中です。 入門書から動作まで確認できましたが、検索フォームにいくつかの チェックボックスを追加したいです。 例えば、好きな果物を任意に選択させ、チェックされた果物をOR条件で、 さらに他の検索条件(住所等)とAND条件で結びたいです。 ここで、(1)HTML側と、(2)<?php ~~?>内に、 具体的にどのように記述したらよいものでしょうか。 例示はしてませんが好きな果物(3つのチェックボックスグループ)だけでなく、 好きな動物(6つの 〃 )や、好きな飲み物(2つの 〃 )など、様々な チェックボックスを検索条件として絞り込めるようにしたいです。 ---検索フォーム-- <FORM method="POST" action="list.php"> 住所<input type="text" name="address"> を含む 好きな果物 <INPUT TYPE="CHECKBOX" NAME="kudamono">りんご <INPUT TYPE="CHECKBOX" NAME="kudamono">みかん <INPUT TYPE="CHECKBOX" NAME="kudamono">なし <input type="submit" name="exec" value="検索"> </FORM> ---検索結果PHP-- require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from t_mydata where (address like '%$address%') $sql .= " order by address"; $rst = mysql_query($sql, $con); $body .= "<table>"; for ($recnum = 0; $recnum < $recmax; $recnum++) { $body .= "<tr>"; $body .= "<td>" . $col["ADDRESS"] . "</td>"; $body .= "<td>" . $col["KUDAMONO"] . "</td>"; $body .= "</tr>"; } $body .= "</table>"; # だいぶ省略してます。

    • ベストアンサー
    • PHP
  • チェックボックスの値の受け渡し

    PHP&MySQLで勉強しているものです。 ブラウザ上のチェックボックスにチェックすると、保存時にフィールド(CB)に値:1を書き込み、逆にブラウザのオープン時にフィールドの値が1の時にチェックボックスがチェックされた状態で表示させたいと思っています。 $sql="SELECT ID,NAME,CB FROM CASE" $rs=mysql_query($sql$dbHd) $row=mysql_fetch_row($rs) <INPUT type="checkbox" name="ip02" value"<?php print($row[2]) ?>"> 上記のようなINPUTを書いてみたものの、値はとれずの状態です。 どのように書き換えていけばいいでしょうか?

    • ベストアンサー
    • PHP
  • Selectボックスの幅を自動で広げたい

    Selectボックスの幅を自動で広げたい Jqueryを使って、DBから取得した値を下記のようにSelectボックスに入れています。 $('select#name).prepend('<option value="' + val[1] + '">' + val[2] + '</option>'); HTMLの方は下記のように設定してあり、 <select id="name"> </select> 値もきちんと挿入されます。 ただ、値が入ったあとのSelectボックスの幅が狭くて、選択した後に全部表示されていない状態です。 これを入れた値の文字数に応じて、またはこのSelectボックスが複数あるのですが、最大文字数に合わせた幅に自動で設定するのにはどうやってやればいいのでしょうか。 下記のように試してみたのですが、うまくいきませんでした。 <select id="name" style="width:auto;"> </select> <select id="name" style="width:100%;"> </select> どなたかおわかりの方いらっしゃいましたら教えてください、 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • チェックボックスによる検索

    こんばんは。お世話になっております。 PHPにてDB(MySQL)に登録されたデータをチェックボックスのみで検索するスクリプトを組んでおりますが、チェックボックスの数が多数あり、混乱してしまい、お力をお借りしたく投函させて頂きました。 上手く説明できるかどうか判りませんが… まず検索項目として、(複数チェック可) カテゴリ: □ドリンク □グルメ □ケーキ 年齢:   □20代  □30代 以上のようなフォームを用意しており、各チェックボックスのnameはDBのフィールドを同じ名前。valueは実際に登録されている数値を記述しています。 そこで、上記チェックボックスにいくつかのチェックを入れ、検索すると、それに該当するものだけを検索結果として一覧表示させたいのですが、現在、全ての項目に当てはまるものと一緒に、1つでも含んだデータまでもが表示されてしまいます。 お忙しい中恐縮ですが、お知恵を頂戴出来ればと考えております。 宜しくお願い致します。 //POSTで受け取ったデータを配列にし、 foreach($arr as $category){ $wherearr1[] = " ( category = '$category' )" } foreach($arr as $category){ $wherearr2[] = " ( age = '$age' )" } $wherestr1 = implode(" OR ",$wherearr1); $wherestr2 = implode(" OR ",$wherearr2); $sql = "select * from member where $wherestr AND $wherestr1 order by date desc"; $result = mysql_query($sql);

    • ベストアンサー
    • PHP
  • 同じサーバーで、異なるデータベースを同時に開くことはできますか?

    1.タイトルの通り、同時に開くことができますでしょうか? 日本PHPユーザー会ホームページでは以下の方法でできるとの回答があります。 $con1 = mysql_connect(localhost, user_id , pass); $con2 = mysql_connect(localhost, user_id , pass); mysql_select_db("db1",$con1); mysql_select_db("db2",$con2); ======================================== db1 user_table user_id(int),user_name(var) ========================================== db2 main_table main_id(int),user_id(int) ======================================== $sql_user_name = "SELECT user_name FROM user"; $result_user = mysql_query($sql_user_name,$con1); $row_user = mysql_fetch_array($result_user); echo $row_user[user_name]; のようにやっても mysql_fetch_array()がでます。 mysql_queryは最後の接続を活かすとなっているのでこの部分の書き方を教えてください。 2.できたとしてリレーションを行うことができますでしょうか? つまり $sql_user_name = "SELECT user_name FROM db1.user_table,db2.main_table WHERE db1.user_table.user_id = db2.main_table.user_id" というようなことはできますでしょうか? 長文で申し訳ありませんが、どうかよろしくお願いします。

    • ベストアンサー
    • MySQL
  • チェックボックスを使っての検索で

    PHP5とMySQL4.0.24を使用しています。 フィールド内にカンマ区切りでテキストが格納されてます。 +----+----------------------+ | ID | text | +----+----------------------+ |id01| 101,001,201,300 | |id02| 001,201,105 | |id03| 101,401,300,201,003 | | : | : | +----+----------------------+ これをチェックボックスで □001 □003 □101 □105 □201 … でOR検索をしたいのですが。 検索側のHTMLで <input type=checkbox name=chk[] value=001>001         : と書いて 処理側のPHPに $arraival = is_array(@$_POST['chk'])? implode(',',$_POST['chk']):'empty case'; $sql = "select * from shop_data where arraival like '%$arraival%'"; としてもうまく結果が得られません。 どの様に書けばよいのでしょうか?

    • ベストアンサー
    • MySQL
  • チェックボックス 複数選択 MYSQL

    PHP習い始めたのですがどうしても分からない問題がありましたので 質問をさせて頂きました。 現在チェックボックスで複数選択された情報をMYSQLに反映させようとしているのですがどうしても複数選択された項目の内、一つしかMYSQLに反映されません。 こちらがスクリプトの一部になります。 <span class="checkbox"><input name="check[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="check[]" type="checkbox" value="bbb" />bbb</span> <span class="checkbox"><input name="check[]" type="checkbox" value="ccc" />ccc</span><br /> //MYSQL $sql = "insert into table values('$check[]')"; 配列を使うとまでは調べて分かったのですが、そこからがどうしても 分かりません。どなたご存知になるかたがおりましたら 是非お伺い出来ませんでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックスでチェックした配列の値をDBに。

    チェックボックスでチェックした配列の値を データベースのカラム名と照らし合わせて 一致する所に「1」を入れたいのですが、うまくいきません。 PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 どうしたら、入れることができるでしょうか? ご教授、よろしくお願いいたします。 1 送るページ $sql = "select * from `class_tbl`"; $rest = mysql_query($sql, $con); while($col = mysql_fetch_array($rest)) { $classID = $col["classID"]; $class_name = $col["class_name"]; $sql = "select * from `member_sub_tbl` where `ID` ='$ID'"; $rst = mysql_query($sql, $con); while($col = mysql_fetch_array($rst)) { $kekka = $col["$classID"]; if($kekka==1) { echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" checked/> $class_name EOF; } else{ echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" /> $class_name EOF; } } } echo <<<EOF <input name="ID" type="hidden" value="$ID" /> EOF; 2 受けるページ $ID=$POST["ID"]; $classID=$POST["classID"]; var_dump($_REQUEST); 以下のように表示しています。 array(3) { ["classID"]=> array(10) { [0]=> string(4) "1010" [1]=> string(4) "1050" [2]=> string(4) "1110" [3]=> string(4) "1182" } ["sn"]=> string(2) "45" ["PHPSESSID"]=> string(32) "********************" } 「ID」の行に、配列の「1010」「1050」と 「member_sub_tbl(テーブル)」の「カラム名」を比較して、一致する所に「1」を入れたいのですがうまくいきません。 ※update をしたいのです。 試行錯誤していますが、方法が分かりません。 ご教授、よろしくお願いいたします。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • 引っ越し先でプリンターとWi-Fiの接続ができず、パソコンにある書類の印刷ができません。
  • 試したこととして、IPアドレスでの検索や再検索を行いましたが、解決できませんでした。
  • マンスリーマンションのため、ルーターが手元にありません。Wi-Fiはマンション全体に通っている無料のものを使用しています。
回答を見る