как использовать document.getElementById для отображения текстового поля из таблицы с помощью combobox select - PullRequest
0 голосов
/ 19 июня 2020

У меня есть поле со списком, которое собирает поля из таблицы, и я хотел бы использовать выбранный идентификатор для отображения других значений в разных текстовых полях. get Element By Id возвращает только одно поле.

    <?php
    $druglquery = "SELECT ID,DrugName,DrugForm  FROM DrugsInformation ";
    $druglresult = $mysqli->druglquery($druglquery) ; //onchange='submitForm();'
    ?>

    <select style='width:242px;'  id="dcodeID"  onchange="onselectchange();">
    <option value=''></option>
    <?php

    $row = $druglresult->fetch_array(MYSQLI_BOTH);
    printf ("%s (%s)\n", $row[0], $row["DrugName"]);

    ?>

    </select>

    <script> 
    function onselectchange() 
    {
    var d=document.getElementById("dcodeID")
    var diplaytext=d.options[d.selectedIndex].text;
    document.getElementById("test").value=diplaytext;
    alert(" ok ok");
    }


    </script>

используя тот же идентификатор, я хотел бы иметь что-то вроде ниже

    <script> 
    function onselectchange() 
    {
    var d=document.getElementById("dcodeID")
    var diplaytext=d.options[d.selectedIndex].text;
    document.getElementById("test").value=diplaytext;
    document.getElementById("test2").value=diplaytext;
    document.getElementById("test3").value=diplaytext;
    alert(" ok ok");
    }


    </script>

Ответы [ 4 ]

1 голос
/ 19 июня 2020

Если я правильно понял, то я надеюсь, что нижеследующее может предложить некоторые рекомендации, которые помогут решить проблему с вашим настоящим кодом.

<?php

    # a static array to emulate a basic recordset
    # this is just dummy data

    $drugs=array(
        array('id'=>1,  'name'=>'Abutilon','price'=>'25',       'form'=>'tablet',       'quantity'=>50,     'manufacturer'=>'ACME Drugs Corp' ),
        array('id'=>2,  'name'=>'Pramaxil','price'=>'50',       'form'=>'injection',    'quantity'=>20,     'manufacturer'=>'ACME Cybernautics Division' ),
        array('id'=>3,  'name'=>'Exylichnine','price'=>'150',   'form'=>'suppository',  'quantity'=>30,     'manufacturer'=>'ACME Corporate Greed Division' ),
        array('id'=>4,  'name'=>'BoronHydroxil','price'=>'55',  'form'=>'cream',        'quantity'=>1,      'manufacturer'=>'ACME Famine Feasibility' ),
        array('id'=>5,  'name'=>'Dexaclam','price'=>'10',       'form'=>'tablet',       'quantity'=>100,    'manufacturer'=>'ACME Drugs Corp' )
    );
?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <script>
            document.addEventListener('DOMContentLoaded',e=>{

                let oForm=document.forms.admin;

                document.querySelector('select[name="drugs"]').addEventListener('change',function(e){
                    let option=this.options[this.options.selectedIndex];

                    oForm.price.value=option.dataset.price;
                    oForm.quantity.value=option.dataset.quantity;
                    oForm.form.value=option.dataset.form;
                    oForm.manufacturer.value=option.dataset.manufacturer;
                });
            });
        </script>
    </head>
    <body>
        <form name='admin' method='post'>
            <table>
                <tr>
                    <td>
                        <select name='drugs'>
                            <option selected hidden disabled>Please select your drug
                            <?php
                                /* emulate iterating through recordset */
                                foreach( $drugs as $arr ){
                                    printf(
                                        '<option value="%d" data-price="%s" data-quantity="%d" data-manufacturer="%s" data-form="%s">%s', 
                                        $arr['id'],
                                        $arr['price'],
                                        $arr['quantity'],
                                        $arr['manufacturer'],
                                        $arr['form'],
                                        $arr['name']
                                    );
                                }
                            ?>
                        </select>                   
                    </td>
                    <td>
                        <label>Price: <input type='text' name='price' /></label>
                    </td>
                    <td>
                        <label>Quantity: <input type='text' name='quantity' /></label>
                    </td>
                    <td>
                        <label>Form: <input type='text' name='form' /></label>
                    </td>
                    <td>
                        <label>Manufacturer: <input type='text' name='manufacturer' /></label>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

