簡體   English   中英

根據ID搜索,將值從數據庫設置為文本框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM