Или, как говорится в названии, я, возможно, ошибаюсь. Я создал несколько полей в таблице в phpmyadmin. У меня есть «post_id» как уникальный идентификатор. Затем поля или (строки) под названием «first_name», «last_initial», «email», «feedback» и «approved».
Это страница отзывов на веб-сайте. Я поработал правильно, тогда понял, что мне нужно создать способ, чтобы владелец сайта одобрил комментарии перед их отображением.
Я новичок в php и mysql, так что это может быть очень просто для многих из вас здесь. Когда я подключаюсь к базе данных на странице отзывов чуть выше формы для ввода свидетельства, я вызываю все строки, которые имеют значение «1», так как это «одобренные» комментарии. По умолчанию, когда кто-то вводит информацию в форму для подачи отзыва, этому полю присваивается значение «0». Теперь на заднем конце я подключаюсь к базе данных и отображу все строки со значением «0» в полях.
Я использую таблицу html для отображения полей, а последний столбец таблицы имеет флажок. В идеале владелец сайта будет устанавливать флажки рядом с комментариями, которые они хотят одобрить, и нажать кнопку отправки, и будут отмечены только отмеченные флажки.
Проблема, с которой я столкнулся, – это нажать кнопку «Отправить» и подключить код php, который это делает, я использую функцию UPDATE для изменения значения в «одобренном» поле от 0 до 1.
Проблема, с которой я сталкиваюсь, – это одобрение каждого комментария, потому что я не квалифицирую его каким-либо образом с WHERE (функция, оператор или что-то подобное). И поскольку эта страница является динамичной и будет отображать разные комментарии для утверждения, как я могу сказать, действительно нет уникального идентификатора.
Надеюсь, мое невежество по этому вопросу не слишком смутило вас, и вы сможете мне помочь.
Я подключаюсь к базе данных здесь ……
// Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM feedback WHERE approved = 0"); echo '<h1>Submitted Comments</h1>'; echo '<form action="approve_comment.php" method="post">'; echo '<table>'; echo '<tr>'; echo '<th>First Name</th>'; echo '<th>Last</th>'; echo '<th>Email</th>'; echo '<th>Comment</th>'; echo '<th>Check</th>'; echo '</tr>'; while($row = mysqli_fetch_array($result)) { echo '<tr style="border:1px solid #000000; padding:10px;">'; echo '<td style="border:1px solid #000000; padding:10px; width:100px;">' . $row["first_name"].'</td>'; echo '<td style="border:1px solid #000000; padding:10px; width:50px;">' . $row["last_initial"] . '</td>'; echo '<td style="width:200px; padding:10px;">' . $row["email"] . '</td>'; echo '<td style="padding:10px; width:400px;">' . $row["feedback"] . '</td>'; echo '<td>' . '<input type="hidden" name="check" value="0"/>'.'<input type="checkbox" name="check" value="1"/>' . '</td>'; echo '</tr>'; } echo '</table>'; echo '<input style="float:right;" type="submit" value="Approve Selected" />'; echo '</form>'; mysqli_close($con); ?>
Этот код отображает элемент задней части, где они будут комментировать комментарии. Действие выглядит следующим образом: подключение к базе данных здесь …
// Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } mysqli_query($con,"UPDATE feedback SET approved=1 WHERE approved='0'"); mysqli_close($con); header("Location: http://redirecting to the back end page here"); ?>
Все отлично работает, кроме моей части WHERE. Я не уверен, что добавить сюда, или если я даже правильно назову информацию из базы данных, чтобы сделать эту работу.
Любой вход, который у вас есть, будет очень благодарен! Благодаря!
Используйте идентификатор вашей базы данных:
Сначала в вашей форме:
echo "<input type=\"hidden\" name=\"post_id\" value=\"$row[post_id]\"/>";
Затем в обработчике:
$post_id = mysqli_real_escape_string($con, $_POST["post_id"]); mysqli_query($con,"UPDATE feedback SET approved=1 WHERE post_id='$post_id'");
Отредактировано для добавления обязательной защиты SQL-инъекций!