Предыдущая обновленная запись возвращается при обновлении новой записи MySQL PHP - PullRequest
1 голос
/ 18 октября 2011

Добрый день всем. Я пытаюсь сделать модуль отслеживания задач для моей системы. Логика заключается в том, что всякий раз, когда я назначаю задачу пользователю, система обновляет задачу на «IsTaken», что означает, что конкретный пользователь отвечает за эту задачу. После обновления он создает запись в таблице «user_task», которая в основном связывает вместе задачу и пользовательскую таблицу. Всякий раз, когда я назначаю задачу кому-то, это нормально. Но когда я делаю это снова, поле IsTaken предыдущей записи задачи возвращается к 0. Я пытаюсь переназначить его, но снова предыдущая запись возвращается. Это довольно странно. Я использую XAMPP, MySQL и PHP. Я надеюсь, что я не единственный, кто испытывает это. Любая помощь приветствуется.

Вот мои таблицы:

CREATE TABLE IF NOT EXISTS `task` (
  `Task_No` int(11) NOT NULL AUTO_INCREMENT,
  `Task_Name` varchar(100) NOT NULL,
  `Task_Desc` varchar(450) DEFAULT NULL,
  `Task_DateCreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Task_IsTaken` tinyint(1) NOT NULL,
  PRIMARY KEY (`Task_No`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `user_task` (
  `UT_No` int(11) NOT NULL AUTO_INCREMENT,
  `User_Email` varchar(100) NOT NULL,
  `Task_No` int(11) NOT NULL,
  `Task_Duration` varchar(20) NOT NULL,
  `Task_DateTaken` date DEFAULT NULL,
  `Task_DateFinished` timestamp NULL DEFAULT NULL,
  `Task_IsIssue` tinyint(1) NOT NULL,
  PRIMARY KEY (`UT_No`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

А вот мои сценарии (из формы):

//Process - Insert Task
if(isset($_POST['btnCreateTask']))
{
if($_POST['taskName']!=NULL)
{
$taskName = mysql_real_escape_string ($_POST['taskName']);
$taskDesc = mysql_real_escape_string ($_POST['taskDesc']);
$insertTask = "INSERT INTO task(Task_Name, Task_Desc, Task_IsTaken) VALUES('$taskName', '$taskDesc', 0)";
$sqlResult1 = mysql_query($insertTask);}
else
{
    echo "No task name given";
    $errorCode = 1;
}
}


if(isset($_POST['btnAssignTask']))
{
    if($_POST['assignTaskName']!=NULL)
{
    $assigntaskName = mysql_real_escape_string($_POST['assignTaskName']);
    $assigntaskNo = mysql_real_escape_string($_POST['assignTaskNo']);
    $assigntaskOwner = mysql_real_escape_string($_POST['assignTaskOwner']);
    $assigntaskDuration = mysql_real_escape_string($_POST['assignTaskDuration']);
    $updateUpcomingTask = "UPDATE task SET Task_IsTaken = '1' AND Task_No = '$assigntaskNo'";
    $createUserTask = "INSERT INTO user_task (User_Email, Task_No, Task_Duration, Task_DateTaken, Task_DateFinished) 
                        VALUES ('$assigntaskOwner', '$assigntaskNo', '$assigntaskDuration', '$now', NULL)";
    $sqlResult2 = mysql_query($updateUpcomingTask);
    $sqlResult3 = mysql_query($createUserTask);
}
else
{
    echo "No task selected";
    $errorCode = 2;
}
}

1 Ответ

1 голос
/ 18 октября 2011

Ваш код должен быть изменен на:

if(isset($_POST['btnAssignTask']))
{
    if($_POST['assignTaskName']!=NULL)
{
    $assigntaskName = mysql_real_escape_string($_POST['assignTaskName']);
    $assigntaskNo = intval($_POST['assignTaskNo']);
    $assigntaskOwner = mysql_real_escape_string($_POST['assignTaskOwner']);
    $assigntaskDuration = mysql_real_escape_string($_POST['assignTaskDuration']);
    $updateUpcomingTask = "UPDATE task SET Task_IsTaken = '1' WHERE Task_No = $assigntaskNo";
    $createUserTask = "INSERT INTO user_task (User_Email, Task_No, Task_Duration, Task_DateTaken, Task_DateFinished) 
                    VALUES ('$assigntaskOwner', '$assigntaskNo', '$assigntaskDuration', '$now', NULL)";
    $sqlResult2 = mysql_query($updateUpcomingTask);
    $sqlResult3 = mysql_query($createUserTask);
}
else
{
    echo "No task selected";
    $errorCode = 2;
}
}
...