どうしてもわからずに困っております。
以下に説明と具体的にスクリプトを載せておりますので、
アドバイスを宜しくお願い致します。
単純にユーザーがformのチェックボタンによって送信してきたデータをphpが受け取って、$v_madori1から$v_madori6までの変数を用意します。
php側としては、nullが6個、つまりv_madori1からv_madori6まですべて中身が空っぽの場合だけ、
エラーのhtmlページへ飛ばすという仕組みです。
(ユーザーがhtmlのページでチェックボタンを一つもチェックしなかったらエラーにしたいという考えです。)
そこで、for文を使って簡単にエラーをチェックしてみようと思いました。
forループ内の最後のheader関数は、
結局6つともnullだったということなので、
errorページへ飛ばすという意味の関数です。
以下にスクリプトの一部を抜粋して載せました。
間違いをご指摘ください。
宜しくお願い致します。
//間取りの情報受信
$v_madori1 = $_REQUEST['v_madori1'];
$v_madori2 = $_REQUEST['v_madori2'];
$v_madori3 = $_REQUEST['v_madori3'];
$v_madori4 = $_REQUEST['v_madori4'];
$v_madori5 = $_REQUEST['v_madori5'];
$v_madori6 = $_REQUEST['v_madori6'];
for($i=1 ; $i=<6 ; $i++){
if($v_madori.$i == null){
continue;//nullだったので次のループへ
}else{
break;//nullじゃないということなので、forループを抜ける
}
//全部nullだったのでそれではまずいのでエラーページへ。
header("location:http://www.xxxxx.biz/error.html");
}
No.4ベストアンサー
- 回答日時:
可変変数を使ってNo3さんと同じ考え方でひとつ
$check = false;
for($i=1 ; $i<=6 ; $i++){
if(${"v_madori".$i} <> null){
$check = ture;
break;
}
}
if(!$check)header("location:http://www.xxxxx.biz/error.html");
質問のソースではforループの中でコンテニューとブレイクを両方使用していましたが、これだと条件がどうであれヘッダー関数にたどり着けないような気がします。なのでNo3さんの考えが一番簡単かつよい方法だと思います。
あとforループの条件 $i=>6 じゃなくて $i<=6 だと思います。 もう既にわかってらっしゃる場合はご容赦ください。
ただこういう間違いは結構気づきにくいんですよね。
ありがとうございます。
おかげさまでうまくスクリプトを書くことができました。
チェック用の変数を用いるというのには、
気づきませんでした。
非常に参考になりました。
ありがとうございました!
No.3
- 回答日時:
こう考えてはいかがでしょう。
変数をもう1つ用意します。ここではとりあえず、$check という名前だとします。for ループに入る前に、$check に初期値として0を入れておきます。
for ループを使って、$v_madori1 ~ 6 をチェックします。ループ中は、$v_madori が null でない場合は $check に $i の値を入れるという処理をします。
ループ終了後、$v_madori1 ~ 6 の全てが null でなければ $check に1~6のいずれかが入っているはずですが、全て null の場合、$check は0のままです。
あとは if 文で $check の値を見て、0の時にはエラーのページに飛ぶ、という処理をすれば完成です。
なお、$check が0でなくなれば $v_madori1 ~ 6 のいずれかはチェックされているということですから、$check が0でなくなった時点で for ループを打ち切っても構いません。
当方は php には詳しくないので文法的には自信がありませんが、こんな感じでしょうか。
//チェック用変数を初期化
$check = 0;
//$v_madoriを全て調べる
//$checkが変更されたら、その時点でチェック終了
for( $i=1 ; $i<=6 && $check == 0 ; $i++ )
{
//nullでなければ、チェック用変数を更新
if( $v_madori.$i != null )
{
$check = $i;
}
}
//全てnullだった場合、エラーページへ
if( $check == 0 )
{
header("location:http://www.xxxxx.biz/error.html");
}
チェック用の変数を用意し、その値がループの前と後とで変わっているかどうかで判断する方法はよくある手法なので、よろしければご参考までに。
(上記のプログラムで文法の誤りがありましたら、お手数ですが正しく修正してご利用下さい)
ありがとうございます。
チェック用の関数を用いるという手法、
今後もどんどん使えそうですね。
よくある手法とのことなので、
今後解析をこなす際にも非常に参考になります。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Chrome(クローム) 【Google AndroidのChromeブラウザーでフォームに入力後に送信ボタンを押すと、400 1 2022/06/26 16:52
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を変えるには?
-
PHPで、エラーがない場合のみ画...
-
PHPでネットワークドライブのop...
-
imagecreatefromjpeg使用時のメ...
-
パースエラーとは?
-
PHP8を使うと、大量のWarningが...
-
ある条件に当てはまったときに...
-
phpのエラーについて
-
error_reporting(0);にも関わら...
-
正規表現での最後尾のバックス...
-
PHPでSMTPを使ってメール送信で...
-
PHPで特定のURLにジャンプす...
-
pchartというグラフ生成ライブ...
-
最小公倍数をPHPで求めるには
-
メールアドレスが存在するか確...
-
Notice: Undefined offset: 1を...
-
PHP関数 mb_strlenでエラーになる
-
fsockopenの例外について
-
PHP、unpack関数でのエラー
-
エラーコードの意味を教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
PHP8を使うと、大量のWarningが...
-
トランザクションが原因?DBに...
-
ワードプレスサイト PHP8.0.25...
-
PHPで、エラーがない場合のみ画...
-
「@$変数」の「@の意味は?」
-
パースエラーとは?
-
phpでクラスのメソッドで同名の...
-
phpでget_headers()が使えない?
-
PHPでネットワークドライブのop...
-
PHPでfatal errorが出ても無視...
-
phpでPEAR::DBを使っているので...
-
awsにApacheとPHPを入れて、何...
-
error_reporting(0);にも関わら...
-
正規表現での最後尾のバックス...
-
これは例外処理でしょうか?
-
SELECTの値を保持する
-
PHPにて外部サイト内容が取得不...
-
iframeからのアクセスか、ブラ...
-
PHP mb_send_mail メール送信 5...
おすすめ情報