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