document.addEventListener('DOMContentLoaded',e=>{

  let oForm=document.forms.admin;

  document.querySelector('select[name="drugs"]').addEventListener('change',function(e){
    let option=this.options[this.options.selectedIndex];

    oForm.price.value=option.dataset.price;
    oForm.quantity.value=option.dataset.quantity;
    oForm.form.value=option.dataset.form;
    oForm.manufacturer.value=option.dataset.manufacturer;
  });
});
<form name='admin' method='post'>
  <table>
    <tr>
      <td>
        <select name='drugs'>
          <option selected hidden disabled>Please select your drug
          <option value="1" data-price="25" data-quantity="50" data-manufacturer="ACME Drugs Corp" data-form="tablet">Abutilon
          <option value="2" data-price="50" data-quantity="20" data-manufacturer="ACME Cybernautics Division" data-form="injection">Pramaxil
          <option value="3" data-price="150" data-quantity="30" data-manufacturer="ACME Corporate Greed Division" data-form="suppository">Exylichnine
          <option value="4" data-price="55" data-quantity="1" data-manufacturer="ACME Famine Feasibility" data-form="cream">BoronHydroxil
          <option value="5" data-price="10" data-quantity="100" data-manufacturer="ACME Drugs Corp" data-form="tablet">Dexaclam
        </select>					
      </td>
      <td>
        <label>Price: <input type='text' name='price' /></label>
      </td>
      <td>
        <label>Quantity: <input type='text' name='quantity' /></label>
      </td>
      <td>
        <label>Form: <input type='text' name='form' /></label>
      </td>
      <td>
        <label>Manufacturer: <input type='text' name='manufacturer' /></label>
      </td>
    </tr>
  </table>
</form>
0 голосов
/ 01 июля 2020

Просматривая измененную версию ответа, который я ранее дал, я полагаю, что вы пытались сделать что-то вроде этого. В предыдущем примере я использовал только массив stati c, чтобы я мог эмулировать / mimi c типичный набор записей, а не как само решение, которое, в конце концов, действительно было Javascript!

Однако в вашем модифицированном коде вы присвоили значения из набора записей переменной $arr, но на каждой итерации через набор записей вы просто перезаписали предыдущие значения, что означало, что в конце l oop было бы одно измерение в массив.

Этот этап не нужен, когда вы обрабатываете набор записей (помните, я использовал массив только для имитации набора записей) - перебирайте $results и генерируйте меню напрямую, как и раньше (для удобства и ясности Мне нравится printf)

<?php

    error_reporting( E_ALL );
    
    $dbhost =   'localhost';
    $dbuser =   'root'; 
    $dbpwd  =   'xxx'; 
    $dbname =   'drugmgmnt';
    
    mysqli_report( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
    $mysqli= new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );
    $mysqli->set_charset('utf8');
    
    $DrugName=filter_input(INPUT_GET,'DrugName',FILTER_SANITIZE_STRING);
    $DrugForm=filter_input(INPUT_GET,'DrugForm',FILTER_SANITIZE_STRING);
    $Strength=filter_input(INPUT_GET,'Strength',FILTER_SANITIZE_STRING);
    $Units=filter_input(INPUT_GET,'Units',FILTER_SANITIZE_STRING);
    $QtyInPack=filter_input(INPUT_GET,'QtyInPack',FILTER_SANITIZE_NUMBER_INT);
    
