SQL & amp; PHP: строка UPDATE не работает

Поэтому я должен сделать страницу php, которая одобряет / отклоняет некоторую информацию, взятую определенной строкой в ​​базе данных. Если администратор, который видит информацию, одобряет ее, он помещает некоторые дополнительные значения и обновляет определенную строку в базе данных (эти дополнительные значения равны 0 до утверждения), но в конечном итоге это не работает. Я думаю, что проблема заключается в том, что с файлом Approve.php перенаправляется форма отправки, я думаю, что она не читает значения, введенные администратором.

Вот форма (lecturermeet.php):

 <div class="wrapper col3">
<div class="container">
<h1>Pending Meeting Submissions</h1>

<?php
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("dissdb") or die(mysql_error());
$statuscheck = 0;
$result = mysql_query("SELECT status FROM meeting WHERE status = '$statuscheck'");
if ($result != NULL) {
$result = mysql_query("SELECT id,username,date,subject,report FROM meeting WHERE status =       '$statuscheck'");
while ($row = mysql_fetch_assoc($result)){
$uploader = $row['username'];
$date = $row['date'];
$subject = $row['subject'];
$report = $row['report'];
$id = $row['id'];
echo ' <font size=6> <p>Meeting: #' .$id. ' </font><br><br>Submitted by: '.$uploader.'<br>Date: ' .$date. '<br>Subject: ' .$subject. '<br>Report: '  .$report. '<br> <br></p>'   ;

$showbuttons = 1;

if($showbuttons == 1) : ?><form>
Meeting #:
<input type="number" name="id" id="id" value='$id' min="1" max="20">
</form>

<form>
Project Progression Status (between 1 and 6):
<input type="number" name="progress" id="progress" min="1" max="6">
</form>

<form>
<br>  Effort Shown (between 1 and 6):
<input type="number" name="effort" id="effort" min="1" max="6">
</form>

<form>
<br>  Dissertation Projection (between 1 and 6):
<input type="number" name="projection" id="projection" min="1" max="6">
</form>

<form>
<br>  Lecturer Satisfaction (between 1 and 6):
<input type="number" name="satisfaction" id="satisfaction" min="1" max="6">
</form>

<form>
<br>  Overall (between 1 and 10):
<input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br></form><form action="approve.php" method="post"enctype="multipart/form-data">
<input type="submit" name="approve" value="Approve">
</form>

<label for="rejectinfo"><br><br><br>Rejection comments:</label>
<textarea name="rejectinfo" cols="60" rows="7" id="rejectinfo" ></textarea>

<p><form action="reject.php" method="post"enctype="multipart/form-data">
<input type="submit" name="reject" value="Reject">
<br><br></form></p>
<?php endif;
}} ?>

</div>
</div>

и здесь — Approve.php, к которому перенаправляется форма для обновления определенной строки:

 <?phprequire "config.php";
require "lecturerarea.php";

$id = $_POST['id'];
$progress = $_POST['progress'];
$effort = $_POST['effort'];
$projection = $_POST['projection'];
$satisfaction = $_POST['satisfaction'];
$mark = $_POST['mark'];
$status = 1;
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("dissdb") or die(mysql_error());
mysql_query("UPDATE meeting SET 'progress'='$progress', 'effort'='$effort',
'projection'='$projection', 'satisfaction'='$satisfaction', 'mark'='$mark', 'status'='$status'     WHERE id = '$id'");
echo "The meeting submission is approved! <br> Redirecting now ....";
header("Refresh: 3; lecturerarea.php");?>

-1

Решение

Удалите кавычки вокруг имен ваших столбцов. Это не то идентификаторы.

т.е .: SET 'progress'='$progress'

который должен читаться как (используя пример с обратными ссылками)

 SET `progress`='$progress' // etc.

или удалите кавычки и сделайте то же самое для других.

 SET progress='$progress' // etc.

имеющий Отчет об ошибках на, сигнализировал бы это.

error_reporting(E_ALL);
ini_set('display_errors', 1);

Также or die(mysql_error()) в mysql_query(),

Редактировать:

У вас также есть несколько <form></form> теги. Поместите все в один <form>...</form> плюс вам нужно указать метод.

<form method="post">

<form> по умолчанию GET если опущено

Все ваши переменные, используемые для вставки БД, являются $_POST,

Это равно GET метод

<form>
<br>  Overall (between 1 and 10):
<input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br></form>

и не будет введен в БД.

Следует читать как

<form method="post">
<br>  Overall (between 1 and 10):
<input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br></form>

и сделать то же самое для других.

Для headers already sent, удалить echo сверху header или используйте метаобновление, если хотите, чтобы оно отображало сообщение.


В идеале это то, что вы должны делать:

<form action="approve.php" method="post" enctype="multipart/form-data">
Meeting #:
<input type="number" name="id" id="id" value='$id' min="1" max="20">

Project Progression Status (between 1 and 6):
<input type="number" name="progress" id="progress" min="1" max="6">

<br>  Effort Shown (between 1 and 6):
<input type="number" name="effort" id="effort" min="1" max="6">

<br>  Dissertation Projection (between 1 and 6):
<input type="number" name="projection" id="projection" min="1" max="6">

<br>  Lecturer Satisfaction (between 1 and 6):
<input type="number" name="satisfaction" id="satisfaction" min="1" max="6">

<br>  Overall (between 1 and 10):
<input type="number" name="mark" id="mark" min="1" max="10">
<br><br><br>

<input type="submit" name="approve" value="Approve">

<label for="rejectinfo"><br><br><br>Rejection comments:</label>
<textarea name="rejectinfo" cols="60" rows="7" id="rejectinfo" ></textarea>

<input type="submit" name="reject" value="Reject">
<br><br>
</form>

Примечание:

Ваш настоящий код открыт для SQL-инъекция.
использование готовые заявления, или же PDO с подготовленными заявлениями.

2

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

Хорошо, вы получаете ошибки, потому что когда вы нажимаете кнопку «Подтвердить», вы принимаете только значения этой формы, поэтому, если вы хотите, чтобы данные проекции и другие делали что-то подобное.

<form action="approve.php" method="post"enctype="multipart/form-data">
<input type="submit" name="approve" value="Approve">
<br>  Dissertation Projection (between 1 and 6):
<input type="number" name="projection" id="projection" min="1" max="6">
</form>

И другие входы.

0

По вопросам рекламы [email protected]