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

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

14.12.2019, 10:43. Показов 1084. Ответов 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
3107 / 1281 / 358
Регистрация: 08.02.2013
Сообщений: 7,496
Записей в блоге: 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
3107 / 1281 / 358
Регистрация: 08.02.2013
Сообщений: 7,496
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru