在php中,我有一个大的html <form>
,其中包含来自postgres数据库的大量患者信息。当医生双击一行时,它会在$_POST
中设置var并调用另一个php脚本来读取并显示有关该行的特定信息。一切正常。
但现在有如此多的患者数据行,医生不想滚动和滚动查找他们正在寻找的患者行,他们想要一个患者预滤器<form>
以便点击其中的元素将导致大显示过滤到该患者的行。
这样做的基本方法是什么?我是个新手;我目前正在使用html,php和一些javascript。
答案 0 :(得分: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发送它或通过.serialize()
轻松地将它序列化为GET查询字符串)