1

<form>PHP 内から、postgres データベースからの患者情報の行を大量に記入した大きな htmlがあります。医師が行をダブルクリックすると、var が設定され、$_POST別の php スクリプトが呼び出されて、データベースからその行に関する特定の情報が読み込まれ、表示されます。これはすべて機能します。

しかし、患者データの行が非常に多いため、医師は探している患者の行を見つけるためにスクロールしたりスクロールしたりしたくありません。患者のプレフィルター<form>を使用して、その中の要素をクリックすると、その患者の行だけにフィルタリングされた大きな表示。

これを行うための基本的なアプローチは何ですか?私は初心者です。私は現在、html、php、およびいくつかのjavascriptを使用しています。

4

1 に答える 1

1

フィルタリングしたいオプションを使用して2番目のフォームを作成します。この部分はデータに固有ですが、次のようなものが必要です。

<form id="search-form">
  <label>Name:</label><input type="text" name="patient-name"></input>
</form>

クエリ文字列を作成する必要があります(GETを使用すると、作業が簡単になります)。ラジオボタンなどを使用する場合は、微調整が必​​要になりますが、一般的な考え方は次のとおりです。

function getSearchParameters () {
  var form = document.getElementById('search-form');
  var inputs = form.getElementsByTagName('input');
  var result = '';
  var i;
  for (i = 0; i < inputs.length; i++) {
    if (inputs[i].value) {
      result += "&" + inputs[i].name + "=" + inputs[i].value;
    }
  }
  return result;
}

患者データリンクのonClickハンドラーで、この関数を呼び出し、その結果をクエリ文字列に追加します。

element.onclick = function () {
  var patientDataUrl = '/patients.php?param1=someValue';
  patientDataUrl += getQueryParameters();
  /* then do your ajax stuff as normal */
};

次に、サーバー側で、patients.php内で、検索フィールドの存在を確認します。

if(isset($_GET['patient-name'])) {
  $patient_name = mysql_real_escape_string($_GET['patient-name']);
  $query = "SELECT * FROM `patients` WHERE `patient_name`='$patient_name';";
} else {
  $query = "SELECT * FROM `patients`;";
}

(ストリングを消毒するようにしてください!)

JSフレームワークを検討して、作業をはるかに簡単にすることをお勧めします(たとえば、jQueryを使用すると、POSTを介してこれを送信したり、を介してGETクエリ文字列に簡単にシリアル化したりできます.serialize()

于 2012-07-19T03:46:15.027 に答える