我已经为此苦苦挣扎了一段时间,似乎无法找到解决方案。
通过使用 JQuery-ui,我有一个可排序的列表。每当位置发生变化时,它们后面的颜色也需要更改到相同的位置。
因此,每当列表发生更改时,我都会对应该处理排序的 PHP 文件执行 AJAX 请求。所有关于颜色应该如何排序的数据都运行良好。但是,我需要将其更新到我的数据库中的一个表中。
当我调试时,通过回显从 AJAX 请求返回的数据 (console.log),我得到了它们应该如何排序的正确方式。但是,只要我添加 myqsli_query($the_query),它就会两次返回相同的查询。然后最终弄乱了排序,一切都从那部分开始走下坡路。
AJAX 请求转到的一段代码:
foreach ($status_colors as $values) {
//rearranges the colors with the new positions
for ($i = 0; $i < count($positions); $i++) {
$new_array[$positions[$i]] = $values[$i];
}
//sorting by key starting with 0
ksort($new_array);
//since the colors are saved in the table like this;
//red,green,yellow,purple,etc. I have to implode
$new_status_color = implode(',', $new_array);
//return the right order of colors.
echo $new_status_color;
//Setting up the query with the new status_color the id here is just a example, however its actually going through about 20 records to update
$update_query = 'UPDATE cars SET status_color="'. $new_status_color .'" WHERE id=1';
//If i echo out $update_query, sort the list a couple of times
//I get the result that I want, but as soon as I use the following it breaks
//This breaks it, on the first sort it goes fine. But when I sort again, I get the same query back, as the first one.
mysqli_query($link, $update_query);
}
关于这个问题的一个例子:假设我在一个列表中有 5 个项目,这是可排序的。
- 项目 1 - 绿色
- 项目 2 - 黄色
- 项目 3 - 红色
- 项目 4 - 蓝色
- 项目 5 - 黑色
假设我将第 5 项更改为高于第 1 项,这将创建此列表:
- 项目 5 - 黑色
- 项目 1 - 绿色
- 项目 2 - 黄色
- 项目 3 - 红色
- 项目 4 - 蓝色
现在使用 mysql_query 第一次可以正常工作,但是当我将其更改回第一个列表(第 1 - 5 项)时,它仍然返回上一个列表中的 SQL。
我希望能把它弄清楚一点,如果不是,你可以问一下,试着让它更容易理解。
还想补充一点,我尝试在 PHP 和 JQuery AJAX 中禁用缓存,这也无济于事。