1

テスト コード、テスト名、テスト パラメーター、インストゥルメント コードと [テスト パラメーターの追加] ボタン、テスト コード、テスト名、テスト パラメーターはテキスト ボックス、インストゥルメント コードはドロップ ダウン リスト ボックス、[テスト パラメーターの追加] のクリックを含む 1 つのフォームを作成しました。ボタンをクリックすると、新しいテキスト ボックスと Instrument Code ドロップ ダウン リストが生成されます。実行時に作成されたテキスト ボックスの値はデータベースに保存されますが、Instrument Code の値は変更できません。新しく生成されたすべてのテキスト ボックスで同じままです。ドロップダウンリストの項目を教えていただけますか? これが私のPHPコードです:

 <?PHP
        include_once "dTestCreation.php";   
            global $Hostname;   
        global $Username;   
        global $Password;           
        global $Database_name;  

    function getConnection()    
    {
        $Hostname = "localhost";    
        $Username ="root";
        $Password ="";
        $Database_name="labdata";

        $oMysqli = new mysqli($Hostname,$Username,$Password,$Database_name);    //create connection object.

        return($oMysqli);   //return connection object.
    }
        if(isset($_POST['submit'])) //when click on submit button
    {

        $Testcode = $_POST['testcode'];
        $TestName = $_POST['testname'];
        $TestParameter = $_POST['testparameter'];
        $Instrumentcode = $_POST['instrument_code'];


        $InsertQuery = "INSERT INTO demo_test(testcode,testname) VALUES('$Testcode','$TestName')";  //query for insert data into table
        $oMysqli=getConnection();       //establish connection
        $oMysqli->query($InsertQuery);
        //print_r($InsertQuery);exit();


        $InsertQuery1 = "INSERT INTO test_table(testcode,testparameters,instrument_code) VALUES('$Testcode','$TestParameter','$Instrumentcode')";   //query for insert data into table
        $oMysqli=getConnection();       //establish connection
        $oMysqli->query($InsertQuery1);

        $length = count($_POST['testparameters']);
        for($i=0;$i<$length;$i++)
             {
                //echo $_POST['testparameters'][$i];
                $a =  $_POST['testparameters'][$i];

                $na = array('testparameters' => $a['testparameters']);
                foreach($na as $k => $v)
                {
                    $na[$k] = mysql_real_escape_string($v);
                }
                $TestParameters = $na['testparameters'];

        $TestParameters = $_POST['testparameters'][$i];
            $InsertQuery2 = "INSERT INTO test_table(testcode,testparameters,instrument_code) VALUES('$Testcode','$TestParameters','$Instrumentcode')";  //query for insert data into table
            $oMysqli=getConnection();       //establish connection
                $oMysqli->query($InsertQuery2);

            }
      } 
    ?>
    <html>
    <head>
    <title>TestData</title>
    <script type="text/javascript"> 
    function create_row()   //create function create_row
    {
        var newtr=document.createElement("tr");  //variable for tr
        var newtd=document.createElement("td");  //variable for  td 
        var newtd1=document.createElement("td"); //variable f 
        var output="<input type=\"text\" name=\"testparameters[]\">";
        var output1="<select id=\"instrument_name\" name=\"instrument_name\"><?php include_once "dTestCreation.php";    //include file dTestCreation.php 
        $tResult = getIname();  
        for($kkk=0;$kkk<count($tResult);$kkk++)
        {
            echo "<option value=".$tResult[$kkk].">".$tResult[$kkk]."</option>";    
        }//display values of instrument into list.
    ?></select>";
          newtd.innerHTML=output;  //display first td
          newtd1.innerHTML=output1; //display second td
          newtr.appendChild(newtd); //increment no of rows.
          newtr.appendChild(newtd1);
          document.getElementById("table1body").appendChild(newtr);
       }
    </script>
    </head>
    <body>

    <form name="testdetails" method="post" target="_self" action="<?php $_PHP_SELF ?>">

    <label for='Testcode'>Testcode</label>
    <input type="text" name="testcode"></input>

    <label for='TestName'>TestName</label>
    <input type="text" name="testname"></input><br></br>

    <label for='Testparameter'>Testparameter</label>
    <input type="text" name="testparameter"></input>

    <label for='Instrumentcode'>Instrumentcode</label>
    <select name="instrument_name" id="instrument_name">
      <?php 
        $tResult = getIname(); 
        for($kkk=0;$kkk<count($tResult);$kkk++) 
        {
           echo "<option value=".$tResult[$kkk].">".$tResult[$kkk]."</option>"; 
        }
      ?>
    </select>
    <table>
          <tbody id="table1body">
               <tr>
        <!--<td><input type="textfield" name="testparameters"></td>-->
             <td> <input type="button" name="button" value="Add Test Parameter" onclick="create_row()"> <!--call function create_row() for onclik add new row-->
          </tr>
        </tbody>
       </table>
       <input type="submit" name="submit" value="submit"></input>
    </form>
    </body>
    </html>
4

1 に答える 1

1

同じ名前の異なるフォーム要素がある場合 (配列を使用しないと仮定)、アクション ページへの値は send であり、その名前を持つ最後のフォーム要素の値です。

解決策 1:

  • [新しいテスト名を追加] をクリックすると、選択したドロップダウンの値が各レコード セットの非表示フィールドに書き込まれます。

解決策 2:

配列を使用するだけ

<select name = "instrument_name[]" id="instrument_name">
//php code
</select>

print_r($_POST)アクションページで行うだけで、フォーム要素ごとに配列があり、ここから値を取得できます

于 2012-09-24T12:23:05.837 に答える