2017-11-05 3 views
0

기본적으로 'Kode Barang'(아이템 ID)과 'Nama Barang'(아이템 이름)이라는 두 개의 열이있는 테이블이 있습니다. 첫 번째 열은 데이터가 다른 테이블에서 동적으로 채워지는 드롭 다운 옵션입니다. 사용자가 항목 ID를 선택하면 두 번째 열에 항목 이름이 자동으로 표시됩니다.드롭 다운 선택에 따라 자동으로 데이터 표시

의 내가 아래에이 코드로 두 행을했습니다 가정 해 봅시다 :

<HTML> 
<table id="theTable" border="1"> 

<thead> 
    <tr> 
     <th> Kode Barang </th> 
     <th> Nama Barang </th> 
    <tr> 
</thead> 

<tbody> 
    <tr> 
     <td type="text" name="kode_barang" id="kode_barang"/readonly> 
      <?php 
       mysql_connect("localhost","root",""); 
       mysql_select_db("skripsi_1"); 
       $result = mysql_query("select * from input_data_barang"); 
       $jsArray = "var kode_barang = new Array();\n"; 
       echo '<select name="kode_barang" onchange="changeValue(this.value)">'; 
       echo '<option></option>'; 
       while ($row = mysql_fetch_array($result)) { 
       echo '<option value="' . $row['kode_barang'] . '">' . $row['kode_barang'] . '</option>'; 
       $jsArray .= "kode_barang['" . $row['kode_barang'] . "'] = {name:'" . addslashes($row['nama_barang']) . "',desc:'".addslashes($row['nama_barang'])."'};\n"; 
       } 
       echo '</select>'; 
      ?> 
     </td> 

     <td><input type="text" name="nama_barang" id="nama_barang"/readonly> 
      <script type="text/javascript"> 
       <?php echo $jsArray; ?> 
       function changeValue(id){ 
       document.getElementById('kode_barang').value = kode_barang[id].name; 
       document.getElementById('nama_barang').value = kode_barang[id].desc; 
       }; 
      </script> 
     </td> 
    </tr> 

    <tr> 
     <td type="text" name="kode_barang" id="kode_barang"/readonly> 
          <?php 
       mysql_connect("localhost","root",""); 
       mysql_select_db("skripsi_1"); 
       $result = mysql_query("select * from input_data_barang"); 
       $jsArray = "var kode_barang = new Array();\n"; 
       echo '<select name="kode_barang" onchange="changeValue(this.value)">'; 
       echo '<option></option>'; 
       while ($row = mysql_fetch_array($result)) { 
        echo '<option value="' . $row['kode_barang'] . '">' . $row['kode_barang'] . '</option>'; 
        $jsArray .= "kode_barang['" . $row['kode_barang'] . "'] = {name:'" . addslashes($row['nama_barang']) . "',desc:'".addslashes($row['nama_barang'])."'};\n"; 
       } 
       echo '</select>'; 
       ?> 
     </td> 

     <td><input type="text" name="nama_barang" id="nama_barang"/readonly> 
      <script type="text/javascript"> 
      <?php echo $jsArray; ?> 
      function changeValue(id){ 
      document.getElementById('kode_barang').value = kode_barang[id].name; 
      document.getElementById('nama_barang').value = kode_barang[id].desc; 
      }; 
      </script> 
     </td> 
    </tr> 
</table> 
</HTML> 

첫 번째 행은 완벽하게 작동합니다. 문제는 두 번째 행에 있습니다. 드롭 다운에서 옵션을 선택하면 항목의 이름이 두 번째 행에 나타나지 않지만 대신 첫 번째 행에 표시됩니다. 아무도 이걸 해결하는 방법을 보여 주시겠습니까? 고맙습니다.

+2

*'API 함수가 사용되지 않습니다은'mysql_로는 : 그냥 두 번째 행 "kode_barang2"와 "nama_barang2"를 설정할 때 값이 너무 이름을 변경하여 이름을 바꿉니다 '또는'PDO' – RamRaider

답변

1

당신은 사용하여 값을 추가됩니다

document.getElementById('kode_barang').value = kode_barang[id].name; 
document.getElementById('nama_barang').value = kode_barang[id].desc; 

문제는 BOTH 행의 ID의 kode_barang/nama_barang 인 요소가 있다는 것이다. ID에 2 가지 요소가 있습니다. Javascript가 appereantly 단지 첫 번째 걸릴 결정합니다. 당신이 당신의 코드를 업그레이드해야하는 중`mysqli -

document.getElementById('kode_barang2').value = kode_barang[id].name; 
document.getElementById('nama_barang2').value = kode_barang[id].desc; 
+0

시도했지만 문제가 반대가되었습니다. 두 번째 행은 완벽하게 작동합니다. 첫 번째 행은 완벽하지 않습니다. 첫 번째 행에서 옵션을 선택하면 이름이 두 번째 행에 나타납니다. – David

+0

두 번째 문제는 changeValue (id)라는 두 함수가 있다는 것입니다. 당신은 그것을 할 수 없다! 두 번째 이름을 changeValue2 (id)로 바꾸고 호출을 변경하십시오. – Basti

+0

다음과 같은 의미입니까? function changeValue2 (id) {document.getElementById ('kode_barang2'). value [2] = kode_barang [id] .name; document.getElementById ('nama_barang2'). 값 [2] = kode_barang [id] .desc; 미안, 나는 멍청이야. – David

관련 문제