Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача данных в MySQL из ajax

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Из модального окна нужно передать информацию в базу
Wooorker
Отправлено: 28 Апреля, 2014 - 15:03:07
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




День добрый, коллеги!

Попытаюсь вкратце изложить проблему.
Есть таблица, в которой выводится товар. Одно из полей таблицы - описание товара. Его редактирование вывел в модальное окно (чтобы подключить туда редактор CKEditor).
В данный момент работает всё: данные из поля в модальное окно передаются, после редактирования из окна в родительское передаются изменённые данные. Только в mysql не могу эти изменённые данные записать.
В скрипте, который выводит модальное окно прописано:
PHP:
скопировать код в буфер обмена
  1. echo "<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>";


далее

PHP:
скопировать код в буфер обмена
  1. echo "function setForm() {\n";
  2. echo "var data = CKEDITOR.instances.MyTextarea.getData();";
  3. echo '$.post("saveCKEd.php", {pDesc: data, p_id: '.$numStr.'});';


и код из saveCKEd.php

PHP:
скопировать код в буфер обмена
  1.     if (isset($POST['pDesc']){
  2.         $pDesc = mysql_real_escape_string($_POST['pDesc']);
  3.         $prId  = mysql_real_escape_string($_POST['p_id']);


и далее

PHP:
скопировать код в буфер обмена
  1.    $query = "UPDATE $product_table SET product_desc =".$pDesc." WHERE product_id =".$prId;


с ajax столкнулся впервые, но все найденные примеры говорят, что надо именно таким образом передавать данные из js в mysql. Очевидно, что до выполнения saveCKEd.php дело не доходит. Подскажите: где ошибка?

(Отредактировано автором: 28 Апреля, 2014 - 15:07:41)

 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 15:09:05
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




ну во первых это:
Wooorker пишет:
echo "function setForm() {\n";
echo "var data = CKEDITOR.instances.MyTextarea.getData();";
echo '$.post("saveCKEd.php", {pDesc: data, p_id: '.$numStr.'});';

должно быть обрамлено тегами
 
My status
 Top
Zuldek
Отправлено: 28 Апреля, 2014 - 15:09:27
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Цитата:
где ошибка?

В том что вы ищите ошибку, а не то, как отлаживать такие ошибки.
Сделайте вывод в браузер результатов всех действий на каждом этапе:

1. Сформировали запрос для отправки по ajax на серверер, вывели.
2. Получили на сервере, вывели обработанные параметры.
3. Сформировали запрос к mysql - вывели запрос или mysql_error().

(Отредактировано автором: 28 Апреля, 2014 - 15:11:24)

 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 15:12:01
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




а потом надо запрос выполнить у вас тут приведен просто текст запроса, а
я не вижу
 
My status
 Top
Wooorker
Отправлено: 28 Апреля, 2014 - 15:27:04
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




3d_killer пишет:
а потом надо запрос выполнить у вас тут приведен просто текст запроса, а
я не вижу


Это всё есть. И <script> всё оформлено. Если б не было оформлено, то в родительское окно из модального данные не передавались бы.
Не работает как только дохожу до строчки
PHP:
скопировать код в буфер обмена
  1. echo '$.post("saveCKEd.php", {pDesc: data, p_id: '.$numStr.'});';

тут сразу и то, что работало, перестаёт работать. Закомментируешь её - опять работает, только в базу не пишет Улыбка

to Zuldek:

именно на этой строчке я не могу никак отловить ошибку. Поэтому прошу помощи.
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 15:33:21
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




с кавычками проблема, попробуй так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $.post("saveCKEd.php", {pDesc: data, p_id: '".$numStr."'});  
  3.  
 
My status
 Top
Wooorker
Отправлено: 28 Апреля, 2014 - 15:39:17
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




3d_killer пишет:
с кавычками проблема, попробуй так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $.post("saveCKEd.php", {pDesc: data, p_id: '".$numStr."'});  
  3.  


Попробывал.
С кавычками по всякому пробывал. И из echo убрал, закрыв до ?> и открыв после <?
всё-равно не работает.
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 15:40:23
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




ошибку какую пишет то?
(Добавление)
файл saveCKEd.php в той же директории лежит?
 
My status
 Top
Zuldek
Отправлено: 28 Апреля, 2014 - 15:44:26
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Wooorker пишет:

именно на этой строчке я не могу никак отловить ошибку. Поэтому прошу помощи.

Список шагов для "отлова" вам написал.
 
 Top
Wooorker
Отправлено: 28 Апреля, 2014 - 17:02:56
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Zuldek пишет:
Wooorker пишет:

именно на этой строчке я не могу никак отловить ошибку. Поэтому прошу помощи.

Список шагов для "отлова" вам написал.


Ни о чем.
Где ошибка, я определил и написал уже.

PHP:
скопировать код в буфер обмена
  1. $.post("saveCKEd.php", {pDesc: data, p_id: '".$numStr."'});

т. к. в ajax не копенгаген, то где здесь ошибка и какая она - определить не могу
могу сказать лишь, что

приводит к аналогичному результату.
Пробывал менять
PHP:
скопировать код в буфер обмена
  1. echo "<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>";

на
PHP:
скопировать код в буфер обмена
  1. echo "<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js'></script>";

- та же проблема.

Файл saveCKEd.php лежит, естественно, в той же директории. Замена на имя любого другого скрипта ничего не даёт.
 
 Top
Wooorker
Отправлено: 28 Апреля, 2014 - 20:09:50
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Никто, что-ли, ни разу не передавал из js в mysql данные? Где в этой строчке ошибка, подскажите, пожалуйста?
 
 Top
3d_killer
Отправлено: 28 Апреля, 2014 - 20:10:32
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




поставь Firebug и отследи уходят ли данные или какая ошибка
(Добавление)
просто такими простейшими не занимался, нет никаких исключений асинхронный не асинхронный, нельзя поставить формат данных. у меня скрипты такие:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. //Создание карты сайта
  3. //********************
  4. $(document).on('click','#create_sitemap',function()
  5.         {
  6.                 var action='post_create_sitemap';
  7.                 f_loader(action);
  8.                 $.ajax({
  9.                 async:true,
  10.                 type: "POST",
  11.                 dataType: 'HTML',
  12.                 url: '/admin/action/core.php',
  13.                 data: {action:action},
  14.                 success: function(data)
  15.                         {      
  16.                                 eval('var obj=' + data);       
  17.                                 if (obj.data['error']=='')
  18.                                         {
  19.                                                 $('.footer_map_site').html("Карта сайта сформирована - "+obj.data['data']);
  20.                                                  f_msg("Карта сайта успешно сформирована - "+obj.data['data']);
  21.                                         }
  22.                                 else
  23.                                         {
  24.                                                 f_data_info(obj.data['error']);
  25.                                         }
  26.                         },
  27.                 error:function()
  28.                         {
  29.                                 f_data_info("Произошла ошибка в процессе обработки, попробуйте еще раз!");
  30.                         },
  31.                 complete:function()
  32.                         {
  33.                                 f_close_loader(action,0);      
  34.                         }
  35.                 });
  36.         });
  37.  
 
My status
 Top
Wooorker
Отправлено: 28 Апреля, 2014 - 23:03:27
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




[quote=3d_killer]поставь Firebug и отследи уходят ли данные или какая ошибка

Каким образом вы представляете отследить с помощью Firebug'a уходят ли данные или какая ошибка?
Открылось модальное окно. Ну исследовал его файрбагом. Такой же код, что и задумывался. Всё. При нажатии на сабмит он не будет мне пошагово выполнение скрипта показывать. Просто закрывается окно, данные в родительское перелетают. В бд ничего не пишется. Никакими файрбагами эту проблему не решить.
По последнему примеру немного подправил свой код. Всё стало работать без отключения (комментирования) этой строки, но в базу так и не пишется.

Вот так сейчас эта строчка выглядит:
PHP:
скопировать код в буфер обмена
  1. echo "$.ajax({type: 'POST', url:'saveCKEd.php', data:'pDesc='+edata+'&p_id=34031'});\n";
 
 Top
3d_killer
Отправлено: 29 Апреля, 2014 - 07:26:21
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




в консоли можно смотреть на какой адрес какие данные ушли
Прикреплено изображение (Нажмите для увеличения)
123321.jpg
 
My status
 Top
Wooorker
Отправлено: 29 Апреля, 2014 - 08:12:07
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Чтобы это увидеть пришлось закомментировать

иначе просто окно закрывалось и ничего не было видно.
Однако! Ошибок никаких нет. В post передается то, что и планировалось.
(Ну не совсем то, вообще то я планировал передать не текст = "edata", а значение присвоенное переменной edata. Ну это ладно, пусть хотя бы этот текст будет в бд записан.
Теоретически всё работает. Возможно проблемы уже в скрипте saveCKEd.php
Но как его отследить, когда этот скрипт ни визуально, ни каким другим образом не отображается?
Я вначале этого скрипта включил

- ничего не дало.
Вот эта конструкция в самом начале
PHP:
скопировать код в буфер обмена
  1. echo "<script type='text/javascript'>alert('Metka2!');</script>";

тоже не выдаёт никаких сообщений.
Прикреплено изображение (Нажмите для увеличения)
firebug_cked.jpg
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB