也许斯特朗,但我找不到一个(好)后,所以我的问题..
我有一些menuitems,我想让用户保存他们在一个DB表中的自定义顺序。我使用jquery UI,让他们把项目在良好的秩序(与tbody元素上的sortable)。我的情况现在真的很简单,但它会在未来更复杂(搜索,特殊页面,.
<table>
<thead>
<tr>
<th>#</th>
<th>Item</th>
<th>ID</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Title</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>Title</td>
<td>4</td>
</tr>
<tr>
<td>3</td>
<td>Title</td>
<td>6</td>
</tr>
</table>
字符串
- 我的问题是:* 在数据库表中保存项目顺序的可能性是什么?这种可能性的缺点是什么?**
我在想把它保存在一个数据库表中,带有页面(id)和一个权重。多高,它就越不重要(数据库表必须进行微调)。
CREATE TABLE `pageweight` (
`id` int(11) NOT NULL,
`page` int(11) NOT NULL,
`weight` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
型
我看到的可能性:
我可以保存它在jQuery中,通过选择表体中的tablerows。对于每个表行,我有一个Ajaxrequest..,它更新/创建数据库中的一行。
我可以在我的表单中使用隐藏字段。id/name-attribute可以包含menuitemid,值是权重。jQuery可以在每次更改时更新它吗?然后在PHP中我处理每个字段并让它保存。
或者有其他的方法?特别是当它变得更大的时候..
2条答案
按热度按时间odopli941#
最基本的方法是将每一行合并,然后将每个单元格合并合并成一个对象,保存到数组中。
字符串
此函数将读取标题行和创建的键。假设它们是
id
,page
和weight
或任何其他值,它将收集它们。然后它将捕获每个主体行的相关数据。如果执行console.log(pageWeights)
,您将看到如下内容:型
然后你可以将其发布到服务器端脚本:
型
如果您的表比较复杂,这可能不是最好的解决方案。例如,如果表包含100或1000行,这可能会创建无法通过POST传递的非常大量的数据,或者可能导致浏览器性能不佳。考虑更改函数:
你可能还想看看使用DataTables库。这对你想做的很多事情都有帮助。
shyt4zoc2#
我不认为将每个设置保存到表中的每个记录是理想的。您的表将比您的真实的内容庞大。因此,您在表设计上浪费了空间和查询时间。我建议将“用户设置”保存在一个单独的记录中,就像表中的JSON或TEXT格式的记录一样。加载时间更少。