Вставляются пустые строки в таблицу MYSQL
<?php
include('../includes/config.php');
include('../includes/db.php');
?>
<body>
<?php include "header.php" ?>
<div class="block" id="comment-add-form">
<h3>Добавить Пост</h3>
<div class="block__content">
<form class="form__control" method="POST" action="http://pblog/">
<?php //post.php?id=<?php echo $current_id;
mysqli_query($connection, "INSERT INTO `posts`( `title`,`content`)
VALUES ('".$_POST['name']."','".$_POST['content']."')");
?>
<div class="form__group">
<div class="row">
<div class="col-md-6">
<input type="text" required="" class="form__control" value="" name="title"
placeholder="Заголовок">
</div>
</div>
</div>
<div class="form__group">
<textarea name="content" required="" class="form__control" value=""
placeholder="Текст ..."></textarea>
</div>
<div class="form__group">
<input type="submit" class="form__control" name="do_post" value="Добавить">
</div>
</form>
</div>
</div>
<?php include "footer.php" ?>
</body>
<?php
//require_once"config.php";
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$connection = mysqli_connect(
$config['db']['server'] ,
$config['db']['username'],
$config['db']['pasword'],
$config['db']['db_name']
);
if($connection == false)
{
echo "error";
echo mysqli_connect_error();
}
?>
Ответы (1 шт):
А чего Вы еще хотели?
Вставить SQL между тегами <form></form> это не значит обработать форму.
В идеале в action должна быть указана ссылка на скрипт, единственной задачей, которого является обработка запроса данной формы.
Возможно и случаи, когда один и тот же скрипт и отображает форму и обрабатывает данные формы.
Но стоит помнить что это два совершенно разных запроса!!!
В вашем же случае, данные пытались вставиться при каждой загрузке страницы.
в таких случаях ставят проверку на HTTP метод.
- GET запрос отображает форму
- POST запрос обрабатывает данные формы
В коде это выглядит как-то так:
if ($_SERVER['REQUEST_METHOD'] == 'GET'){
// отображение формы
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
// обработка формы
}
Также обратите внимание на следующее
<input type="text" required="" class="form__control" value="" name="title" placeholder="Заголовок">
в форме вы заполняете поле title
mysqli_query($connection, "INSERT INTO `posts`( `title`,`content`)
VALUES ('".$_POST['name']."','".$_POST['content']."')");
а в запросе обращаетесь к $_POST['name']
не надо так.
нужно привести либо к одному либо ко второму.
В итоге:
<?php
include('../includes/config.php');
include('../includes/db.php');
?>
<body>
<?php include "header.php" ?>
<div class="block" id="comment-add-form">
<h3>Добавить Пост</h3>
<div class="block__content">
<?php if ($_SERVER['REQUEST_METHOD'] == 'GET'){ ?>
<form class="form__control" method="POST" action="http://pblog/">
<div class="form__group">
<div class="row">
<div class="col-md-6">
<input type="text" required="" class="form__control" value="" name="name" placeholder="Заголовок">
</div>
</div>
</div>
<div class="form__group">
<textarea name="content" required="" class="form__control" value="" placeholder="Текст ..."></textarea>
</div>
<div class="form__group">
<input type="submit" class="form__control" name="do_post" value="Добавить">
</div>
</form>
<?php }elseif ($_SERVER['REQUEST_METHOD'] == 'POST'){
mysqli_query($connection, "INSERT INTO `posts`( `title`,`content`)
VALUES ('".$_POST['name']."','".$_POST['content']."')");?>
<p style="color: #00FF00;border: 1px solid #00FF00; background-color: rgba(0,255,0,0.3); padding: 25px;text-align: center">
Пост сохранен
</p>
<?php } ?>
</div>
</div>
<?php include "footer.php" ?>
</body>
