У меня возникли проблемы с добавлением моей формы в мою базу данных.
Я создал форму и скрипт, но мне трудно их реализовать. Есть идеи?
Таблица:
Вот HTML-форма:
<form method="post" id="form2" action="home.php?id=<?php echo "$user_id";?>"> </br>
<h2>What would you like to ask? Rant away!</h2>
<input type="text" name="title" placeholder="Write a title" size="92px"/>
<textarea cols= "70px" rows="6px" name="content";>Description...</textarea><br/>
<select name="topic">
<option> Select Topic</option>
<?php getTopics() ;?>
</select>
<input type="submit" name ="submitbtn" value="Post to Timeline"/>
</form>
<?php
insert_post();?>
Вот функция - файл, в котором находится функция, включен в файл HTML, используя команду include в верхней части файла.
function insert_post(){
if(isset($_POST['submitbtn'])){
global $con;
$title=$_POST['title'];
$content=$_POST['content'];
$topic=$_POST['topic'];
$insert="INSERT INTO 'posts' ( 'user_id', 'topic_id', 'post_title', 'post_content', 'post_date')
VALUES ('$user_id','$topic','$title','$content',NOW()) ";
$run=mysqli_query($con, $insert);
if($run){
echo"<h3>Discussion posted</h3>";
}
}
}
EDIT: для справки, ошибка, которую я получаю при нажатии на submit, - это 404, в котором говорится, что "объект не найден".
EDIT 2: Изображение таблицы показывает, что строка называется pos_title
тогда как мой собственный код говорит post_title
. Когда код был отредактирован, чтобы сказать pos_title
, эта же ошибка все еще возникала.
EDIT 3: Новые ошибки после реализации некоторых предлагаемых изменений:
Я хочу поблагодарить всех вас за ваше время и усилия и помощь. Оказалось, что в предыдущей форме была синтаксическая ошибка примерно на 400 строк выше этой формы, где я закрывал ее при закрытии. Поэтому вопрос, который я задал, был для вас неразрешимым, поскольку, как оказалось, общий код был более или менее точным. Так что очень большие извинения за мою ошибку ребята и огромное спасибо за вашу помощь. Это, безусловно, научило меня очищать мои html файлы и не позволять им становиться такими большими!
action="home.php"
.Добавьте этот код в форму:
<input value="<?php echo $user_id?>" type="hidden" name="user_id">
Добавьте этот код в функцию insert_post
:
$user_id = (int)$_POST['user_id'];
Замените post_title
на pos_title
или измените таблицу.
Вам не нужны кавычки в '$user_id'
, '$topic'
, но MySQL все равно примет это.
Удалите if(isset($_POST['submitbtn'])){
из функций и добавьте это выше формы:
if(isset($_POST['submitbtn'])){
insert_post();
}
$insert="INSERT INTO 'posts' ( 'user_id', 'topic_id', 'post_title', 'post_content', 'post_date')
VALUES ('" . $user_id . "','" . $topic . "','" . $title . "','" . $content . "',NOW()) ";
Попробуйте этот код. Вы должны конкатенировать с помощью .
вместо вставки переменных в строку:
$run=mysqli_query($con, $insert);
if($run) {
echo"<h3>Discussion posted</h3>";
} else {
echo mysqli_error($con);
}
ПРИМЕЧАНИЕ. Также для целей отладки вы должны проверить mysqli_error($con);
если есть ошибка.
<form method="post" id="form2" action="home.php?id=<?php echo $user_id;?>"> </br>
Когда вы эхо-переменная, нет необходимости в двойных кавычках. Это переменная, а не строка.
<textarea cols= "70px" rows="6px" name="content">Description...</textarea><br/>
И у вас есть точка с запятой после name="content"
, которой тоже не должно быть.