Не работает запрос на добавление данных в БД

В общем, пытался найти в интернете - не вышло. Поэтому решил написать. Встретился с такой проблемой - по нажатию на кнопку "Отправить" перезагружается страница, а в БД данные не добавляются. Сам код:

$ans_que = mysql_query("SELECT tick_id, ans_id, ans FROM anss WHERE tick_id IN ($tick_id)");
$num_rows = mysql_num_rows($ans_que);

if(isset($_POST['send_ans'])){
    if(empty($errorss)){
        mysql_query("INSERT INTO anss (tick_id, ans_id, ans)
            VALUES ($tick_id, ($num_rows+1), '$_POST[ans]')");
        exit;
    }else{
        echo '<div class="form-group error">'.array_shift($errorss).'</div>';
    }
}

Самому мне кажется, что проблема связана с ajax. Весь этот код находится в отдельном файле, подгружаемом через ajax. HTML код, если как-то поможет:

<form method="POST">
    <textarea class="ans" placeholder="..." name="ans" required></textarea>
    <input class="button" type="submit" name="send_ans" value="ОТПРАВИТЬ">
</form>

И ajax код:

$.ajax({
    url: "tick",
    type: "GET",
    data: "tick_id="+tickID,
    success: function(data) {
        $('.this-t').html(data);
        $('.t').hide();
        $('.this-t').show();
    }
});

Помогите, если не сложно, не очень разбираюсь в бэкенде


Ответы (1 шт):

Автор решения: Pavel

Какой конкретно код подгружается через ajax? PHP? Суть ajax чтобы при отправки формы страница НЕ перезапускалась. Если у Вас страница перезапускается после нажатия на кнопку, значит дело до ajax не доходит. В html измените тип input na button

<form method="POST">
    <textarea class="ans" placeholder="..." name="ans" required></textarea>
    <input class="button" type="button" name="send_ans" value="ОТПРАВИТЬ"><!--тут-->
</form>

В JS добавьте обработчик на input

$('.button').click(function(){
$.ajax({
    url: "https://mysite.com/dir/phpscr.php",//здесь укажите ссылку на PHP скрипт
    type: "POST",//исправьте тип на POST в ajax, либо в php используйте тоже GET
    //разницу смотрите в гугле
    data: "tick_id="+tickID,
    success: function(data) {
        alert(data);//для отладки 
        $('.this-t').html(data);
        $('.t').hide();
        $('.this-t').show();
    }
});
});

PHP

print_r($_POST);die();//верните JS все полученные скриптом данные для проверки.
//если всё верно удалите эту строку
$ans_que = mysql_query("SELECT tick_id, ans_id, ans FROM anss WHERE tick_id IN ($tick_id)");
$num_rows = mysql_num_rows($ans_que);

if(isset($_POST['send_ans'])){
    if(empty($errorss)){
        mysql_query("INSERT INTO anss (tick_id, ans_id, ans)
            VALUES ($tick_id, ($num_rows+1), '$_POST[ans]')");
        exit;
    }else{
        echo '<div class="form-group error">'.array_shift($errorss).'</div>';
    }
}

так же используйте в php функцию mysql_error чтобы узнать подробности ошибки последнего mysql запроса

$insertMysl =  mysql_query("INSERT INTO anss (tick_id, ans_id, ans)
            VALUES ($tick_id, ($num_rows+1), '$_POST[ans]')");
    if(!$insertMysl) echo mysql_error($insertMysl);die();

Заметил что вы отправляете ajax type 'GET', а php используете POST. Измените либо там либо там, в примере выше я в обоих случаях использовал POST

→ Ссылка