【问题标题】:UPDATE MySQL with JQuery sortable new value使用 JQuery 可排序的新值更新 MySQL
【发布时间】:2013-03-03 02:46:16
【问题描述】:

问题:如何使用 JQuery 可排序列表中的新值更新我的 MySQL 数据库?

这是我目前的代码:

<?php

echo '
<form action="" method="post"> 
<ul id="sortable">';

$array = str_split("ABCDEFGHI", 3);

for($i = 0; $i < count($array); $i++) {
  echo '
    <li class="ui-state-default">
    <span class="ui-icon ui-icon-arrowthick-2-n-s"></span>' . $array[$i] . '<input type="hidden" name="pos[]" value="'.$array[$i].'">
    </li>';
}

echo '
</ul><br>

<input type="submit" name="submit" value="Show order">
</form>

</body>
</html>';

if(isset($_POST['submit'])) {
    foreach($_POST['pos'] as $value){
        echo $value;
    }

}

?>

信息:

$value 保存我想用来更新 MySQL 数据库的 JQuery 可排序列表中的新值。但不能在foreach之外使用。那么我该怎么做呢?我知道我可以像这样创建一个包含 SQL 查询(在 foreach 中)的变量:

$query ="UPDATE test SET order='" . $value . "' WHERE id='" . $random_function . "'";

但是如何使用变量$query 来执行实际的 SQL 查询呢?

$_POST['pos']数组结构:

Array ( [0] => ABC [1] => DEF [2] => GHI ) Array ( [0] => ABC [1] => DEF [2] => GHI ) Array ( [0] => ABC [1] => DEF [2] => GHI )

【问题讨论】:

  • 你的 $_POST['pos'] 结构是什么?
  • 你是什么意思?我认为它创建了一个带有值的数组。
  • 我知道它是一个数组。那里的数组结构是什么?您可以将其添加到问题中吗?使用 print_r()。
  • 再看问题。这就是你要找的东西吗?
  • 为什么你不在 foreach 循环中使用 mysql_query

标签: php jquery html mysql jquery-ui-sortable


【解决方案1】:

试试这个。

$str = '';
if(isset($_POST['submit'])) {
  foreach($_POST['pos'] as $value){
    $str = $str.$value;
  }
 }

$query ="UPDATE test SET order='" . $str . "' WHERE id='" . $random_function . "'";
mysql_query($query);

【讨论】:

  • end($value) 替换为 end($array)。在答案中编辑。
  • 仍然只是用最后一个 JQuery 可排序值更新数据库。我没有收到任何错误消息。我将 ABCDEFGHI 重新排列为 GHIDEFABC,它刚刚在数据库中更新为 ABC。但是如果我输入 echo $value;在 foreach 循环中,它显示所有值。 :S
  • 您需要在数据库中更新它。 GHIDEFABC 或 ABCDEFGHI。我是正确的吗?
  • 是不是这样,而是 $array[] = $value;使用 $str = $str.$value;并将 end($array) 替换为 $str.
  • 是的!我有一个 JQuery 可排序列表。变量 $value 给我一个列表中的值 (ABCDEFGHI)。像 list1=ABC、list2=DEF 和 list3=GHI。使用 JQuery 可排序列表,我可以将这三个值重新排列为我喜欢的任何值。我想用 $value 中的新值更新数据库。你明白吗? :)
【解决方案2】:

我是这样做的:

在 JavaScript 中

var ids = [];
rows.each(function (index, value)
{
    ids.push($(value).attr("data-item-id"));
});
$.post('/url/to/save/order/, {orderMap:JSON.stringify(ids)}, function() {}, 'json');

在 PHP 中:

$orderMap = json_decode(stripslashes($this->getPost("orderMap")));
$statements = array();
foreach ($orderMap as $itemId => $position) {
    $statements[] = sprintf("UPDATE `{$tableName}` SET `{$fieldName}`=%d WHERE `{$fieldIdName}`=%d", $position, $itemId);
}
$this->db->executeMultiQuery(implode(";", $statements));

【讨论】:

  • 好的,谢谢! :) 但是我如何在我的代码中使用它呢?如何使用行 $this->db->e​​xecuteMultiQuery(implode(";", $statements));在我的代码中? :S 有没有办法只使用常规的 mysql_query() 来插入值?
  • 我使用类 mysqli ($connection is new mysqli()): if ($connection->multi_query($query)) { $results = array(); $i = 0;做 { if ($result = $connection->store_result()) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $results[$i][] = $row; } $result->free(); } $i++; } 而 ($connection->next_result());返回$结果; }
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多