
こんにちは。
HTMLの入力フォームからPHPでデータを取得したいのですが、項目(50項目位)が多い為に配列を使ってデータを取得したいと考えています。
どうやっていいのか迷っているのですが、おそらく連想配列を使えばいいのだとは思うのですが、取得の仕方がわかりません・・・すみませんが、ご教授頂けないでしょうか?
後、必須項目が何点かあるのですが、その必須項目で記入漏れがあるものを全てエラーで出したいと思います。
例えばA,B,C,Dの必須項目があり、Aにだけ記入されていたら【BCDは必須項目です】とBCだけ記入されていたら【ADは必須項目です】と画面に表示される。
これも配列を使えばどうにかなると思うのですが、ぜんぜんプログラムがわかりません・・・。
質問が2つになり申し訳ございませんが、ご教授をよろしくお願いします。
No.4ベストアンサー
- 回答日時:
>この配列から例えば$key=Dだけを正規表現等で
////HTML内
<input type="text" name="A" value="">
<input type="text" name="B" value="">
<input type="text" name="C" value="">
<input type="text" name="D" value="123-4567">
…
<input type="text" name="n" value="">
//////
foreach($_POST as $key => $val){
if(!$val) $error_message .= $key;
if($key == "D" and !preg_match("/^[0-9]{3}([-]{1}[0-9]{4})?$/",$val) )$error_message .= $key;
}
エラーメッセージの出方に難有りですがこんな感じでしょう
(例として D は郵便番号としました
何度もご回答ありがとうございます。特定の要素だけを取り出すのは分かったのですが、他の処理がどうも上手いことできません・・・。今回はこの方法は諦めたいと思います。どうもありがとうございました。
No.6
- 回答日時:
ソースを良く見てくださいね。
foreach($_POST as $key => $val){
$key .":" .$val. "<br>"
.};
真中の行「$key .":" .$val. "<br>"」では
どこに代入するのかが示されていませんし、
最後に「;」が無いので当然エラーが出ます。
この場合
「$message .= $key .":" .$val. "<br>";」
とすべきです。
また次の行の「.」も意味不明です。
No.5
- 回答日時:
テストしていないのですが
以下のように要素名に「[]」をつければ
配列で入ってくるはずです。
(ラジオボタンなどで普通に使われる手法です)
<input type="text" name="item[]" value="">
<input type="text" name="item[]" value="">
<input type="text" name="item[]" value="">
<input type="text" name="item[]" value="">
もし上のようにname属性を変更できないのでしたら
post(もしくはget)を自力で分解するスクリプトを書けば
同じ名前の項目が複数あっても取得できますよ。
ありがとうございます。
データをpostで取る事はできました。
このデータをメールで送信するのに
メッセージの部分を$messegeと変数を設定し
この変数に
$message="
?>
大阪舶来マートJCB申込<br /><br />
<?php
foreach($_POST as $key => $val){
$key .":" .$val. "<br>"
.};
";
?>
とスクリプトを記述しました。
これを
print_r($message);
とすると
Parse error: parse error, unexpected T_STRING in /usr/local/asuka/virtual/B4Z001480/※※※※/soshin.php4 on line 8
というエラーを返します。
どうしてもこのエラーが出てしまうんです。
何故でしょうか?
No.3
- 回答日時:
////HTML
<input type="text" name="A" value="">
<input type="text" name="B" value="">
<input type="text" name="C" value="">
<input type="text" name="D" value="">
…
<input type="text" name="n" value="">
//////
foreach($_POST as $key => $val){
if(!$val) $error_message .= $key;
}
if($error_message)echo $error_message."は必須項目です";
こんな感じだと、HTML内の部分を直せば何百個項目あっても全てに対して未記入チェックできると思われます。
ありがとうございます。
まさしく期待していた答えでした・・・。
基本的なことですみませんが、
この配列から例えば$key=Dだけを正規表現等で
チェックを掛けたい場合はどうしたらいいのでしょうか?
ご教授をよろしくお願いします。
No.2
- 回答日時:
確認はしてませんがこんなんでいけるかな?
////a.php///////
///フォーム書き出し//
<form action="b.php" method="post">
<?php
for($i=1;$i<=50;$i++){
echo "<input type=\"text\" name=\"item".$i."\"><br>\n";
}
?>
<input type="submit" name="Submit" value="送信">
///b.php////
//空白チェック
<?php
if($_POST[Submit]){
for($i=0;$i<=50;$i++){
if($_POST["item".$i]==""){
$err .= "$i"."に空白があります。<br>";
}
}
}
echo "$err";
?>
ありがとうございます。
この方法ですとHTMLの要素名を連番にしないといけないんですよね???製作の都合上、ある文字と連番とかにはできないんです・・・。というのもitem4に空白がありますなんて表示されても分かり難いと思いますので・・・
No.1
- 回答日時:
$_POSTは元々連想配列では。
$_POST自身は、HTMLフォームの要素名をキーとしてますから、
例えば、
<input type="text" name="item1" value="atai">
<input type="text" name="item2" value="watashi">
<input type="text" name="item3" value="boku">
のように要素名を規則的にする事で、
$idx = 3;
echo $_POST[ "item".$idx ], "<br>";
でアクセスできます。
――という話ではない?
ありがとうございます。
この方法ですとHTMLの要素名を連番にしないといけないんですよね???製作の都合上、ある文字と連番とかにはできないんです・・・。すみません・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームボタンを押すたびに数...
-
HTMLで前の画面に戻る時、入力...
-
DBの値をチェックボックスに反...
-
PHPの関数実行
-
フォームへの前回入力値をクリ...
-
アップロードの際にファイルパス
-
フォームでのリセットを使う方法
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
php mysql でチェックボックス...
-
PHPによるCSVファイルの指定列...
-
phpのswitch文
-
XMLデータをPOSTで送信・受信す...
-
フォーム送信後の更新ボタンで...
-
POSTデータをフォームに残す方法
-
PHPの質問:フォームから受け取...
-
PHPのエラーの解消法について教...
-
[Ethna]selectボックスに空値を...
-
VBA で、スペースを含むファイ...
-
テキストリンクをPOST送信したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
DBの値をチェックボックスに反...
-
$_SESSIONについて教えて下さい。
-
PHPで、ボタンを押すと同じペー...
-
PHP ボタンが押されたら処理を...
-
<input type="hidden" >で配列...
-
アンケートフォームの作り方
-
入力した部分を表示させたまま...
-
画面が更新されてもチェックボ...
-
ラジオボタンをsessionで使いたい
-
チェックボックスによる検索
-
PHPで画像の渡しが上手く行きま...
-
同じページでフォームデータを...
-
POSTをボタンではなくリンク等...
-
配列をhiddenで
-
HTMLのvalue値を取得したい。
-
パラメーターを隠す
-
選んだ数字だけ繰り返す
-
PHPで画像データーのアップロー...
おすすめ情報