计算 PHP 中具有相同名称的输入字段的数量?
Count amount of inputfields with the same name in PHP?
我想计算名称为 "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>
但是如果我 运行 它我得到无限的数字。我是犯了错误还是有其他方法可以做到这一点?
你在循环之前只设置了一次$termin_von。
$termin_counter = 1;
while(true) {
$termin_von = 'termin'.$termin_counter.'_von';
if(!isset($_POST[$termin_von])) break;
echo $termin_counter++;
}
你的 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 循环中。
我想计算名称为 "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>
但是如果我 运行 它我得到无限的数字。我是犯了错误还是有其他方法可以做到这一点?
你在循环之前只设置了一次$termin_von。
$termin_counter = 1;
while(true) {
$termin_von = 'termin'.$termin_counter.'_von';
if(!isset($_POST[$termin_von])) break;
echo $termin_counter++;
}
你的 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 循环中。