Обновление существующей записи

Я пытаюсь создать страницу, которая извлекает имя владельца и дает мне возможность ввести мои комментарии к его действию. Отправка комментариев с отметкой времени соответствующего выбранного человека.

Я могу получить имя «владельца» в формате просмотра, но у меня возникают проблемы при отправке моих комментариев, поскольку он обновляет все столбцы «комментариев», а не добавляет его только к выбранной записи (возможно, проблема «i») field и timestamp записываются некорректно, они добавляют новую строку с пустыми полями, но со значением timestamp.

Это то, что я до сих пор:

<?php
function renderForm($id, $owner, $attendance, $comments, $log, $error)
{
?>
<!DOCTYPE html>
<html>
<head>
<title>Log</title>
</head>
<body>
<?php
if ($error != '')
{
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
}
?>
<form action="" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
<div>
<strong>OWNER: </strong><?php echo $owner; ?><br/><br/>

<strong>ATTENDANCE: </strong><select name="attendance" id="attendance">
<option value=""><?php echo $status; ?></option>
<option value = "Present">Ongoing</option>
<option value = "Absent">Closed</option>
</select><br/><br/>

<div style="position: absolute; top: 200px; left: 300px; width: 210px; height: 125px;">
<strong>COMMENTS: </strong><br/>
<?php
// connect to the database
$conn = mysqli_connect("localhost", "root", "");
$result = mysqli_query($conn, "SELECT * FROM arc.log WHERE attendance IN ('Present', 'Absent')", MYSQLI_USE_RESULT)
or die(mysql_error());
echo "<table border='1' cellpadding='10'>";
echo "<font color=\"white\"><tr><th>TIMESTAMP</th><th>COMMENTS</th></tr>";
while($row = mysqli_fetch_array( $result )) {
echo "<tr>";
echo '<td>' . $row['timestamp'] . '</td>';
echo '<td>' . $row['comments'] . '</td>';
echo "</tr>";
}
// close table>
echo "</table>";
?></div>

<div style="position: absolute; top: 8px; left: 700px; width: 210px; height: 125px;">
<strong>COMMENTS: </strong> <br/><textarea id="comments" name="comments" rows="10" cols="50"></textarea></div>
</div>
<br/>
<br/>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>

<?php
}
$conn = mysqli_connect("localhost", "root", "");
if (isset($_POST['submit']))
{
if (is_numeric($_POST['id']))
{
$comments = mysqli_real_escape_string($conn, $_POST['comments']);
$timestamp_history = date("Y-m-d h:i:s");
if ($comments == '')
{
$error = 'ERROR: Please fill in all required fields!';
renderForm($remarks, $error);
}
else
{
mysqli_query($conn, "UPDATE arc.log SET comments='$comments'")
or die(mysql_error());
$query = "INSERT INTO `ticket`(`timestamp`) VALUES ('$timestamp')";
$result = mysqli_query($conn, $query);
}
}
else
{
echo 'Error1';
}
}
else
{
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
{
$id = $_GET['id'];
$result = mysqli_query($conn, "SELECT * FROM arc.log WHERE id=$id")
or die(mysql_error());
$row = mysqli_fetch_array($result);
if($row)
{
$owner = $row['owner'];
$attendance = $row['attendance'];
$comments = $row['comments'];
renderForm($id, $owner, $attendance, $comments, '');
}
else
// if no match, display result
{
echo "No results!";
}
}
else
{
echo 'Error2';
}
}
?>

MySQL:

введите описание изображения здесь

-1

Решение

UPDATE arc.log SET comments='$comments' WHERE id = $_POST['id']

Обратите внимание, что вы должны экранировать параметр POST, а не копировать его вслепую.

Для вопроса с отметкой времени. Если вы не хотите вставлять новую запись, а вместо этого обновлять существующую, используйте UPDATE и не INSERT,

0

Другие решения

—он обновляет все столбцы «комментариев» — необходимо исправить, заменив

 mysqli_query($conn, "UPDATE arc.log SET comments='$comments'"); by
$id = $_POST['id'];
mysqli_query($conn, "UPDATE arc.log SET comments='".$comments."',log.timestamp = '".$timestamp_history."'  where id=$id ");

и если тип временной отметки столбцов — это временная метка, вы должны преобразовать дату и время в метку времени, как показано ниже:
Вы должны добавить после этой строки

$timestamp_history = date("Y-m-d h:i:s");
$timestamp_history =  strtotime($timestamp_history);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector