簡體   English   中英

將一個測試代碼的動態生成的文本框和下拉列表數據保存到數據庫中

[英]save dynamically generated textbox & dropdown list data for one testcode into database

我創建了一個包含測試代碼,測試名稱,測試參數為文本框和儀器代碼下拉列表的表單,並且還包含單擊添加另一個按鈕,為新的測試參數添加另一個按鈕文本框,以及新儀器的下拉列表將生成代碼,我想為單個測試代碼保存該新生成的“測試參數”文本框數據和新生成的“儀器代碼”下拉列表數據的數據。

我已創建,但無法保存動態生成的新的多個文本框數據和生成的樂器代碼下拉列表數據,請指導我。 這是我的PHP代碼:

<?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);    

    return($oMysqli);
}
    include_once "dTestCreation.php";   
    if(isset($_POST['submit'])) 
    {

    $Testcode = $_POST['testcode'];
    $TestName = $_POST['testname'];
    $Testparameter = $_POST['testparameters'];
    $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);

    $InsertQuery1 = "INSERT INTO test_table(testcode,testparameters,instrument_code) VALUES('$Testcode','$Testparameter','$Instrumentcode')";    
    $oMysqli=getConnection();       //establish connection
    $oMysqli->query($InsertQuery1);
    }
?>
<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 name=\"instrument_name\"><option value='$tResult[$kkk]'>tResult[$kkk]</option></select>";*/
    var output1="<select id=\"instrument_code\"><?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="testparameters"></input>

<label for='Instrumentcode'>Instrumentcode</label>
<select name="instrument_code">
    <?php 
    $tResult = getIname();                      for($kkk=0;$kkk<count($tResult);$kkk++) //loop for incremenet code hereted value display in listbox.
{
    echo "<option value=".$tResult[$kkk].">".$tResult[$kkk]."</option>";    
}`enter code here`
?>
    </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>

1)您錯過了名稱屬性到您自動生成的下拉列表中,因此如果沒有名稱屬性,您將無法獲取數據到php腳本中。

2)您新生成的文本框名稱= testparameters []哪個數組,因此僅使用$ _POST ['testparameters']就無法獲得價值。 為了獲得價值,您必須遍歷數組。

foreach($_POST['testparameters'] as $value) {
 // here , you get dynamically added texbox values.
}

再次嘗試循環也可以,但是仍然無法將值存儲到無法計數的下拉列表中,並且&testparameters文本框保存Array關鍵字,我在這里嘗試的是我的代碼:

<?php
    include_once "dTestCreation.php";   
    if(isset($_POST['submit'])) //when clikc on submit button
    {

    $Testcode = $_POST['testcode'];
    $TestName = $_POST['testname'];
    $Testparameter = $_POST['testparameters'];
    $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();

    $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];
            $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);

        }







    }   
?>
<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 name=\"instrument_name\"><option value='$tResult[$kkk]'>tResult[$kkk]</option></select>";*/
    var output1="<select id=\"instrument_code\" name=\"instrument_code\"><?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="testparameters"></input>

<label for='Instrumentcode'>Instrumentcode</label>
<select name="instrument_code">
                    <?php 
                        $tResult = getIname(); //call function getIname() included in file dTestCreation.php
                        for($kkk=0;$kkk<count($tResult);$kkk++) //loop for incremented value display in listbox.
                        {
                            echo "<option value=".$tResult[$kkk].">".$tResult[$kkk]."</option>";    //Instrument values display in listbox
                        }
                    ?>
    </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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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