0

こんにちは、これまでこのコード行を使用しようとしていました。私の目標は、selectを使用してページをリロードし、selectが値を取得して、ページが上記の値でリロードされるようにすることです。これらは両方とも1つの形式です。これは、リロードされたときに使用される値を取得する必要がある場所です。

    <input type="hidden" name="student_id" class="typed" readonly="readonly" value="<?php echo @$get_display->student_id;?>">

そして、これは私が上記の値を取得するときにページをリロードするために使用しようとしているものです。

    <select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

どんな助けでもありがたいですありがとう。

これが私が取得する方法です。最後のステートメントで問題が発生しました。リロードすると値を取得することになっています。

   if (!empty($_POST['searchstudent'])){
                $id = $_POST['searchstudent'];

            }else if(!empty($_GET['id'])){
                $id = $_GET['id'];
            }
            else {
                $id= $_GET['student_id'];
            }
4

3 に答える 3

1

あなたが書くとき

<select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

実際には、ページに移動したのと同じstudent_idに移動します。

あなたがしたいのは、「ユーザーがどのstudent_idを選択したか」を尋ねることです。次のページの読み込みでそれを使用します。

HTMLは次のようになります

<form action="search_enroll.php">
    <select name="id" onchange="submit()">
       <option> student_id_1 </option>
       <option> student_id_2 </option>
        ...
    </select>
</form>

問題があれば教えてください。

これは、リロードをシミュレートするためのJSFiddleです。(「search_enroll.php」が存在しないため、404が表示されますが、リロードが機能することを確認できます。)

編集:この選択の目的を説明した後、「非表示」入力フィールドを追加します

2つのフィールド(student_id、grade)がある場合は、フォームに非表示の入力フィールドを追加する必要があります。フォームは次のようになります。

<form action="search_enroll.php">
        <input value="<?php echo $_GET['student_id']?>" type="hidden"/>
        <select name="grade" onchange="submit()">
           <option> student_id_1 </option>
           <option> student_id_2 </option>
            ...
        </select>
</form>

これにより、ユーザーが以前に選択したstudent_idが別のリロードに渡されるようになります。

于 2012-08-20T15:23:39.697 に答える
0

フォームを使用している場合は、変更時にフォームを送信できます。

onchange="document.yourForm.submit()"

すべてのパラメーターは、PHPスクリプトで使用できます。

于 2012-08-20T15:18:55.143 に答える
0

PHPはページの生成時に入力されるため(サーバー応答)、要素でPHPを使用する必要はありませんselectが、要求がサーバーに送信されるときに入力しようとしています。

最も簡単なのは、を使用して、そのフィールドが変更されたときに存在する値を使用してフォームを送信することonchange="document.aForm.submit()"です。サーバー側の検証では、これが部分的な送信であり、エラーメッセージがユーザーに表示されないことを理解できる必要があります。


ポスターの質問に答えて:

次の一連のイベントがあります。

  1. クライアントはフォームページを要求します。
  2. サーバーは応答を送信し、select要素には要素が入力されoptionます。
  3. クライアントはoption要素のselect要素を選択します。
  4. クライアントは、(どういうわけかoption)選択されたものを含むサーバーにリクエストを送信します。
  5. optionサーバーは、いくつかのフォーム要素が変更され、最後の要求でクライアントによって選択された要素が事前に選択された状態で応答を送信します。

サーバーは、ステップ1で要素のonchange属性を事前入力できません(クライアントが選択を変更する可能性があるため、ステップ5では入力しないでください)。selectサーバーは、クライアントがステップ3で選択し、その選択をステップ4でサーバーに送信するまで、クライアントがどのオプションを選択するかを知りません。

私や他の人がsubmit()代わりに提案する理由window.locationは、フォームの場合、クライアントが任意の順序でフィールドに入力するか、後でフィールドを前に追加する可能性があるためですselect。この場合、これらの選択を保持することが望ましいです。PHPがフォームの生成時にオブジェクトsubmitからすべてのフィールドを取得する場合、それらを保持します。POSTを使用するwindow.locationと、リクエストに含まれていないものはすべてGET失われます。

を使用する場合window.locationは、JavaScriptを使用してoption、パスに選択された値(のようなもの?id=document.aForm.selectElement.options[document.aForm.selectElement.selectedIndex])を取得する必要があります。

于 2012-08-20T15:21:21.323 に答える