0

次のコードがあります

<form class="form-horizontal" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" >
  <br /><div class="controls"><h1><?php echo $full_name; ?></h1></div><br />
  <?php echo printErrorMessage($errors); ?>
  <fieldset><legend>Add Subject for <u>"<?php echo $full_name; ?>"</u></legend></fieldset>

  <!-- select all courses -->
  <div class="control-group">
    <label class="control-label">Subject</label>
    <div class="controls inline">
      <select id="courses" class="input-xlarge" name="courses"  onchange="getSubj()">
        <option value="0">Courses</option>

          <?php
            $pstmt = Course::findAll();
            while($row = $pstmt->fetch(PDO::FETCH_ASSOC)){        
              echo '<option value="' . $row['id'] . '" >';
              echo $row['title'] . '</option>';
            }
          ?>


          <?php //echo displayCombo2(Course::findAll()); ?>
      </select>
    </div>
  </div>

<?php echo $couid; ?>

  <!-- select all subject -->
  <div class="control-group">
    <label class="control-label">Subject</label>
    <div class="controls inline">
      <input name="emp_id" value="<?php echo $employee_id; ?>" type="hidden" /> 
      <select class="input-xlarge" name="subject">
        <option value="0" onchange="">Subject</option>


          <?php
            $pstmt = Subject::findAll();
            while($row = $pstmt->fetch(PDO::FETCH_ASSOC)){        
              echo '<option value="' . $row['id'] . '" >';
              echo $row['title'] . '</option>';
            }
          ?>



          <?php //echo displayCombo2(Subject::findAll()); ?>
      </select>
    </div>
  </div>


  <div class="control-group">
    <label class="control-label">Description</label>
    <div class="controls">
      <input name="desc" class="input-xlarge" type="text" placeholder="Description">
    </div>
  </div>

  <div class="control-group">
    <div class="controls">
      <button type="submit" class="btn btn-primary" name="submit">Save Course</button>
    </div>
  </div>
</form>

ユーザーは、すべてのコースを含むコンボ ボックスから最初に 2 つの項目を選択できます。ユーザーがコースを選択したら、データベースに戻り、選択したコースにリンクされている科目のみを選択します。私はSQLでそれを行うことができますが、ここでそれを行う方法がわかりません.

PHP を処理するためにサーバーに送信する必要がありますか? selectつまり、タブをタグで囲んで、formそれ自体に送信し、そのサブジェクトに関連付けられている新しい値を取得できるようにします。問題は、これがすでにフォーム内にあることです。

どうすればこれを達成できますか?

以下は、データを取得するために試したjqueryコードですが、そのページはその特定のページのものを処理し、たとえばエコーバックのみを返すため、説明するのは困難です

<script type="text/javascript">
  function getSubj(){
    var courseID = $('#courses').val();
    $.post('getSubjects.php', {postCourseID:courseID}, 
          function(data){
            if(data>="1"){
              $('#res').html(data);
            }
          });

    //alert("working wit ooooooo " + courseID);
  }
</script>

問題は、PHPの「データ」(関数(データ))に保存されている値を保存して、何かを実行できるようにする方法です

ありがとう

4

1 に答える 1

1

あなたの疑いは正しいです。目的を達成するには、別のフォームを作成し、それを PHP スクリプトに送信する必要があります。これは、PHP のようなサーバー側言語の特徴の 1 つです。データの送信はユーザーが開始し、ページを完全にリロードする必要があります。

これは、設計上の制限と見なすことができます。そのため、多くのサイトでは、サーバー側スクリプトを JavaScript などのクライアント側スクリプトで補っています。( jQueryは、JavaScript の使用を容易にする人気のある JavaScript フレームワークです) AJAXと呼ばれる方法論を使用してこれを行うことができます。

AJAX は基本的に、ボタンのクリックや select 要素からの特定の値の選択などのアクションによって、クライアントがサーバー側スクリプトへの呼び出しを開始できるようにするさまざまな Web テクノロジの組み合わせです。この呼び出しはバックグラウンドで行われるため、ユーザーはそれが行われていることを知る必要さえありません。次に、返されたサーバー側のデータを使用して、JavaScript を介してページをリアルタイムで更新できます。

私が好むのは、jQuery ライブラリによって提供される.ajax()関数を使用することです。これはかなりきれいで痛みのない実装です。実装に関する具体的な情報については、上記のリンクのドキュメントを参照してください。

于 2013-05-28T15:21:04.717 に答える