Я пытаюсь создать систему бронирования библиотек, чтобы, когда пользователь берет книгу, у него была установлена дата выполнения через 7 дней после даты выпуска (установленной как CURRENT_TIMESTAMP). Однако есть ли способ просто использовать CURRENT_TIMESTAMP + 7 дней в коде php/html? или мне нужно добавить еще один столбец таблицы, чтобы установить переменную даты выполнения в базе данных?
Я попытался изменить переменную (в порядке) в базе данных, которая не нужна в моей базе данных со сроком выполнения. Однако это портит все, что не показывают данные.
Итак, в настоящее время я пытаюсь добавить 7 дней к переменной IssueDate с помощью функции DATE_ADD. Однако это не позволит показать код.
<tr>
<th>#</th>
<th>Book Name</th>
<th>ISBN </th>
<th>Issued Date</th>
<th>Due Date</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$sid=$_SESSION['stdid'];
$sql = "SELECT tblbooks.BookName,tblbooks.ISBNNumber,tblissuedbookdetails.IssuesDate,tblissuedbookdetails.ReturnDate,tblissuedbookdetails.id as rid,tblissuedbookdetails.fine from tblissuedbookdetails join tblstudents on tblstudents.StudentId=tblissuedbookdetails.StudentId join tblbooks on tblbooks.id=tblissuedbookdetails.BookId where tblstudents.StudentId=:sid order by tblissuedbookdetails.id desc";
$query = $dbh -> prepare($sql);
$query-> bindParam(':sid', $sid, PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
$cnt=1;
if ($query->rowCount() > 0)
{
foreach($results as $result)
{ ?>
<tr class = "odd gradeX">
<td class = "center"><?php echo htmlentities($cnt);?></td>
<td class = "center"><?php echo htmlentities($result->BookName);?></td>
<td class = "center"><?php echo htmlentities($result->ISBNNumber);?></td>
<td class = "center"><?php echo htmlentities($result->IssuesDate);?></td>
<td class = "center"><?php if ($result->ReturnDate= = "")
{?>
<span style = "color:red">
<?php echo htmlentities("Not Return Yet"); ?>
</span>
<?php } else {
echo htmlentities($result->SELECT DATE_ADD(d,7,IssuesDate));
}
?></td>
<td class = "center">
<a href = "test-return.php?rid=<?php echo htmlentities($result->rid);?>">
<button class = "btn btn-primary"><i class = "fa fa-edit "></i>Extend</button>
</td>
</tr>
<?php $cnt=$cnt+1;}} ?>
</tbody>
Любые «рабочие коды» не будут отображать результаты в столбце таблицы «дата выполнения», а те, которые не будут, просто сообщат, что есть непредвиденная переменная, символы и т. д.






Вам нужно рассчитать 7 дней в PHP, а не в SQL. Используйте следующий код в своем блоке else для расчета и отображения даты выполнения.
$datetime = new DateTime( $result->IssuesDate );
$datetime->modify('+7 days');
echo $datetime->format('Y-m-d');
CURRENT_TIMESTAMP + 7 days
Правильный синтаксис в стандартном SQL:
CURRENT_TIMESTAMP + INTERVAL 7 DAY
(Ваш запрос действителен, но не делает то, что вы думаете.)
Возможно, вы захотите разрешить полный день, чтобы можно было полностью отказаться от времени, используя CURRENT_DATE вместо CURRENT_TIMESTAMP:
SELECT CURRENT_DATE AS today, CURRENT_DATE + INTERVAL 7 DAY AS due_date;
+------------+------------+
| today | due_date |
+------------+------------+
| 2019-07-13 | 2019-07-20 |
+------------+------------+