こんにちは。
HTMLの入力フォームからPHPでデータを取得したいのですが、項目(50項目位)が多い為に配列を使ってデータを取得したいと考えています。
どうやっていいのか迷っているのですが、おそらく連想配列を使えばいいのだとは思うのですが、取得の仕方がわかりません・・・すみませんが、ご教授頂けないでしょうか?
後、必須項目が何点かあるのですが、その必須項目で記入漏れがあるものを全てエラーで出したいと思います。
例えばA,B,C,Dの必須項目があり、Aにだけ記入されていたら【BCDは必須項目です】とBCだけ記入されていたら【ADは必須項目です】と画面に表示される。
これも配列を使えばどうにかなると思うのですが、ぜんぜんプログラムがわかりません・・・。
質問が2つになり申し訳ございませんが、ご教授をよろしくお願いします。
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の要素名を連番にしないといけないんですよね???製作の都合上、ある文字と連番とかにはできないんです・・・。すみません・・・
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.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.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.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.6
- 回答日時:
ソースを良く見てくださいね。
foreach($_POST as $key => $val){
$key .":" .$val. "<br>"
.};
真中の行「$key .":" .$val. "<br>"」では
どこに代入するのかが示されていませんし、
最後に「;」が無いので当然エラーが出ます。
この場合
「$message .= $key .":" .$val. "<br>";」
とすべきです。
また次の行の「.」も意味不明です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロについて(tatsumaru77さん見てください) 5 2023/06/07 17:51
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- JavaScript 助けてください!スパムメールがとんでもなく大量に届きます。 3 2023/08/10 16:32
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- 国民年金・基礎年金 年金免除の手続きをしているのですが、必須項目の『資格取得(種別変更)届』なんの資格取得を言っているの 3 2022/07/06 21:49
- その他(Microsoft Office) マクロについて教えてください、、 5 2023/06/06 22:07
- 賃貸マンション・賃貸アパート 賃貸:24時間緊急駆け付けサポートの加入必須?更新時の相談 3 2022/09/08 14:51
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP ボタンが押されたら処理を...
-
ラジオボタンをsessionで使いたい
-
<input type="hidden" >で配列...
-
PHPで、ボタンを押すと同じペー...
-
フォームへの前回入力値をクリ...
-
Javascript→PHPに...
-
フォームでのリセットを使う方法
-
検索時の選択内容を保持する方法
-
【HTML(PHP?)】複数のフォーム...
-
HTMLで前の画面に戻る時、入力...
-
PHPのsubmitボタンが複数ある場合
-
現在ラジオボタンのデータベー...
-
同じページでフォームデータを...
-
リストボックス 複数選択のデ...
-
フォームに入力された値を計算...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpで分からないエラーが出てし...
-
チェックボックスによる検索
-
フォームの内容をクッキーに保...
-
適性診断テストみたいなものを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
PHPでユーザー情報を入力して簡...
-
PHP ボタンが押されたら処理を...
-
PHPとHTML+Xamppの掲示板で画像...
-
syntax error, unexpected '}' ...
-
検索時の選択内容を保持する方法
-
PHPでCookieを使った訪問回数に...
-
チェックボックスによる検索
-
フォームでのリセットを使う方法
-
PHPで画像の渡しが上手く行きま...
-
チェックボックスによる検索(...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
php mysql でチェックボックス...
-
PHPの関数実行
-
phpで分からないエラーが出てし...
-
PHPで、ボタンを押すと同じペー...
-
ラジオボタンをsessionで使いたい
-
入力フォーム→確認画面→送信画...
おすすめ情報