我想用名称" termin" + number +" _von"来计算输入字段的数量。因此,如果有一个名为" termin1_von"的输入字段,则使用名称" termin2_von"第三个是名字" termin3_von"代码应该打印" 123"。因为有3个输入。我想要的是我可以通过单击按钮创建输入字段,所有输入提交将自动保存在我的MySQL数据库中(每个提交都应该有一个自己的列)。
我尝试的是以下内容:
<?php
$termin_counter = 1;
$termin_von = 'termin'.$termin_counter.'_von';
echo $termin_counter;
while(isset($_POST[$termin_von])){
$termin_counter++;
echo $termin_counter;
}
?>
这是表格
<form>
<fieldset>
<legend>Behandlungstremin</legend>
<table id="table_output">
<tr>
<th>Termin</th>
<th>von</th><th>bis</th>
<th>Datum</th>
</tr>
<tr>
<td>1.</td>
<td><input type="time" name="termin1_von" required=""></td>
<td><input type="time" name="termin1_bis" required=""></td>
<td><input type="date" name="termin1_date" required=""></td>
</tr>
</table>
<span onclick="add_termin()" name="add_termin" id="add_termin"><img src="bilder/add.png"></span>
<span onclick="remove_termin()" name="remove_termin" id="remove_termin"><img src="bilder/close.png"></span>
</fieldset>
<br>
<input type="submit" class="submit" value="Rechnug erstellen" name="submit" id="submit">
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
var termin_angabe = 1;
function add_termin() {
termin_angabe++;
var table = document.getElementById("table_output");
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
cell1.innerHTML = termin_angabe + ".";
cell2.innerHTML = '<input type="time" name="termin'+ termin_angabe+'_von" id="termin'+ termin_angabe+'_von">';
cell3.innerHTML = '<input type="time" name="termin'+ termin_angabe+'_bis" id="termin'+ termin_angabe+'_bis">';
cell4.innerHTML = '<input type="date" name="termin'+ termin_angabe+'_date" id="termin'+ termin_angabe+'_date">';
}
function remove_termin() {
if (termin_angabe > 1) {
termin_angabe--;
document.getElementById("table_output").deleteRow(-1);
}
}
</script>
</form>
但是,如果我运行它,我会得到无数的数字。我犯了错误还是有其他方法可以做到这一点?
答案 0 :(得分:0)
在循环之前只设置$ termin_von一次。
$termin_counter = 1;
while(true) {
$termin_von = 'termin'.$termin_counter.'_von';
if(!isset($_POST[$termin_von])) break;
echo $termin_counter++;
}
答案 1 :(得分:0)
此处while
循环:
while(isset($_POST[$termin_von])){
$termin_counter++;
echo $termin_counter;
}
...肯定会永远运行,因为$_POST[$termin_von]
永远不会被设置,因为$termin_von
永远不会改变。在循环之前定义它时:
$termin_von = 'termin'.$termin_counter.'_von';
它会保持原样,连续的字符串读取termin1_von
。如果稍后增加变量$termin_counter
,它将不会增加。您需要在循环的每次迭代中使用当前计数器编号定义$termin_von
。将它移到while循环中。