【问题标题】:a sortable list that comes from database来自数据库的可排序列表
【发布时间】:2014-09-11 00:35:10
【问题描述】:

我有一个简单的 html 列表:

<ul id="sortable">
    <li id="1">item1</li>
    <li id="2">item2</li>
    <li id="3">item3</li>
</ul>

我使用 jQuery UI 使其可排序。这让用户可以移动每个项目的顺序:

$('#sortable').sortable();

但是当我从 MySql 数据库中获取相同的项目时,“可排序”不再起作用,我无法更改项目的顺序。所以我的问题是:当列表来自数据库时,如何使列表可排序?

<?php  
$result = mysqli_query($con, 'SELECT * FROM principal ORDER BY ordre');
while ($row = mysqli_fetch_array($result)) {
?>

<ul id="sortable">
    <li id="<?php echo $row["id"] ?>"><?php echo $row["concepte"]?>;</li>
</ul>
<?php 

【问题讨论】:

  • PHP生成的HTML是什么样子的?
  • 定义“不起作用”。发生了什么不应该发生的事情?什么不应该发生?控制台上显示什么错误。如果您在尝试调用sortable 之前测试$('#sortable').length 会发生什么?
  • @Nrc — 不要只描述它,向我们展示。
  • @Quentin:我该如何展示它?我认为 JSFiddle 不适用于 jQuery UI 和 php。有没有其他办法?
  • @Nrc — 您在浏览器中转到“查看”菜单,然后转到“源”,然后从中复制和粘贴。

标签: php jquery mysql jquery-ui


【解决方案1】:

您正在为每个记录行生成 ul 元素,其中应该是具有多个 LI 元素的单个 UL,同时修复 li HTML 代码

<?php  
$result = mysqli_query($con, 'SELECT * FROM principal ORDER BY ordre');
echo '<ul id="sortable">';
while ($row = mysqli_fetch_array($result)) {
?>


    <li id="<?php echo $row["id"]; ?>"><?php echo $row["concepte"]; ?></li>
<?php 
   }
echo '</ul>';
?>

【讨论】:

  • 好地方。 (如果我们一直在查看 HTML 而不是 PHP,那将会更加明显)。
  • 是的,这解决了问题。你能解释一下为什么我有负分吗?我应该怎么做才能更好?
  • @Nrc 我不知道为什么,但很可能这是一个非常基本的问题,可以通过在发布前查找或使用谷歌轻松找到。我还不知道这是如何工作的
【解决方案2】:

我不是 PHP 人,但这看起来每次迭代都会生成一个 ul ?所以你的标记会被搞砸

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2013-09-02
    • 2013-02-01
    相关资源
    最近更新 更多