PHP - 获取数据库输入的字段输入数

Posted

技术标签:

【中文标题】PHP - 获取数据库输入的字段输入数【英文标题】:PHP - Get number of field inputs for database input 【发布时间】:2019-07-10 22:39:28 【问题描述】:

我有一个如下所示的表单:

<form method='POST' name='form2' action='./index.php' class='form-horizontal'>
<input type='hidden' name='savedata' value='true'>

    <div class='row'>
        $numOfCols = 4;
        $rowCount = 0;
        $bootstrapColWidth = 12 / $numOfCols;
        $i=1;
        for ($x=1;$x<=8;$x++) 

            <div class='col-md-".$bootstrapColWidth ." col-xs-12 margin-bottom-30'>
                <strong><p>".$i.". Data</p></strong>
                <div class='col-sm-12'>
                    <div class='form-group' id='form_firstname_".$i."'>
                        <label for='name'>Firstname:<span class='red'>*</span></label>
                        <input class='form-control' id='firstname_".$i."' name='firstname_".$i."' type='text'>
                    </div>
                </div>

                <div class='col-sm-12'>
                    <div class='form-group'>
                        <label for='name'>Lastname:<span class='red'>*</span></label>
                        <input class='form-control' id='lastname_".$i."' name='lastname_".$i."' type='text'>
                    </div>
                </div>


                <div class='col-sm-12'>";
                    <div class='form-group' id='form_praefix_".$i."'>
                        <label for='name'>Field A:<span class='red'>*</span></label>
                        <input class='form-control' id='field_a_".$i."' name='field_a_".$i."' type='text'>
                    </div>
                </div>

                <div class='col-sm-12' id='form_postfix_".$i."'>
                    <div class='form-group'>";
                        <label for='name'>Field B:<span class='red'>*</span></label>
                        <input class='form-control' id='field_b_".$i."' name='field_b_".$i."' type='text'>
                    </div>
                </div>
            </div>

            $rowCount++;
            $i++;
            if($rowCount % $numOfCols == 0) 

            </div> <div class='row'>
            

        

    </div>

<input type='submit' id='btn_submit' class='btn btn-primary' value='Save data'>
<form>

如您所见,我有一个for-loop,它显示相同字段的 8 倍。如果他只输入一个人或最多八人,则由用户决定。

表单会以这种方式提交:

if ($savedata=="true") 

    /* create db connection */
    $link = mysqli_connect("localhost", "USER", "PASSWORD", "DATABASE");

    // check connection
    if($link === false)
        $error_db_connection=1;
    

    // insert entries into database
    for ($run=1;$run<=8;$run++) 

        $var_firstname="firstname_".$run;
        $var_lastname="lastname_".$run;
        $var_field_a="field_a_".$run;
        $var_field_b="field_b_".$run;

        $sql = "INSERT INTO TABLENAME (firstname, lastname, praefix_title, postfix_title) VALUES ('".$$var_firstname."', '".$$var_lastname."', '".$$var_field_a."', '".$$var_field_b."')";
        if(mysqli_query($link, $sql))
            $success=1;
         else
            $error=1;
        
    

    // close connection
    mysqli_close($link); 


我再次使用了一个 for 循环,其中循环的总数现在是硬编码的 (8)。我需要实现的是,硬编码的循环总数是动态的。因此,如果用户填写了 3 倍的字段(名字、姓氏、field_a、field_b),那么我的数据库中应该只插入 3 条记录。如果用户填写了所有 8 个字段,则应该在我的数据库中插入 8 条记录。

现在我的数据库中总是有 8 个条目,如果用户只填写一个条目也是如此。你能帮助我如何实现我所需要的吗?

每个表单域都有自己独特的nameid,因为我正在计算$i。也许我需要发送一个包含填充字段总数的隐藏字段?如果是这样,我该怎么做?还是其他方法?

【问题讨论】:

名称不应该是唯一的,而是数组。像 field_a[]。然后使用 foreach 您将循环与用户填写的字段一样多 谢谢。我明白你的意思,但你能告诉我,一旦我将所有名称字段更改为 [],foreach 循环应该是什么样子? 【参考方案1】:

在sql插入语句之前,插入类似

if ( empty( $$var_firstname ) ) 
    break;

这会检查是否设置了值,如果没有设置,则退出 for 循环。您可能希望进行更多验证检查,例如检查名字、姓氏、a 和 b 以确保它们都是空的。

【讨论】:

以上是关于PHP - 获取数据库输入的字段输入数的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 提供日期,使用 SQL 获取数据

我想用 jquery 获取输入字段值

php thinkphp3。2怎么获取某数据库字段的内容?

sql注入

如何使用 SQL 和 PHP 从数据库 (phpMyAdmin) 的字段中获取/请求所有值?

当用户在输入字段中输入数据时,如何从车把页面获取 jquery 中的输入文本值?