【问题标题】:Convert HTML table rows into PHP array and save it to database? [closed]将 HTML 表格行转换为 PHP 数组并将其保存到数据库? [关闭]
【发布时间】:2013-03-19 18:16:06
【问题描述】:

我正在尝试将 html 表行保存到 php 数组中,然后将数组保存在数据库中。

<form action="" method="post">
        <table class="widefat" id="theTable">
                        <thead>
                                <tr>
                                   <th>Level Identifier</th>
                                    <th>Non-logged in message</th>
                                    <th>Logged in message</th>
                                </tr>
                        </thead>
                        <tbody>

                                  <tr>
                                    <td><input type="text" value="" style="height: 19px;background-color: white;font-size:10px;"/></td>
                                    <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1">This is your custom message template</textarea></td>
                                    <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1">This is your custom message template</textarea></td>
                                  </tr>

                                   <tr>
                                    <td><input type="text" value="" style="height: 19px;background-color: white;font-size:10px;"/></td>
                                    <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1"></textarea></td>
                                    <td><textarea style="font-size:10px;" name="promo_msg_free" cols="43" rows="1"></textarea></td>
                                  </tr>

                        </tbody>    
                    </table> 
                </form>

如何检索每一行数据并将其保存到数组元素,最后我将数组保存到数据库?谢谢

【问题讨论】:

  • 到目前为止您尝试过什么?是否尝试过解析 HTML?是否尝试写入数据库?什么样的数据库?您喜欢/可以使用的任何库?
  • 你的问题不清楚。您要保存每个表格行的值,还是只保存输入和文本区域中的值?
  • 为什么你首先要使用表格来布局表单元素?使用 div/css
  • 行将是动态的。这就是我想要完成的:screencast.com/t/0T3I9jglD4K
  • 投票结束了这个问题——它确实没有提供足够的信息来说明 OP 的具体需求,或者他已经尝试过什么,而且过于开放。

标签: php html html-parsing php-parser


【解决方案1】:

如果您想保存每一行的 HTML,请执行以下操作:

使用 JQuery。

var rowsArray = {};
var i = 0;
$('#theTable tr').each(function({
    rowsArray[i] = $(this).html(); // if you want to save the htmls of each row
    i++;
});

然后使用 ajax 发布此数据

$.ajax({
   type: 'post',
   url: URL_TO_UR_SCRIPT,
   data: { myarray : rowsArray },
   success: function(result) {
     //ur success handler OPTIONAL
   }
});

在 PHP 方面你可以这样做:

$array = isset($_POST['myarray']) ? $_POST['myarray'] : false;
if ($array) { 
  $array = serialize($array);
  //UPDATE YOUR DATABASE WITH THIS SERIALIZED ARRAY
}

您无法将 php 数组保存到数据库中,因此您需要对其进行序列化,并在从数据库中检索它时使用 unserialize()

如果您的意思是要保存输入和文本区域的值,那么您需要设置 每个元素的名称,然后使用 $_POST 在脚本中访问它们。

 $array = array;
 foreach($_POST as $key => $value) {
    //sanitize your input here
    $array[$key] = $value;
 }
 $serialized = serialize($array);
 //save serialized array in your DB

注意/提示:仅供参考,不要使用 html 表格来布置表单元素。表应该用于数据表示。您可以使用 divscss

轻松地做同样的事情

【讨论】:

  • 仅供参考,行是动态的。请看一下这个截屏视频,你会得到我想要完成的。screencast.com/t/0T3I9jglD4K
  • 不管它们是否是动态的,您都可以使用 div/css 使其动态化。表格应该用来显示统计数据,而不是用来很好地布局。阅读:stackoverflow.com/questions/83073/…
【解决方案2】:

这是基本的 PHP 用法。你给你的输入命名,当你提交表单时,提交页面中的脚本将完成这项工作。

你的价值观将驻留在

$_POST 

数组。因此,您可以通过

访问它们
$_POST['input_name']

您必须通过调用每个值的名称来遍历每个值,然后将其相应地放入数据库中。

【讨论】:

  • 问题是,行是动态的。我不确定那里会有多少行。所以我不能命名它们。
  • 那么你可以像我在回答中提到的那样做 jquery,只是稍微改变一下。 $('输入').each({}); $('textarea').each({});等等……
猜你喜欢
  • 1970-01-01
  • 2011-07-08
  • 2016-02-01
  • 2023-03-17
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多