将HTML表格行转换为PHP数组并保存到数据库?

4
我正在尝试将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>

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


1
你目前尝试了什么?有尝试解析HTML吗?有尝试写入数据库吗?使用的是哪种数据库?有任何偏好或可用的库吗? - Ryan
你的问题不够清晰。你是想保存每个表格行的值,还是只保存输入框和文本区域中的值? - SteveP
为什么要使用表格来布局表单元素呢?使用div/css即可。 - GGio
行数将是动态的。这就是我想要实现的内容:http://screencast.com/t/0T3I9jglD4K - Irfan
投票关闭此问题 - 它实际上没有提供关于OP特定需求或他已经尝试过什么的足够信息,并且太过开放式。 - thomasrutter
2个回答

7
如果你想保存每一行的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轻松完成同样的任务。


请注意,这些行是动态的。请查看此屏幕录像,您将了解我试图完成的内容。http://screencast.com/t/0T3I9jglD4K - Irfan
无论它们是否动态,您都可以使用div/css使其动态。表格应用于显示统计数据,而不是为了美观地布局。请阅读此内容:https://dev59.com/K3VD5IYBdhLWcg3wHnwX - GGio

0

这是基本的PHP用法。您为输入命名,当您提交表单时,提交页面中的脚本将执行任务。

您的值将驻留在

$_POST 

数组。因此,您可以通过

$_POST['input_name']

你需要通过调用每个值的名称并将其相应地放入数据库中来完成操作。


问题是,行是动态的。我不确定会有多少行。因此,我无法为它们命名。 - Irfan
你可以像我在回答中提到的那样使用jQuery,只需要稍微修改一下。比如 $('input').each({}); $('textarea').each({}); 等等... - GGio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接