我正在尝试使用 MySQL 数据填充一些表单字段。
我希望能够在文本字段中输入一个值,使用该字段中的值搜索数据库,然后在不离开页面的情况下用结果填充表单字段的其余部分。
任何指导将不胜感激。
我正在尝试使用 MySQL 数据填充一些表单字段。
我希望能够在文本字段中输入一个值,使用该字段中的值搜索数据库,然后在不离开页面的情况下用结果填充表单字段的其余部分。
任何指导将不胜感激。
您可以为此使用 AJAX - 使用您的输入提交按钮来触发一个 php 文件来搜索数据库。
这使我们进入 MySQL 搜索。您将需要使用 FULLTEXT 搜索数据库(此处有大量文档http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html)。或者,如果搜索不那么复杂,您应该只使用 SELECT * WHERE。然后回显你找到的数据。
然后,AJAX 请求会将回显的内容返回给您,然后您可以使用一些 JQuery 来用您的数据填充您喜欢的任何元素。
使用 jQuery post 从数据库中获取数据
在带有输入的页面上:
$.post("pageWhereYouGetData.php", {valueYouWantToQueryTheDBWith: $("input.info").val()}, function(data){
var dataArray = data.join(", ");
//do stuff with inputs here like: $("input.moreInfo").val(dataArray[0]) which would set the value of your input to the value of the row 'row1' from the database
});
pageWhereYouGetData.php:
$results = mysql_fetch_assoc(mysql_query("SELECT row1, row2, row3 FROM table WHERE rowName = '" . mysql_real_escape_string($_POST['valueYouWantToQueryTheDBWith']) . "'"));
$data = array($results['row1'], $results['row2'], $results['row3']);
echo explode(", ", $data);
在这里,您正在创建一个填充了所需数据的数组,将其转换为字符串,然后将其回显。在 javascript 方面,您将其转换回数组(因为您不能通过 ajax 发送变量,只能发送值),然后使用该数组来填充您的输入。
这个想法是在不重新加载页面的情况下发送数据,将其转换为字符串,一旦我们获得数据就将其转换回来,然后按照我们的意愿使用它。
我最终修改了我找到的这个脚本。它不在同一页面上,但执行我需要的功能。当用户输入一个值并退出该字段时,将根据表检查该值是否匹配。然后它将结果与字段中的值一起返回到调用页面。
这与表单元素一起放置在页面中:
function showData(str)
{
if (str=="")
{
document.getElementById("txtHint").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 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","get_listing_data.php?q="+str,true);
xmlhttp.send();
}
<input type="text" name="mls_id" id="mls_id" onchange="showData(this.value)">
<div id="txtHint"></div> // this is where the populated fields appear
这是执行查询并将结果返回到第一个文件的文件 - 从第一个文件调用。
$link = mysql_connect("localhost","name","pw") or die ("No database connection - please try again later.");
$db = mysql_select_db("db", $link);
$q=$_GET["q"];
$sql="SELECT * FROM table WHERE MLS_LISTING_ID = '$q'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<input type=\"text\" name=\"agent_name\" id=\"agent_name\" value=" . $row ['MLS_AGENT_NAME'] . " readonly=\"readonly\">";
echo "<input type=\"text\" name=\"sale_price\" id=\"last_name\" value=" . $row['SALE_PRICE'] . " readonly=\"readonly\">";
echo "<input type=\"text\" name=\"street_number\" id=\"last_name\" value=" . $row['STREET_NUMBER'] . " readonly=\"readonly\">";
echo "<input type=\"text\" name=\"street_name\" id=\"last_name\" value=" . $row['STREET_NAME'] . " readonly=\"readonly\">";
}