![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こんにちは。
標題の通りセレクトフォームで複数の値を渡した時のテーブルへのInsertの方法について悩んでいます。
環境はPHP5.1.2、MYSQL5、Apache2です。
やりたいことはセレクトフォームで複数の値を選択した場合、カンマ区切りにしてひとつのフィールドに格納したいということです。
現在つまづいている部分は、カンマ区切りにした値をInsertする部分です。表示するだけならいいのですが、どうしても最後の値しかInsertできません。(ちなみに挿入する値は数値です。フィールドはカンマを入れるのでVarcharにしています)
下にソースを書きましたが、この書き方だと前の値が上書きされているためだということはわかるのですが、どうしても書き方がわかりません。
できれば
$value = $id['0'].",".$id['1'].",".$id['2']....;
というような形で挿入したいのです。(ほかに同等の形になるよい方法があればこの形にこだわりません)
へたな説明で申し訳ありませんがよろしくお願いします。
<<index.php>>
<form action="entry.php" method="post">
<select name="bugID[]" multiple>
<option value="id1" name="bugid">AA</option>
<option value="id2" name="bugid">BB</option>
<option value="id3" name="bugid">CC</option>
<option value="id4" name="bugid">DD</option>
</select>
<input type="submit" value="送信">
</form>
<<entry.php>>
if($_POST["bugID"]){
foreach($_POST["bugID"] as $value){
$bug_id = $value.",";
}
}
mysql_select_db($DB,$mysql) or die ("Entryデータベースの接続に失敗しました\n".mysql_error());
$query = "insert into ".entryTA." (bug_id)";
$query .= " values('{$bug_id}')";
mysql_query($query,$mysql);
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_11.png?8acaa2e)
No.2ベストアンサー
- 回答日時:
implode()
って言う関数があるのでそのほうがいいかも。
できました!こんな関数があるなんて知りませんでした~。
もっとよく考えて探さないとだめですね。
一気に解決できました。どうもありがとうございました!
No.1
- 回答日時:
こんにちは。
まず<option>にname属性は存在しません。
foreach内で引数を展開しつつカンマ区切りにしている部分ですが、
$bug_id = $value.",";
これですと、お察しのとおりどんどん上書きされ、
最後の文字,
という形になってしまっています。
$bug_id .= $value.",";
にすればどんどん足されていくかなと思います。
下で$queryに行っているものと同じ処理です。
AA,BB,DD,となっていいならそのままですが、
AA,BB,DDとしたい(最後のカンマはいらない)となると
最後に、一番右のカンマを削除するか、
$cnt = 0;
foreache($_POST["bugID"] as $value ) {
if ( $cnt !=0 ) {
$value .= ",";
}
$cnt ++;
}
として、最初の繰り返しでない場合に選択された文字の前にカンマを追加する処理を入れてみてはいかがでしょうか。
name属性いらなかったんですね…。ほかのフォームと勘違いしてました。
最後にカンマがつくことも、つかないようにするにはどう書いたらよいのかわからなかったので大変参考になりました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンで選択された値を保持
-
PHP・MySQL・javascriptを用い...
-
セレクトしたときに全て初期状...
-
php セレクトボックス 値取得
-
ウェブ上で選択した複数行の内...
-
<select>文、foreachと初期値設定
-
phpでのセレクトボックスの値を...
-
PHP プルダウンメニュー MYSQL
-
SELECTタグでのデータ取り出し
-
2つのプルダウンメニュから受け...
-
「"」(ダブルクォーテーション)...
-
コンボボックス(プルダウン)...
-
セレクトフォームで選択した複...
-
自作ブログのPing送信について
-
<input type="hidden" >で配列...
-
laravelを利用してコントロール...
-
phpで変数を使ってcopyできない
-
HTMLで前の画面に戻る時、入力...
-
ラジオボタンのチェックを判定...
-
フォーム送信後の更新ボタンで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
現在時刻を反映させた時刻のプ...
-
「"」(ダブルクォーテーション)...
-
選択したタグ、入力した検索文...
-
複数 selectフォームから今回on...
-
2つのプルダウンメニュから受け...
-
複数のセレクトボックスで
-
連動させたいセレクトボックス...
-
GET又はPOSTで受け取るデータに...
-
データベースにある値でリスト...
-
php セレクトボックス 値取得
-
<select>文、foreachと初期値設定
-
コンボボックス(プルダウン)...
-
PHP で画面の一部だけを変えたい。
-
セレクトフォームで選択した複...
-
phpでのセレクトボックスの値を...
-
ループでチェックボックスにche...
-
プログラミング言語で、使える...
-
奇数や偶数を調べる関数
-
Smartyで、セレクトボックスが...
おすすめ情報