【问题标题】:PHP form submit into multi-dimensional arrayPHP表单提交成多维数组
【发布时间】:2018-01-21 16:12:09
【问题描述】:

我正在编写一个代码,将值存储到多维数组中,但问题是当我提交表单时我无法做到这一点,它会生成这样的单个数组。

Array (
    [0] => inputbox value
    [1] => 1
)

但我想要这样的结果

Array (
    [0] => Array (
        'nameField' => 'inputbox value',
        'PageField' => 1
    ),
    [1] => Array ( ... ),
    [2] => Array ( ... ) ... and so on
)

我无法在我的简单代码中找出我做错了什么

<?php
    if ($_POST) : 
        echo "<pre>";
            print_r($_POST['mc']);
        echo "</pre>";
    endif;
?>

这是我的 HTML

<form action="#" method="post">
<table style="width:100%">
    <thead>
        <tr>
        <td style="width:70%"><strong>Display Title Name:</strong></td>
        <td style="width:30%"><strong>Select Sub Page:</strong></td>
        </tr>
    </thead>
    <tbody>
    <tr>
    <td style="width:70%"><input name="mc[]nameField" value="" style="width:100%" type="text"></td>
    <td style="width:30%">
        <select name="mc[]PageField" style="width:100%">
            <option selected="selected" disabled="disabled" value="">Select page</option>
            <option value="1">04:00 PM Result Page</option>
            <option value="2">08:00 PM Result Page</option>
            <option value="3">11 55 AM Result Page</option>
            <option value="4">About Us</option>
            <option value="5">Contact Us</option>
        </select>
    </td>
    </tr>
    </tbody>
</table>
<div style="width:100%; padding:5px;">
    <input class="add_new_media button button-primary button-large" id="publish" value="Add" type="button">
    <input class="remove button button-primary button-large" id="publish" value="Remove" type="button">
</div>
<input name="SubmitForm" type="submit" value="SubmitForm" />
</form>

这是我的 Jquery 代码

<script>
jQuery(document).ready(function($){
var count = $("tbody tr").length;
myFunction(count);
    $('.add_new_media').on('click', function() {
        $('tbody tr:first-child')
        .clone()
        .appendTo($('tbody'))
        .find('input')
        .val('')
        var count = $("tbody tr").length;
        myFunction(count);
    });
    $('.remove').on('click', function() {
        $('tbody tr:last').remove();
        var count = $("tbody tr").length;
        myFunction(count);
    });
    function myFunction(count) {
        if (count > 1) {
            $('.remove').removeAttr("disabled");    
        } else {
            $('.remove').attr("disabled", "disabled");
        }
    }
});
</script>

【问题讨论】:

  • 什么意思?从您的html 看来,它应该只做两个帖子值,即$_POST['mc[]namefield']$_POST['mc[]PageField]`。
  • @HuyVo 我有一个克隆表单函数,它使用 jquery 将这两个字段变成多个字段,这就是我需要遍历数组的原因
  • 应该发布你的 jQuery 代码。
  • @HuyVo 请检查 jquery
  • 太长了,没看。你为什么要克隆?

标签: php arrays


【解决方案1】:

您想向服务器发送一个字典数组。

首先,创建一个数组,其中包含字典 @​​987654321@ 作为全局变量。

var arrays = [];

一般的想法是每次用户输入完数据后,您需要将该数据添加到arrays

添加一个按钮让jQuery知道何时添加到arrays

<button id="abutton" type="button" >Click Me!</button>

以下是您将数据添加到jQuery 中的数组的方法:

 $("#abutton").click(function(){

       var nameFieldData = // get data from name field 
       var pageFieldData = // get data from page field

       arrays.push(
          {'nameField': nameFieldData,
           'PageField': pageFieldData});
 });

然后在准备好后将arrays 发送回服务器。

【讨论】:

  • 因为我已经从代码中获取数据,唯一的问题是它没有正确覆盖到列名的数组中
  • jQuery主要是一个UI库。看起来您正在将数据与 UI 混合。我的方法是尝试拆分 UI 和数据。
  • 不,它的实际工作正常,唯一的问题是我得到这个它拆分所有值然后创建一个数组,我没有问题将文件名更改为nameField[] PageField[],但我想要将它们组合成 php 端的多维数组
  • 我的帖子真的对你有帮助吗?
  • 是的,我使用您的功能几乎没有改变我的策略,它解决了我的数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 2020-01-10
  • 2016-04-27
相关资源
最近更新 更多