?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <script>
            document.addEventListener('DOMContentLoaded',e=>{
                let oForm=document.forms.admin;
                document.querySelector('select[name="drug"]').addEventListener('change',function(e){
                    let option=this.options[this.options.selectedIndex];

                    oForm.Strength.value=option.dataset.strength;
                    oForm.Units.value=option.dataset.units;
                    oForm.DrugForm.value=option.dataset.drugform;
                    oForm.PackType.value=option.dataset.packtype;
                });
            });
        </script>
    </head>
    <body>
        <form name='admin' method='post'>
            <table>
                <tr>
                    <td>
                        <select name='drug'>
                            <option >Please select your drug
                            <?php
                                $sql = "select 
                                    `id`,
                                    `drugname`,
                                    `strength`,
                                    `drugform`,
                                    `units`,
                                    `packtype` 
                                from `drugsinformation`";
                                
                                $result = $mysqli->query( $sql );
                                while( $row = $result->fetch_assoc() ){
                                    printf(
                                        '<option value="%d" data-strength="%d" data-units="%d" data-packtype="%s" data-drugform="%s">%s',
                                        $row['id'],
                                        $row['strength'],
                                        $row['units'],
                                        $row['packtype'],
                                        $row['drugform'],
                                        $row['drugname']
                                    );
                                }
                            }
                            ?>
                        </select>
                    </td>
                    <td>
                        <label>Strength: <input type='text' name='Strength' /></label>
                    </td>
                    <td>
                        <label>Units: <input type='text' name='Units' /></label>
                    </td>
                    <td>
                        <label>DrugForm: <input type='text' name='DrugForm' /></label>
                    </td>
                    <td>
                        <label>PackType: <input type='text' name='PackType' /></label>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>
0 голосов
/ 29 июня 2020
based on the solution you provided i was able to recreate the code and unfortunately i have problems on when i use the combo. i only get last record from the table looped a number of records in the table, i have 5 test records and its looping the last record 4 times. from loop foreach statement all subarray variable used are bring errors as indicated on the code below is output of array generating code 

  Array ( [ID] => 6 [DrugName] => mm [Strength] => 30 [DrugForm] => ML [Units] => mg 
 [PackType] => Bx ) Array ( [ID] => 7 [DrugName] => test [Strength] => 30 [DrugForm] 
  => Box [Units] => mg [PackType] => Bx ) Array ( [ID] => 8 [DrugName] => test2 
  [Strength] => 12 [DrugForm] => ML [Units] => g [PackType] => Bt ) Array ( [ID] => 9 
  [DrugName] => test3 [Strength] => 54 [DrugForm] => ML [Units] => mg [PackType] => Bx 
  ) Array ( [ID] => 10 [DrugName] => test4 [Strength] => 54 [DrugForm] => ML [Units] 
   => mg [PackType] => Bx ) Array ( [ID] => 11 [DrugName] => test5 [Strength] => 455 
 [DrugForm] => Aerosol [Units] => mg [PackType] => Bx )







