Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 7
MySQL

Ошибка при попытке добавления данных в БД через AJAX

14.12.2019, 10:43. Показов 1049. Ответов 4

Студворк — интернет-сервис помощи студентам
Хочу добавить функцию добавления объявления в Избранное.
HTML5
1
2
3
4
5
6
7
8
9
10
<div class='adv' id='adv".$fetch_res_q['id']."'><a href='adv.php'>
            <img  src='files/".$fetch_res_q['files']."'>
            <p>".$fetch_res_q['label']."</p>
            <p>".$fetch_res_q['reg_date']."</p>
            <p>".$fetch_res_q['price']."</p>
            </a>
            <div class='bookmarks'>
              <img src='files/star.png'>
            </div>
           </div>"
страница формируется из таких вот блоков беря данные из базы.
Прочитав пару статей и главу из книги про AJAX захотел, чтобы при нажатии на блок Bookmarks, определялся ID родительского класса и этот id передавался на сервер, где от ID оставались только цифры и на основе этих цифр производилась UPDATE команда в MySQL.
Проблема в том, что AJAX для меня нечто непривычное. Я испробовал стандартный синтаксис.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
unction AJAX(attr)
{
 var request = new XMLHttpRequest()
 nocache = "&nocache=" + Math.random()*100000
 out = ""
 request.open("GET", "AJAX/index.php?attr=" + attr + nocache, true)
 request.onreadystatechange = function()
 {
   if (this.readyState == 4)
   {
     if (this.status == 200)
     {
       if (this.responseText != null)
       {
         alert("asdfsfa")
       }
       else alert("Communication error: No data received")
     }
     else alert( "Communication error: " + this.statusText)
   }
 }
request.send(null)
}
 
 
$('.bookmarks').click(function()
  {
    attr = $(this).parent().attr('id')
    AJAX(attr);
  });
Потом пробовал jQuery
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$('.bookmarks').click(function()
  {
    this_id = $(this).parent().attr('id')
    $.ajax({
            url: 'AJAX/index.php',
            type: 'post',
            cache: false,
            data: "attr="+this_id,
        }).done(function(data){
            //смотрим какой ответ отправляется в случае успеха
            console.log(data);
        }).always(function(){
            $(this).css('background','yellow')// после того как аякс выполнился
        }).fail(function(){
            // пишем ошибку в консоль если что-то пошло не так
            console.log('There was an error');
      })
    })
И в том, и в другом случае выходила ошибка 500 (Internal Server Error)
Код на стороне PHP
PHP
1
2
3
4
5
6
7
8
9
if(!empty($_GET['attr'])
{
  preg_match('/\d{4}/',$_GET['attr'],$new_attr);
  $ajax_q="UPDATE bookmarks SET `advs_id` = CONCAT(`advs_id`,'$new_attr[0]') WHERE `user_id` = \'$_COOKIE['user_id']\'";
  $conn = mysqli_connect($host,$db_login,$db_pass,$db);
  if(!$conn)exit('Ошибка подключения: '.mysqli_error());
  $res_ajax_q=mysqli_query($conn,$ajax_q);
  (!$res_ajax_q)?exit("Ошибка добавления в избранное");:echo "valid";
}
Я глупый человек, который хочет влиться в web. Так что попрошу мягкой критики и помощи.
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2019, 10:43
Ответы с готовыми решениями:

Ошибка при попытке добавления записи в базу данных (MySQL)
Qt 4.8.5, MySQL Community Server (mysql-5.5.23-win32.msi). Собрал драйвер под 10 студию (gmake, nmake). Данные с базы получаю, но добавить...

DataGridView, "ошибка диапазона" при попытке добавления данных
Работаю в Windows Forms. Создаю datagridview, программно описываю его, пытаюсь добавить в него данные - а он мне &quot;ошибка...

При попытке добавления хранимой процедуры появляется ошибка
Кто-нибудь может объяснить, почему когда пытаюсь добавить на форму хранимую процедуру(в Microsoft Visual Studio 2010) появляется сообщение...

4
Невнимательный
 Аватар для ft4l
2835 / 1260 / 357
Регистрация: 08.02.2013
Сообщений: 7,333
Записей в блоге: 2
14.12.2019, 16:39
Цитата Сообщение от TimaKasen Посмотреть сообщение
(!$res_ajax_q)?exit("Ошибка добавления в избранное");:echo "valid";
лишняя ; после exit()
0
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 7
14.12.2019, 16:46  [ТС]
К сожалению это не помогло.
0
Невнимательный
 Аватар для ft4l
2835 / 1260 / 357
Регистрация: 08.02.2013
Сообщений: 7,333
Записей в блоге: 2
14.12.2019, 17:16
Цитата Сообщение от TimaKasen Посмотреть сообщение
ошибка 500
Это, вероятнее всего, ошибка синтаксиса в php-коде....
Других визуально не замечаю. Смотрите в error_log сервера

Добавлено через 6 минут
Цитата Сообщение от TimaKasen Посмотреть сообщение
"UPDATE bookmarks SET `advs_id` = CONCAT(`advs_id`,'$new_attr[0]')
так же должно быть '{$new_attr[0]}'

Добавлено через 1 минуту
$_COOKIE['user_id'] так же в {}
и есть риск что переменные не определены но это не ошибки синтаксиса
0
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 7
15.12.2019, 16:23  [ТС]
Как оказалось я не могу в экранирование. Стоило забить $_COOKIE['user_id'] и $_GET['attr'] в отдельные переменные и уже эти переменные подставить в запросы, как все успешно заработало. И да, AJAX отрабатывал как следует. Ошибка была в php коде, на что и указывала 500 ошибка. Оказывается, если отоспаться, то голова варит гораздо лучше)
Спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2019, 16:23
Помогаю со студенческими работами здесь

Обноление select после добавления данных через ajax
С сервера пришли данные в формате: &lt;option selected&gt;--&lt;/option&gt; &lt;option selected&gt;info&lt;/option&gt; ... Я их в добавляю в выпадающий...

Вылетает ошибка при попытке добавления следующей строки в заполняемую таблицу
пытаюсь скопировать из 1 таблицы значение по щелчку в другую, копирует 1 строку, но почему то вылетает ошибка при попытке добавления...

Массив $_FILES пустой при попытке загрузить файл через AJAX
Здравствуйте понимаю что вопрос с бородой но все же есть форма для загрузки картинок &lt;form id=&quot;add_news&quot;...

PHP MYSQL Ошибка добавления данных через форму
Помогите пожалуйста! Задание стандартное - передать данные с формы и записать их в базу. Вроде все записал, 100 раз перепроверил - все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru