0

私が作成したフォームに問題があり、ページ全体をリロードしていないように見えますが、フォームのある部分だけをリロードしているようです。switch ステートメントを使用してさまざまなタブ選択をロードする MVC メソッドを使用しています。

関連するビットは次のとおりです。

最初に、ロールが設定されているかどうかを確認するとともに、ユーザー状態変数を確認します。これはすべて if 選択でうまくいくようです。送信後、含まれている適切なページが読み込まれます。

if ($user_state == "6" && empty($user_role))
            {
            $role_or_overview = 'Select Role';
            $role_or_overview_page = './php/select_role.php';
            }
            else
            {
            $role_or_overview = 'Overview';
            $role_or_overview_page = './php/overview.php';
            }

これは、どのphpスクリプトをタブにロードするかを選択するswitchステートメントにつながります...

switch($user_menu) {
            default:

            case($role_or_overview):
            include($role_or_overview_page);
            break;

            case('User Submit'):
            include('./php/user_entry.php');
            break;
                   }

その switch ステートメントは、表示するタブを決定する別のステートメントに関連付けられています。これらは両方とも、インクルードとしてページ コード全体の先頭付近、フォームの前に発生します。

switch($user_state)
{
 default:

echo '<div class="nav">'; // start div nav
div_button('', 'Overview', $user_menu);
echo '</div>'; // end div nav

echo '<div class="clear-both">';
echo '</div>';
 break;

case '0':
// Regular User Menu

echo '<div class="nav">'; // start div nav
div_button('', 'Overview', $user_menu);
echo '</div>'; // end div nav

echo '<div class="nav">'; // start div nav
div_button('menu', 'User Submit', $user_menu);
echo '</div>'; // end div nav

echo '<div class="clear-both">';
echo '</div>'

}

シンプルなフォームで、ユーザーは役割と自己投稿を選択できます...

echo '<form action = "./" method = "post" name="role_select">';
echo '<input type="hidden" name="post_role" value="ROLE1">';
echo '<input type="submit" name="DEPT" value="ROLE1">';
echo '</form>';
echo '<form action = "./" method = "post" name="role_select">';
echo '<input type="hidden" name="post_role" value="ROLE2">';
echo '<input type="submit" name="DEPT" value="ROLE2">';
echo '</form>';

インデックスの上部で、投稿された値を確認し、表示したいタブが表示されるようにユーザー状態を設定します

if ($_POST['post_role'])
{
$user_role = mysql_real_escape_string($_POST['post_role']);
$user_state=0;
}

私が直面している問題は、フォームを送信した後、ローカライズされているようです。いくつかのテストエコーをセットアップしましたが、値は含まれているフォームページに到達しますが、タブがクリックされるまで (またはデバッグのために PHP スクリプトを変更しない場合はフォームが 2 回クリックされるまで) ページ全体には到達しません)。

意図的に省略したコードがたくさんありますが、すべて機能します。$user_menu は、タブの名前/値を渡す簡単な方法であり、同じページで選択してロードできるようにします。この役割を適切に投稿して、新しいスイッチ ケースを選択することができません。

どんな助けでも大歓迎です!

4

0 に答える 0