1

在 php 中,我有一个很大的 html <form>,其中填充了来自 postgres 数据库的大量患者信息。当医生双击一行时,它会设置一个 var$_POST并调用另一个 php 脚本来读取并显示数据库中有关该行的特定信息。这一切都有效。

但是现在有太多的患者数据行,医生不想滚动并滚动以找到他们正在寻找的患者行,他们想要一个患者预过滤器<form>,以便单击其中的元素将导致大显示屏过滤到该患者的行。

这样做的基本方法是什么?我是新手;我目前正在使用 html、php 和一些 javascript。

4

1 回答 1

1

使用您想要过滤的任何选项制作第二个表单,这部分将特定于您的数据,但您想要类似

<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 回答