Не работает запрос на добавление данных в БД
В общем, пытался найти в интернете - не вышло. Поэтому решил написать. Встретился с такой проблемой - по нажатию на кнопку "Отправить" перезагружается страница, а в БД данные не добавляются. Сам код:
$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 шт):
Какой конкретно код подгружается через 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