根据变量获取字段数

Posted

技术标签:

【中文标题】根据变量获取字段数【英文标题】:get number of fields based on variable 【发布时间】:2015-05-18 18:14:47 【问题描述】:

我的插入看起来像这样:

function train_add() 
            $sql = "INSERT INTO train_information "
        . "(train_name, tare_weight, number_of_bogies, number_of_axles, wheel_diameter_min, wheel_diameter_max)"
        . "VALUES (:train_name, :tare_weight, :number_of_bogies, :number_of_axles, :wheel_diameter_min, :wheel_diameter_max) ";
            $sth = $this->pdo->prepare($sql);
            $sth->bindParam(':train_name', $_POST['train_name'], PDO::PARAM_STR);
            $sth->bindParam(':tare_weight', $_POST['tare_weight'], PDO::PARAM_STR);
            $sth->bindParam(':number_of_bogies', $_POST['number_of_bogies'], PDO::PARAM_STR);
            $sth->bindParam(':number_of_axles', $_POST['number_of_axles'], PDO::PARAM_STR);
            $sth->bindParam(':wheel_diameter_min', $_POST['wheel_diameter_min'], PDO::PARAM_STR);
            $sth->bindParam(':wheel_diameter_max', $_POST['wheel_diameter_max'], PDO::PARAM_STR);
            $sth->execute();    
        

我通过表格插入它:

<div id='toevoegen_trein'>
            <form action="add_train_send.php" method="post">
                <table>
                    <tr>
                        <td>Train Name:</td>
                        <td><input type="text" name="train_name" required><br></td>
                    </tr>

                    <tr>
                        <td>Tare Weight:</td>
                        <td><input type="text" name="tare_weight" required><br></td>
                    </tr>
                    <tr>
                        <td>Number of Bogies:</td>
                        <td><input type="text" name="number_of_bogies" required><br></td>
                    </tr>
                    <tr>
                        <td>Number of Axles:</td>
                        <td><input type="text" name="number_of_axles"><br></td>
                    </tr>
                    <tr>
                        <td>Wheel Diameter Minimal:</td>
                        <td><input type="text" name="wheel_diameter_min"><br></td>
                    </tr>
                    <tr>
                        <td>Wheel Diameter Maximal:</td>
                        <td><input type="text" name="wheel_diameter_max"><br></td>
                    </tr>
                    <tr>
                        <td><input type="submit" name="toevoegen" value="Next"></td>
                    </tr>
                </table>
            </form>
        </div>

add_train_send.php:

<?php
    $add_train = $database->train_add();
?>

现在。当我在表单上按提交时,它转到 add_train_send.php。 我希望该页面不仅仅将信息发送到数据库。但我也想得到车轴的数量。 (然后是他们后面的填充字段)。 现在我不知道该怎么做。因为如果轴数为 6,我只希望页面创建 6 个字段。如果轴数为 12,我希望它创建 12 个字段。

我该怎么做?

编辑:这是我希望它看起来如何的示例:

另外,在我的数据库中,我有一个名为:axle 的表 内容:

train_id
axle_id
axle
distance

它已经有一个触发器,所以当我插入一个有 12 个轴的火车时,它已经使 12 个增加了 12 个轴,我需要做的就是填写距离(参见 .png 示例)

【问题讨论】:

$database 是一个班级吗? 是(短消息哈哈) 你能把问题说得更具体些吗?您想在哪里创建新字段?它应该是什么字段以及这些字段与表单的其余部分、数据库等之间的关系是什么? 我会在模型中制作一些东西。给我一点时间哈哈 另外,你能给我们举个例子,结果应该是什么样子的吗? 【参考方案1】:

如果我理解正确,您想显示 X 数量的文本字段(或任何输入类型。X 是用户在 轴数 上输入的内容强>)

为此,您需要获取已有的轴数的值:$_POST['number_of_axles']

之后,您将执行 X 次 for 循环。我还注意到您的轴数不是必需的,但其他一些字段是必需的。所以你首先需要检查是否$_POST['number_of_axles']isset。所以你可以这样开始:

if(isset($_POST['number_of_axles']))
   for($i=0; $i<$_POST['number_of_axles']; $i++)
      echo "<input type='text' name='axles[$i]'>";
   

现在您在 for 循环之外启动表单并在 for 循环之外结束它。

编辑:

我也忘了提到name 部分。我这样声明名称:name='axles[$i]' 以确保每个文本字段都有不同的名称。现在当你检查$_POST['axles']。你会得到一个有点像的数组:

[1]=>'input_of_axle1'
[2]=>'input_of_axle2'
[3]=>'input_of_axle3'

现在您可以循环浏览它。像这样的:

$axles = $_POST['axles'];

foreach($axles as $axle)
   echo 'This is an axle:'.$axle; // I have no idea what an axle is

【讨论】:

您忘记回显该标签。这将是一个很好的日志错误:) @JánStibil 哈哈是的,我会编辑它。多么愚蠢的错误。谢谢 就是这样 :) 我希望它插入桌子上:车轴。但我确定我知道该怎么做哈哈(我希望)!

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

awk

如何以编程方式获取结构的字段数?

怎么获取enum的变量名称

怎么获取enum的变量名称

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

如何在mongo的不同字段中获取具有值的文档数