我在這裏是新的,所以我希望這是有道理的,我是PHP和Ajax的新手......所以我很迷茫。使用一個文本字段來搜索數據庫,然後pupulate剩餘的字段在PHP
我有一個MySQL數據庫設置,以及在PHP中創建的幾種形式。我在其中一個表單上有幾個文本字段,應該顯示客戶信息。第一個文本(電話號碼)字段應該是一個搜索字段...所以我需要查詢我的數據庫,一旦用戶輸入手機#,查找記錄並填充剩餘的字段。
我已經嘗試過這樣做的各種方法......但沒有什麼比較正確的!似乎顯示最有前途的方法是通過使用Onblur事件來調用將執行搜索的php頁面(使用Ajax)。
這工程,因爲我可以查詢數據庫來查找結果..並讓他們顯示回來。麻煩的是,這個帶有裏面數據的頁面實際上顯示在我的第一頁中間......所以基本上我有一個網頁顯示在另一個網頁內......這顯然不是我想要的。
的基本代碼我已經是:
HTML側 -
<script>
function showUser(str) {
if (str == "") {
document.getElementById("divider").innerHTML = "";
return;
}
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
document.getElementById("divider").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "GetCustomer.php?q="+str, true);
xmlhttp.send();
}
</script>
</head>
<label for="CustPhone">Phone:</label>
<input type="text" name="CustPhone" id="CustPhone" tabindex="1" onchange="showUser(this.value)" value="<?php ?>">
<br>
<div id="divider"></div>
<label for="CustLastName">Last Name:</label>
<input type="text" name="CustLastName" id="CustLastName" tabindex="2" value="<?php echo $clast; ?>">
<label for="CustFirstName">First Name:</label>
<input type="text" name="CustFirstName" id="CustFirstName" tabindex="3" value="<?php echo $cfirst; ?>">
<p> </p>
<label for="CustAddress1">Address 1:</label>
<input type="text" name="CustAddress1" id="CustAddress1" tabindex="4" value="<?php echo $caddr1; ?>">
<label for="CustAddress2">Address2:</label>
<input type="text" name="CustAddress2" id="CustAddress2" tabindex="5" value="<?php echo $caddr2; ?>">
<p> </p>
和PHP -
include ("AddEdit.php");
require_once("customer_info.php");
function LoadData()
{
$pn = $_POST['CustPhone'];
if (strlen($Pn) < 10)
{
$query = "SELECT * FROM customer WHERE Phone='$Pn'";
$result = mysql_query($query);
if (!$result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);
$rowinfo = mysql_fetch_array($result);
if ($rows > 0)
{
$clast = $rowinfo['LastName'];
$cfirst = $rowinfo['FirstName'];
$caddr1 = $rowinfo['Address1'];
$caddr2 = $rowinfo['Address2'];
$ccity = $rowinfo['City'];
$cprov = $rowinfo['Province'];
$cpostal = $rowinfo['Postal'];
}
}
}
任何想法,我怎麼能做到這一點,而不是多跳......或者更重要的是在現有頁面上顯示數據,而不是顯示數據我的整個頁面內頁面的小版本??
Thx !!!
我曾嘗試過使用JQUERY以及......但從來沒有做過這樣的工作。我現在*幾乎*的作品。它顯示信息,但作爲頁面中的頁面。當我刷新瀏覽器時,它看起來很完美。 我以前從來沒有使用過JSON,所以我不知道它是如何工作的。我的一部分麻煩似乎是需要從一種形式跳到另一種形式...... Ajax調用到不同的PHP頁面 - 它無法訪問更新文本框;等等 – user2368555 2013-05-10 07:44:20