2016-07-14 8 views
0

私はPHPとhtmlの初心者です。私はC++とCでもっとプログラミングしています。私は、人々が日時を選択するためのスケジュールされた日付のリストを持つwebformを持っています。そのラジオボックス。人々は1週間にスケジュールのリストから選ぶことになる。したがって、5日間以上で約50のタイムスロットが選択できます。phpフォームデータアクセスと滞在ページ

コードは(ファイル内generateslots.phpを言う)、このようなものです:私が何をしようとしています何

<form name = "input" action = "execute_databaseupdate.php" method = "post"> 

<? php 

    <tr> 
    <td><?php echo $today ?></td> 
    <td><?php echo $weekday ?></td> 
    <td><?php echo $slottime.'-'.$endtime; ?></td> 
    <td><input type="checkbox" name="check_list[]" value="<?php echo $id; ?>"></td> 
           <td><?php echo $SumId; ?></td> 
    </tr> 
    ?> 



<input type="submit" name = "submit" id = "sub" value="Submit" > 

は、提出時に、スロットの少なくとも一定数が選択されていることを確認してくださいということです。特定の数のスケジュールが選択されていない場合は、ユーザーに警告してページにとどまります。そのためには、選択したすべてのスロットにアクセスする必要があります。

foreach($_POST['check_list'] as $check){ 
echo $check; 
} 

がどのように私は同じファイルgenerateslots.phpにしている場合、データにアクセスすることができますように私はexecute_databaseupdate.phpファイル内のすべてのポストされたデータにアクセスすることができますし、私は何かを使用して$ _POSTスーパーグローバルを使用しないこと条件が満たされている場合は実行を許可し、警告メッセージをポップアップしてからSAMEページに滞在します。私は次のことを試みた

<form name = "input" action = "execute_databaseupdate.php" method = "post" onSubmit = "return CheckData();"> 

CHECKDATA関数において、Iは、上記のようなデータにアクセスが、スーパーグローバルポストは空です。私は提出時にチェックされた要素にアクセスする必要があり、私はcheck_list配列で作業しなければならないと信じています。

empty($_POST['check_list']) 

がtrueを返します。私は、submitlをクリックした後、generatelots.phpファイル自体に送信されたデータにアクセスしてユーザに警告し、彼がアクティブであることをチェックしたオプションをさらに保持する方法を理解できないと思います。

<form name = "input" action = "generateslots.php" method = "post"> 

そのフォーム送信を処理するためのコードに移動することになる。

-Thanks、

+0

ユーザー入力を検証し、結果に応じてユーザーをリダイレクトするには、Javascriptを調べる必要があると思います。 – ybce

+1

申し訳ありません@ybce。私は今あなたの返事を見た。 Stack Exchangeにも慣れてきたので見落としてしまいました。あなたの返信を感謝し、リンクに感謝します。 – Wanderer

答えて

1

generateslots.phpPOSTデータにアクセスするために、フォームは、generateslots.phpに投稿する必要がありますそのページは、一般的にあなたが持っているものに類似したものに包まれています:

if (isset($_POST['check_list'])) { 
    // process the form post 
} 
// show the form 

「フォーム投稿を処理する」が成功した場合、ユーザーを別のページにリダイレクトして、このページの残りのコードを本質的に取り消すことができます。

「フォームを表示している」場合は、そのデータが存在する場合は、POSTのデータに基づいてフォーム要素とその他のものを事前に選択できます。


質問は必要な詳細について少し明るいので、現在あなたが現在やっていることの性質をほとんど推測しています。 (例えば、CheckData()は何ですか。)しかし、これは新しいWeb開発者が直面する非常に一般的な問題のようです。特にウェブ以外のバックグラウンドからのもの。

しかし、基本的に、あなたは何をしているあなたのような現在やって音がgenerateslots.phpページが初掲載されての前にある、レンダリングされているときにPOSTデータにアクセスしようとしています。このような操作の順序:

  • ユーザーgenerateslots.php
  • Serverは、フォームPOSTデータを探しなし
  • サーバーが返す
  • ユーザーが代わりにexecute_databaseupdate.php

にフォームを送信するフォーム見つかっ要求し、あなたは次のようなことをするかもしれません:

  • ユーザーはgenerateslots.php
  • Serverは
  • ユーザーがサーバーに成功し、サーバはへのリダイレクトを返す場合、フォーム
  • を処理し、フォームが掲載されて見ている
  • generateslots.phpにフォームを送信する新しい空のフォームを示し、no形式が掲載されていない見ている要求します次のページエルス
  • 、サーバは(これまでに知られているデータとの)フォームを返す

それを行うには、もちろん、他の方法があります。コードのメンテナンス、APIの純度、個人的な好みのバランスをとることがよくあります。これらは、必要に応じて時間内に発見できるすべてのものです。しかし、要点は、提出されたページでフォーム提出を処理することです。

+0

多くのありがとう@David。それがスポットだった。それはまさに私がやろうとしていることです。 CheckDataは、_POSTデータをループし、希望の条件に基づいて真または偽のいずれかを返すもう1つの試行です。これが継承されているので、あまりコードを変更したくないので、私はいくつかのアドオンを実行しています。しかし、私は構造を少し変えなければならないと思う。私は最初にそれを同じページに提出しようとして、提案したようにリダイレクトします。再度ありがとう – Wanderer

+0

私はフォームをリダイレクトすることができました。しかし、私はまだ小さな問題があります。最初にhtmlspecialcharactersとPHP_SELFを使用して提案したのと同じページに投稿しようとしましたが、ポストデータをループして、選択したスロットの数に基づいて次の処理すなわちデータベースのリダイレクトと更新を決定しました。しかし、ユーザが所望のスロット数よりも少ないスロットを選択した場合にも、何をしたいかは、警告メッセージを促すだけでなく、ユーザが警告ボックスを閉じると、ユーザが既に選択したいくつかのオプション?ありがとう – Wanderer

関連する問題