phpのフォームからmysqlのデータ登録についてお聞きしたいことがあります。
フォームで
<select name="test1">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="hoge1">
<option value="">--</option>
<option value="サッカー">サッカー</option>
<option value="野球">野球</option>
<option value="バスケ">バスケ</option>
</select>
<select name="test2">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="hoge2">
<option value="">--</option>
<option value="サッカー">サッカー</option>
<option value="野球">野球</option>
<option value="バスケ">バスケ</option>
</select>
・
・
・
これが10項目ぐらいあります。
これをデータ登録するときに空の値はデータを登録しないとしたいのですが、空の値でも登録されてしまいます。
queryは下記のようになっています。
$testquery = sprintf("INSERT INTO `testhoge` (`test`,`hoge`) VALUES
('$test1','$hoge1'),('$test2','$hoge2),('$test3','$hoge3'),('$test4','$hoge4'),
('$test5','$hoge5'),('$test6','$hoge6'),('$test7','$hoge7'),('$test8','$hoge8'),
('$test9','$hoge9'),('$test10','$hoge10')
");
}
test1とhoge1が1:サッカー。
test2とhoge2が2:野球。
test3とhoge3が1:バスケ。
(必ずしもtest項目の番号が123ではない。)
となり4項目以降は空の場合は3項目までが登録される。
10項目全部入力されれば全部登録される。
としたいのです。
どなたかおわかりの方がいらっしゃいましたらご教示お願いします。
No.1ベストアンサー
- 回答日時:
selectのnameを工夫すると楽です
<?PHP
$test=$_REQUEST["test"];
$hoge=$_REQUEST["hoge"];
$vals="";
$sql="";
foreach((array) $test as $key=>$val){
if($val!=="" and $hoge[$key]!==""){
if($vals!=="") $vals.=",";
$vals.="('{$val}','{$hoge[$key]}')";
}
}
if($vals!==""){
$sql="INSERT INTO `testhoge` (`test`,`hoge`) VALUES".$vals;
}
print $sql;
?>
<form>
<select name="test[1]">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="hoge[1]">
<option value="">--</option>
<option value="サッカー">サッカー</option>
<option value="野球">野球</option>
<option value="バスケ">バスケ</option>
</select>
<select name="test[2]">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="hoge[2]">
<option value="">--</option>
<option value="サッカー">サッカー</option>
<option value="野球">野球</option>
<option value="バスケ">バスケ</option>
</select>
<input type="submit" value="go">
</form>
ご回答有難う御座います。
度重なるご質問で申し訳ないのですが、
ご教示いただいたコードをもとにフォームを作成してみましたが、データの登録までにたどりつかず頭が混乱してしまいました。
内容は
フォーム画面
<form>
<select name="test[1]">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="hoge[1]">
<option value="">--</option>
<option value="サッカー">サッカー</option>
<option value="野球">野球</option>
<option value="バスケ">バスケ</option>
</select>
<select name="test[2]">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="hoge[2]">
<option value="">--</option>
<option value="サッカー">サッカー</option>
<option value="野球">野球</option>
<option value="バスケ">バスケ</option>
</select>
<input type="submit" value="確認">
確認画面
$testtxt = $_REQUEST['test'];
$hogetxt = $_REQUEST['hoge'];
$_SESSION['testtxt'] = $testtxt;
$_SESSION['hogetxt'] = $hogetxt;
foreach((array) $_SESSION['testtxt'] as $key => $val){
if($val !== "" && $_SESSION['hogetxt'][$key] !== ""){
$txt .= $val. ":" .$_SESSION['hogetxt'][$key]. '<br />'."\n";
}
}
echo $txt;
登録画面
ここでわからなくなってしまいました。
$txtに渡してから登録画面ではNULLと表示されてしまいます。
SESSIONも考えていたのですが、このような感じであっていますでしょうか?
$_REQUESTを使ったのがはじめてのためあってるのかわかりませんが宜しくお願いします。
No.4
- 回答日時:
>Column count doesn't match value count
これは単に・・・
INSERT INTO hoge(a,b,c) values('x','y');
みたいに投入するフィールドの指定と、データ数に差異があるだけだと思います
ご回答有難う御座います。
>INSERT INTO hoge(a,b,c) values('x','y');
>みたいに投入するフィールドの指定と、データ数に差異があるだけだと思います
ですが、
INSERT INTO hoge(a,b,c) values('x','y',Z);
にしています。
また、IDの構成かと思いしらべたのですが、AUTO_INCREMENTになっています。
vr_dumpをやったところ、
INSERT INTO hoge(a,b,c) values,('x','y',Z);
とValuesの横に,が入っていました。
これは関係しますでしょうか?
No.3
- 回答日時:
>$testtxt = $_REQUEST['test'];
>$hogetxt = $_REQUEST['hoge'];
>
>$_SESSION['testtxt'] = $testtxt;
>$_SESSION['hogetxt'] = $hogetxt;
どこでセッションを利用しているか微妙ですが
前回提示したソースは$_REQUEST['test']と$_REQUEST['hoge']は
それぞれ配列を想定しています
配列データはSESSION変数に乗らないので、シリアライズし
受け取った側でアンシリアライズします。
http://www.php.net/manual/ja/function.serialize. …
度重なるご回答有難う御座います。
SESSIONはできたのですが、データベースへの登録ができなくエラーがでてしまいます。
エラー文はColumn count doesn't match value count at row 1のように表示されます。
データベースの構成など調べたのですが間違いはないのにでてしまいます。
お分かりになりますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript 1度きりではなく、繰り返し、挙動が変わるようにしていただきたいです。 1 2022/07/03 15:50
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のセレクトボックスを1つに...
-
プログラミング言語で、使える...
-
チェックボックスで渡ってきた...
-
<select>文、foreachと初期値設定
-
頭文字→大学→学部を選択する入...
-
複数 selectフォームから今回on...
-
phpでカレンダー作成
-
プルダウンとCSVの連動
-
複数のセレクトボックスで
-
phpでのセレクトボックスの値を...
-
プルダウンリスト(コンボボッ...
-
value値にあてはまるフィールド...
-
「"」(ダブルクォーテーション)...
-
PHPで診断しておすすめの本を紹...
-
PHP ボタンが押されたら処理を...
-
PHPでフォームから任意の画像削...
-
HTMLで前の画面に戻る時、入力...
-
PHPで画像の渡しが上手く行きま...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
「"」(ダブルクォーテーション)...
-
ラジオボタンの値を受け取ってP...
-
<select>文、foreachと初期値設定
-
phpでのセレクトボックスの値を...
-
複数 selectフォームから今回on...
-
php セレクトボックス 値取得
-
複数のセレクトボックスを1つに...
-
2つのプルダウンメニュから受け...
-
phpでのselect値の取得・表記に...
-
foreachで次の行の値を取得して...
-
ウェブ上で選択した複数行の内...
-
CodeIgniter/set_value()
-
ループ処理
-
連動させたいセレクトボックス...
-
PHP で画面の一部だけを変えたい。
-
phpでカレンダー作成
-
現在時刻を反映させた時刻のプ...
-
プルダウンで選択された値を保持
-
プルダウンリスト(コンボボッ...
おすすめ情報