【问题标题】:PHP Post group of repeated inputsPHP Post组重复输入
【发布时间】:2015-06-09 19:31:54
【问题描述】:

我有一个公司模型的表格。一家公司在我的模型中有一个或多个联系人,因此在我的表单中,我输入了 client_name、client_phone、client_email,我可以用我制作的一些 javascript 重复它们,这样我就可以添加任意数量的客户。我需要发布这个并将这些对象分组以便能够foreach 'em,我的意思是这样的:

client: [
    {name: "Alan", phone: "123456123", email: "alan@example.com},
    {name: "Alan", phone: "123456123", email: "alan@example.com},
    {name: "Alan", phone: "123456123", email: "alan@example.com}
]

应该如何命名输入来获得这个?

【问题讨论】:

    标签: php forms post submit


    【解决方案1】:

    如果我没看错你的问题,你可以这样做:

    <form method="post">
        <input name="client[0][name]" value="Alan">
        <input name="client[0][phone]" value="123456123">
        <input name="client[0][email]" value="alan@example.com">
        <input name="client[1][name]" value="Alan">
        <input name="client[1][phone]" value="123456123">
        <input name="client[1][email]" value="alan@example.com">
        <input name="client[2][name]" value="Alan">
        <input name="client[2][phone]" value="123456123">
        <input name="client[2][email]" value="alan@example.com">
        <input type="submit">
    </form>
    

    这将给出一个这种格式的数组,准备好json_encodeing:

    Array
    (
        [client] => Array
            (
                [0] => Array
                    (
                        [name] => Alan
                        [phone] => 123456123
                        [email] => alan@example.com
                    )
    
                [1] => Array
                    (
                        [name] => Alan
                        [phone] => 123456123
                        [email] => alan@example.com
                    )
    
                [2] => Array
                    (
                        [name] => Alan
                        [phone] => 123456123
                        [email] => alan@example.com
                    )
    
            )
    
    )
    

    另一个选项参考评论:

    <form method="post">
        <input name="name[]" value="Alan">
        <input name="phone[]" value="123456123">
        <input name="email[]" value="alan@example.com">
        <input name="name[]" value="Alan">
        <input name="phone[]" value="123456123">
        <input name="email[]" value="alan@example.com">
        <input name="name[]" value="Alan">
        <input name="phone[]" value="123456123">
        <input name="email[]" value="alan@example.com">
        <input type="submit">
    </form>
    

    以及重建数组的PHP:

    $array = array();
    foreach ($_POST['name'] as $key => $name) {
        $array[] = array(
            'name' => $name,
            'phone' => $_POST['phone'][$key],
            'email' => $_POST['email'][$key]
        );
    }
    

    【讨论】:

    • 我想要一些更自动化的东西,因为我拥有这些字段的次数取决于我添加了多少转发器。但我想我将不得不采取这个选项。谢谢!
    • 还有一个选项,你不必使用数字,我会在几秒钟内添加它
    猜你喜欢
    • 2017-01-21
    • 2018-06-27
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多