[英]Set value from database to textbox based on search by id
請幫我解決這個問題。 我有下面的代碼:
<script>
function getXMLHTTP() {
var xmlhttp = false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e)
{
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getCity(url, id1) {
var req = getXMLHTTP(url);
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById(id1).value=req.responseText;
// document.getElementById(id2).value=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", url, true);
req.send(null);
}
}
</script>
<?php
echo "
<tbody>
<tr>
<td class='td'><input type='text' size='6' name='kode_barang" ."' maxlength='6' onchange='javascript:this.value=this.value.toUpperCase();' onkeyup='getCity(\"search.php?kode_barang=\"+this.value, \"nama_barang" . "\",\"harga_barang" . "\");' id='kode_barang'></td>
<td class='td'><input type='text' size='22' name='nama_barang" . "' id='nama_barang" . "' readonly tabindex='1'></td>
<td class='td'><input type='text' size='22' name='harga_barang" . "' id='harga_barang" . "' tabindex='1'></td>
</tbody>
";
?>
search.php文件:
include_once('config.php');
if (isset($_GET['kode_barang']))
{
$qry = "SELECT nama_barang, harga_barang FROM t_barang WHERE kode_barang = '" . $_GET['kode_barang'] . "'";
$sql = mysql_query($qry);
$ary = mysql_fetch_array($sql);
echo $ary['nama_barang'];
echo $ary['harga_barang'];
}
這是關於如何基於kode_barang輸入來查找nama_barang和harga_barang。 例如,如果我在文本框kode_barang中輸入kode_barang,則在text_box中,nama_barang和harga_barang將自動設置數據庫中的信息。
我已經在此代碼中嘗試過,但是它在1個文本框nama_barang中設置了2個信息(nama_barang和harga_barang)。 應該在每個文本框中設置。
因此,我的問題是:如何設置數據庫中每個文本框的信息nama_barang和harga_barang?
感謝您的幫助。 謝謝。
將php文件從:
echo $ary['nama_barang'];
echo $ary['harga_barang'];
至
echo json_encode($ary);
並從更改您的JS功能
document.getElementById(id1).value=req.responseText;
document.getElementById(id2).value=req.responseText;
至
var response = JSON.parse(responseText);
document.getElementById(id1).value=response.nama_barang;
document.getElementById(id2).value=response.harga_barang;
用以下代碼替換getCity()函數
function getCity(url, id1, id2) {
var req = getXMLHTTP(url);
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
var res = JSON.parse(req.responseText);
document.getElementById(id1).value=res.nama_barang;
document.getElementById(id2).value=res.harga_barang;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", url, true);
req.send(null);
}
}
並替換search.php中的部分代碼
從
$ary = mysql_fetch_array($sql);
echo $ary['nama_barang'];
echo $ary['harga_barang'];
至
$ary = mysql_fetch_array($sql);
echo json_encode($ary);
問題是,您缺少getCity()函數中第二個文本框的ID。
替換以下部分
if (isset($_GET['kode_barang']))
{
$qry = "SELECT nama_barang, harga_barang FROM t_barang WHERE kode_barang = '" . $_GET['kode_barang'] . "'";
$sql = mysql_query($qry);
$ary = mysql_fetch_array($sql);
echo $ary['nama_barang'];
echo $ary['harga_barang'];
}
與
if (isset($_GET['kode_barang']))
{
$qry = "SELECT nama_barang, harga_barang FROM t_barang WHERE kode_barang = '" . $_GET['kode_barang'] . "'";
$sql = mysql_query($qry);
if (mysql_num_rows($sql) > 0)
{
$ary = mysql_fetch_array($sql);
echo json_encode($ary);
}
else
{
echo json_encode(array("nama_barang" => "", "harga_barang" => ""));
}
}
*這不是最佳做法,因為它會為每個keyup事件發出數據庫請求。 但可以幫助您解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.