Как изменить значение базы данных php с помощью события click - PullRequest
0 голосов
/ 02 мая 2019

Итак, в основном у меня есть событие, и я хочу изменить значение этого события в базе данных, когда я щелкаю по нему. Идея заключается в следующем (этот код не работает)

eventClick: function(calEvent, jsEvent, view) [<?php
                        while($row_events = mysqli_fetch_array($resultado_events)){
                            ?>
                            {
    location.href = "update_task.php?id=<?php echo $fetch['id'];?>";
},<?php
                        }
                    ?>]

Обновить код задачи

<?php
require_once 'conn.php';
if($_GET['id'] != ""){
    $id = $_GET['id'];
    $conn->query("UPDATE `task` SET `status` = 'Done' WHERE `id` = $id") or die(mysqli_errno());
    header('location: index.php');
}
?>

Код в задаче обновления работает, потому что я тестировал на обычной странице, код в полном календаре - тот, который не работает. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Вы на самом деле не сказали точно, что происходит, но я вижу, что то, что вы делаете с помощью обратного вызова «eventClick», не имеет никакого смысла. Он попытается сгенерировать команду location.href для каждого события в результатах вашего запроса. Все они будут добавлены в JavaScript, одна за другой, в виде последовательности последовательных команд. Но eventClick определяется только один раз .... так что это означает, что он попытается перейти ко всем вашим событиям одновременно.

Чтобы добавить к этому, вы поместили код PHP в неправильное место, поэтому у вас заканчивается неправильный JavaScript. Готовый JS будет выглядеть примерно так:

eventClick: function(calEvent, jsEvent, view)
  { location.href = "update_task.php?id=1"; }
  { location.href = "update_task.php?id=2"; }
  { location.href = "update_task.php?id=3"; }
  { location.href = "update_task.php?id=4"; }
  { location.href = "update_task.php?id=5"; }

, что явно бессмысленно и, вероятно, приведет к синтаксической ошибке.

Даже если вы сделали это правильно, вы получите готовый код JavaScript, похожий на этот:

eventClick: function(calEvent, jsEvent, view) {
  location.href = "update_task.php?id=1";
  location.href = "update_task.php?id=2";
  location.href = "update_task.php?id=3";
  location.href = "update_task.php?id=4";
  location.href = "update_task.php?id=5";
}

Ясно, что это а) бесполезно и б) не будет работать в любом случае. Вы просто всегда будете переходить к первому событию, так как это будет первая команда location.href, которая будет напечатана.

Вывод таков: вы не можете реализовать эту функцию с помощью PHP, потому что в то время, когда PHP работает и вы генерируете свою страницу на сервере, у вас нет возможности узнать, на каком событии будет щелкнуть , так что вы не можете установить идентификатор заранее, как это.

К счастью, обратный вызов eventClick предоставляет параметр calEvent, содержащий сведения о событии, по которому был выполнен щелчок. Предполагая, что в ваших данных события JSON вы предоставляете id каждого события для fullCalendar, вы можете использовать это значение вместо этого, чтобы создать URL-адрес определенного события, по которому щелкнули:

eventClick: function(calEvent, jsEvent, view) {
  location.href = "update_task.php?id=" + calEvent.id;
}
0 голосов
/ 02 мая 2019

Указанный вами location.href URL неверен.

Изменить

location.href = "update_task.php?id="'.$fetch['id'].';

до

location.href = "update_task.php?id=<?php echo $fetch['id'];?>";

...