2012-07-19 35 views
1

從php內部,我有一個大的html <form>填寫了來自postgres數據庫的病人信息的很多行。當醫生雙擊一行時,它會在$_POST中設置一個var,並調用另一個php腳本來從數據庫中讀取並顯示有關該行的特定信息。這一切都有效。使用一個<form>的選擇飼餵到另一個<form>?

但是現在有很多行患者數據,醫生不想滾動並滾動查找他們要查找的患者行,他們希望患者預過濾器<form>,以便點擊某個元素它將導致大顯示器被過濾到患者的行。

這樣做的基本方法是什麼?我是一個新人;我目前使用HTML,PHP和一些JavaScript。

+0

你的php/javascript現在看起來像什麼? – ply 2012-07-19 03:16:13

+1

在鏈接到詳細信息的每一行上創建超鏈接。我會使用查詢字符串,而不是發佈。 – 2012-07-19 03:25:03

回答

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`;"; 
} 

(請確保您的SAN itize字符串!)

我建議你考慮一個JS框架,以使您的生活更容易(例如,jQuery的將允許您通過.serialize()通過POST發送這個還是很容易把它序列化到一個GET查詢字符串)

+0

謝謝,這非常有幫助。我基本上工作了! – 2012-07-20 03:13:44

+0

很高興我能幫到你。 – bkconrad 2012-07-20 06:18:51

相關問題