не могу добавить в базу данных MySQL

0

У меня возникли проблемы с добавлением моей формы в мою базу данных.

Я создал форму и скрипт, но мне трудно их реализовать. Есть идеи?

Таблица:

Изображение 174551

Вот 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: Новые ошибки после реализации некоторых предлагаемых изменений:

Изображение 174551

  • 0
    Вы можете показать нам стол
  • 0
    тогда это должно означать, что home.php не должен существовать
Показать ещё 1 комментарий
Теги:

4 ответа

0

Я хочу поблагодарить всех вас за ваше время и усилия и помощь. Оказалось, что в предыдущей форме была синтаксическая ошибка примерно на 400 строк выше этой формы, где я закрывал ее при закрытии. Поэтому вопрос, который я задал, был для вас неразрешимым, поскольку, как оказалось, общий код был более или менее точным. Так что очень большие извинения за мою ошибку ребята и огромное спасибо за вашу помощь. Это, безусловно, научило меня очищать мои html файлы и не позволять им становиться такими большими!

0
  1. Измените действие на action="home.php".
  2. Добавьте этот код в форму:

    <input value="<?php echo $user_id?>" type="hidden" name="user_id">
    
  3. Добавьте этот код в функцию insert_post:

    $user_id = (int)$_POST['user_id'];
    
  4. Замените post_title на pos_title или измените таблицу.

  5. Вам не нужны кавычки в '$user_id', '$topic', но MySQL все равно примет это.

  • 0
    до сих пор выдает ту же ошибку 404. данные не добавлены в таблицу
0

Удалите if(isset($_POST['submitbtn'])){ из функций и добавьте это выше формы:

if(isset($_POST['submitbtn'])){
    insert_post();
}
  • 0
    Это успешно позволило мне добавить пустую запись в базу данных, что значительно дальше, чем я получал до сих пор, так что приветствует совет здесь. Однако теперь все значения не определены: «Примечание: неопределенная переменная: user_id в C: \ xampp \ htdocs \ social_network \ includes \ functions.php в строке 30», есть одно из них для каждой из ЗНАЧЕНИЙ, а также как-то с $ con позже. Я добавлю изображение ошибок в оригинальный пост
  • 0
    где определяется $ user_id?
Показать ещё 5 комментариев
0
$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", которой тоже не должно быть.

  • 0
    Здравствуйте, спасибо за помощь, но, боюсь, это не решило мою проблему. Я отредактировал код выше, чтобы более конкретно объяснить ошибку, которую я получаю после нажатия кнопки. Когда нажимают на submit, это 404. Я также включил ваш код отладки, спасибо за совет по этому поводу. Я получаю одинаковую ошибку как с моим, так и с вашим кодом.
  • 0
    Вы уверены, что home.php выходит? @Davidf
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню