Мне удалось заставить Ajax динамически обновлять результаты строк MySQL, нажав на запись, которую я хочу обновить, и это работает. Однако, если я использую GROUP CONCAT, я все еще могу щелкнуть по записи, которую я хочу обновить, но изменения не сохраняются. Это нормально? Или это все еще должно работать с GROUP CONCAT?
Текущий код, который работает, когда запрос mysql не использует concat группы:
Это функция:
function edit_data(id, text, column_name)
{
$.ajax({
url:"food_edit.php",
method:"POST",
data:{id:id, text:text, column_name:column_name},
dataType:"text",
success:function(data){
//alert(data);
}
});
}
И это food_edit.php
<?php
include ("expenses.inc");
session_start();
$con = mysqli_connect("$server","$user","$pw","$db");
$id = $_POST["id"];
$text = $_POST["text"];
$column_name = $_POST["column_name"];
$query = "UPDATE food SET ".$column_name."='".$text."' WHERE id='".$id."'";
if(mysqli_query($con, $query))
{
echo 'Data Updated';
}
?>
Я попытался обновить код, как показано ниже, чтобы компенсировать групповое совпадение, но это не сработало:
function edit_data(ID, FOOD_TYPE, STORE_NAME, LOCATION, DATUM, COST)
{
$.ajax({
url:"food_edit.php",
method:"POST",
data:{ID:ID, FOOD_TYPE:FOOD_TYPE, STORE_NAME:STORE_NAME, LOCATION:LOCATION, DATUM:DATUM, COST:COST},
dataType:"text",
success:function(data){
//alert(data);
}
});
}
и food_edit.php:
<?php
include ("expenses.inc");
session_start();
$con = mysqli_connect("$server","$user","$pw","$db");
$id = $_POST["id"];
$FOOD_TYPE = $_POST["FOOD_TYPE"];
$STORE_NAME = $_POST["STORE_NAME"];
$LOCATION = $_POST["LOCATION"];
$DATUM = $_POST["DATUM"];
$COST = $_POST["COST"];
$query = "UPDATE food SET
".$FOOD_TYPE."='".$_POST["FOOD_TYPE"]."',
".$STORE_NAME."='".$_POST["STORE_NAME"]."',
".$LOCATION."='".$_POST["LOCATION"]."',
".$DATUM."='".$_POST["DATUM"]."',
".$COST."='".$_POST["COST"]."'
WHERE ID='".$_POST["ID"]."'";
if(mysqli_query($con, $query))
{
echo 'Data Updated';
}
?>
Надеюсь, это проясняет.
Я добавил запрос MySQL с группой concat
$query = "Select
GROUP_CONCAT(ID,' <br>' ORDER BY DATUM SEPARATOR ' ') AS ID,
GROUP_CONCAT(FOOD_TYPE,' <br>' ORDER BY DATUM SEPARATOR ' ') AS FOOD_TYPE,
GROUP_CONCAT(STORE_NAME,' <br>' ORDER BY DATUM SEPARATOR ' ') AS STORE_NAME,
GROUP_CONCAT(LOCATION,' <br>' ORDER BY DATUM SEPARATOR ' ') AS LOCATION,
GROUP_CONCAT(DATUM,' <br>' ORDER BY DATUM SEPARATOR ' ') AS DATUM,
GROUP_CONCAT(COST,' <br>' ORDER BY DATUM SEPARATOR ' ') AS COST
FROM
(
SELECT food.ID, food.FOOD_TYPE, food.STORE_NAME, food.LOCATION, food.DATUM, food.COST FROM food
) TEST
group by DATUM
ORDER BY DATUM DESC";
Было бы полезно увидеть пример того, что именно вы вызываете на своем сервере для внесения изменений, но я предполагаю, что конечная точка API, которую вы используете, ожидает один идентификатор элемента, а теперь вы отправляете несколько. В общем, обновления не могут содержать какую-либо группировку, так как они должны ссылаться на определенные строки. Группировка может быть выполнена с помощью подвыборов.
Других решений пока нет …