PHP $ _POST数组,包含多行

时间:2017-02-19 09:44:38

标签: php html mysql

我一直在阅读PHP中由$_POST创建的数组。我知道如果我提交一个包含以下输入ID, Name, Date的表单,我将会得到一个包含$_POST = array('IDNo', 'Name', 'Date', 'State')的数组。 我试图达到的目的是,我将同时提交多个IDNo, Name, Date, State个实例。

我确信我可以在提交数据后对其进行处理和清理,但我不确定如何将数据放入多行数据中。

<form method="post" action="test.php">
    <input type="hidden" name="IDNo" />
    <input type="text" name="Name" />
    <input type="text" name="Date" />
    <input type="radio" name="State1" />

    <input type="hidden" name="IDNo" />
    <input type="text" name="Name" />
    <input type="text" name="Date" />
    <input type="radio" name="State2" />

    <input type="hidden" name="IDNo" />
    <input type="text" name="Name" />
    <input type="text" name="Date" />
    <input type="radio" name="State3" />

    <input type="submit" value="Test Me" />
</form>

您会注意到的一件事是,无线电输入的每一行都有一个唯一的名称。这与页面上实现的一些jquery有关。我已经看过使用IDNo[]Name[]等,因为这会在$ _POST数组中创建数组,但我在收音机上的唯一输入名称不能用于此,就像每个收音机一样输入将是一个不同的数组

我是否可以更好地将IDNo或行号附加到每个输入名称,或者是否有其他方法可以解决这个问题,我还没有看到?

也许在HTML中将State1更改为state[1]并将IDNo, Name, Date更改为ID[1], Name[1], Date[1]。 对我而言,关键是我在没有创造任何不安全因素的情况下正确地做到了。

2 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点。 一个是:

<?php $states = array(1,2,3); ?>
<form method="post" action="test.php">
   <?php foreach ( $states as $state ) : ?>
        <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[IDNo]" />
        <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[Name]" />
        <input type="hidden" name="<?php echo 'state['.$state.']'; ?>[Date]" />
        <input type="hidden" name="<?php echo 'state['.$state.']'; ?>" />
    <?php endforeach; ?>
    <input type="submit" value="Test Me" />
</form>

您可以使用$_POST['state'][1]['Name']

等代码访问这些值

您可以展开$states数组以保存更多信息。

答案 1 :(得分:0)

这是一个很好的问题〜

我认为在使用表单发送http数据包时,它只能使用不同的名称属性〜