Значение поля формы не отправляется в PHP - PullRequest
0 голосов
/ 26 сентября 2019

Вот весь мой (почти весь) скрипт для new_posts.php. Запрос на обновление не работает, но вместо этого он добавляет новый пост в базу данных.

 if(isset($_POST['add_post'])) {

$title = mysqli_real_escape_string($db, $_POST['title']);
$author = mysqli_real_escape_string($db, $_POST['author']);
$category = mysqli_real_escape_string($db, $_POST['category']);
$body = mysqli_real_escape_string($db, $_POST['body']);
$keywords = mysqli_real_escape_string($db, $_POST['keywords']);

if(isset($_POST['id'])){
  $id = mysqli_real_escape_string($db, $_GET['id']);
  $query = "UPDATE posts SET title='$title',author='$author',category='$category',body='$body',keywords='$keywords' WHERE id='$id'";
}else{
  $d = getDate();
  $date = "$d[month] $d[mday], $d[year]";

  $query = "INSERT INTO posts (title,author,category,body,keywords,date) VALUES('$title','$author','$category','$body','$keywords','$date')";
}
$db->query($query);
}

if(isset($_GET['post'])) {
  $id = mysqli_real_escape_string($db, $_GET['post']);
  $p = $db->query("SELECT * FROM posts WHERE id = '$id'");
  $p = $p->fetch_assoc();
}

$cats = $db->query("SELECT * FROM categories");

?>

Это часть раздела HTML.

    <h1 class="page-header">Add New Post</h1>
      <div class="table-responsive">
        <form method="post">
        <?php if(isset($p)) {
          echo "<input type='hidden' value='$id' name='$id'/>";
        } ?>

1 Ответ

1 голос
/ 26 сентября 2019

Если вставляется новая запись, то ваш запрос UPDATE вообще не выполняется, ваш запрос INSERT.Так что эта проверка false:

if(isset($_POST['id']))

Глядя на то, что вы ожидаете, вы получите $_POST['id']:

"<input type='hidden' value='$id' name='$id'/>"

Если только строковое значение id не находится в $idпеременная, это вообще не будет называться id.Кажется, что именем этого элемента является номер вашей базы данных id.

Не используйте переменную $id в качестве имени, используйте буквенную строку idпоскольку это то, что ожидает серверный код:

"<input type='hidden' value='$id' name='id'/>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...