<?php


       session_start();
    // produce array

    $mysqli = new mysqli("localhost", "root", "", "drugmgmnt");

    /* check connection */
    if ($mysqli->connect_errno) {
      printf("Connect failed: %s\n", $mysqli->connect_error);
      exit();
    }



         if(isset($_GET['DrugName'])){
           $DrugName = $_GET['DrugName']; 
          }else{
        $DrugName = "";
   }

    if(isset($_GET['DrugForm '])){
  $DrugForm  = $_GET['DrugForm ']; 
   }else{
  $DrugForm  = "";
   }

     if(isset($_GET['Strength '])){
     $Strength  = $_GET['Strength ']; 
     }else{
    $Strength  = "";
    }

    if(isset($_GET['Units '])){
    $Units  = $_GET['Units ']; 
   }else{
    $Units  = "";
    }

    if(isset($_GET['QtyInPack '])){
    $QtyInPack  = $_GET['QtyInPack ']; 
    }else{
   $QtyInPack  = "";
    }


   if(isset($_GET['ID '])){
   $ID  = $_GET['ID ']; 
   }else{
   $ID  = "";
   }





   $druglquery = "SELECT ID,DrugName,Strength,DrugForm,Units,PackType  FROM DrugsInformation ";
  
   if  ($result = $mysqli->query($druglquery))

    
       $arr = Array();
 
    while ($row = $result ->fetch_assoc())
    {
    $arr['ID'] = $row['ID'];
    $arr['DrugName'] = $row['DrugName'];
    $arr['Strength'] = $row['Strength'];
    $arr['DrugForm'] = $row['DrugForm'];
    $arr['Units'] = $row['Units'];
    $arr['PackType'] = $row['PackType'];
    print_r($arr);  /* i used this to view the array generated above*/

    }



   ?>
  <!DOCTYPE html>
  <html lang='en'>
   <head>
    <meta charset='utf-8' />
    <script>
        document.addEventListener('DOMContentLoaded',e=>{

            let oForm=document.forms.admin;

            
   document.querySelector('select[name="drug"]').addEventListener('change',function(e) 
        {
                let option=this.options[this.options.selectedIndex];

                oForm.Strength.value=option.dataset.Strength;
                oForm.Units.value=option.dataset.Units;
                oForm.DrugForm.value=option.dataset.DrugForm;
                oForm.PackType.value=option.dataset.PackType;
            });
        });
        </script>
       </head>
    <body>
       <form name='admin' method='post'>
        <table>
            <tr>
                <td>
                    <select name='drug'>
                        <option >Please select your drug
                        <?php
                            /* emulate iterating through recordset */
                            
                            
                            foreach( $arr as $d ){
                        //  when i use subarray to below variables i get undefined 
        'ID' and the above foreach loops only the last record 
                           printf(
                                  '<option value="%d" data-Strength="%d" data- 
        Units="%d" data-PackType="%s" data-DrugForm="%s">%s', 
                                   $arr['ID'], /* when i use ($d['ID']) i get this 
        error on all be variables Illegal string offset 'ID*/
                                  $arr['Strength'],
                                   $arr['Units'],
                                   $arr['PackType'],
                                   $arr['DrugForm'],
                                  $arr['DrugName']
                               );
                           }
                        ?>
                    </select>                   
                </td>
                <td>
                    <label>Strength: <input type='text' name='Strength' /></label>
                </td>
                <td>
                    <label>Units: <input type='text' name='Units' /></label>
                </td>
                <td>
                    <label>DrugForm: <input type='text' name='DrugForm' /></label>
                </td>
                <td>
                    <label>PackType: <input type='text' name='PackType' /></label>
                </td>
            </tr>
        </table>
       </form>
       </body>
     </html>
0 голосов
/ 19 июня 2020
   <form id="customForm" method="get" action="" >   

   <?php
   require_once('../connection/config.php');    
   ?>

   <td width="" valign="top"><span class="mandatory">*</span> Drug Name <br>
                    <div><?php 
                    if ($SavedDrug !="")
    {       
    $DLNames=Getdrugname($SavedDrug);
    ?>
    <div class="notice">
    <?php 
    echo '<strong>'.$DLNamed.'</strong>';
    echo"<input name='dcode' type='hidden' value='$SavedDrug' />";?>
    </div>
    <?php
    }
        else
        {   ?>  
              <?php
     $druglquery = "SELECT ID,DrugName,DrugForm  FROM DrugsInformation ";
       $druglresult = $mysqli->query($druglquery) ; //onchange='submitForm();'
     ?>

     </div>
      <select style='width:242px;'  id="dcodeID"  onchange="onselectchange();">
      <option value=''></option>
          <?php

          $row = $druglresult->fetch_array(MYSQLI_BOTH);
     {       $dID = $row['ID'];
        $dname = $row['DrugName'];
        $dform = $row['DrugForm'];
          ?>

     <option value="<?php echo  $dID; ?>"><?php echo $dname; ?><?php echo $dform; ?> 
  </option>

        <?php
        }?>
        </select><span id="dcode"></span>


              <?php
         }
    ?>
    </td>            

    <td > Drug Form <br>
            <input type="text" name="$DrugForm " id="$DrugForm " class="text" 
    size="25" value="" /><br> <span id="msgbox1"></span><span id="msgbox" 
    style="display:none" 
    ></span></td>

    <td > Quantity in Pack <br>
    <input type="text" name="$qty " id="$qty " class="text" size="25" value="" /><br> 
    <span id="msgbox3"></span><span id="msgbox2" style="display:none" ></span></td>             

      </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...