计算 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 循环中。