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 :: Как записать инфу в БД без перезагрузки

 PHP.SU

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


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

> Без описания
freekc
Отправлено: 20 Декабря, 2014 - 22:37:25
Post Id


Новичок


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


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




Здравствуйте.
Подскажите, пожалуйста, в чем проблема:

На странице, есть форма:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="form" >
  3.          <input name="title" type="hidden" class="title" value="Название"/>
  4.          <input name="price" type="hidden" class="price" value="45"/>
  5.          <input name="post-id" type="hidden" class="post-id" value="ID"/>
  6.  
  7.     Кол-во: <input name="quantity" type="text" size="5" class="quantity" value="1"/>
  8.     <a href="#" >Добавить</a>
  9.  </div>
  10.  



С помощью ajax запроса (без перезагрузки страницы) нужно записать инфу с этой формы в БД.

Вот запрос:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.   $(document).ready(function () {
  4.         $(".form a").click(function () {
  5.                 var parent = $(this).parent().parent();
  6.                 var title = $(".title").val();
  7.                 var price = $(".price").val();
  8.                 var id = $(".post-id").val();
  9.                 var quantity = $(".quantity").val();
  10.  
  11.                 $.ajax ({
  12.                         type: "POST",
  13.                         url: "адрес обработчика",
  14.                         data: {title: title, price: price, id:id, quantity:quantity},
  15.                         success: function(data) {alert("Добавлено")}
  16.                 });
  17.  
  18.         return false;
  19.         });
  20.   });
  21. </script>
  22.  


В обработчике
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $productid = $_POST['post-id'];
  3. $title = $_POST['title'];
  4. $quantity = $_POST['quantity'];
  5. $price = $_POST['price'];
  6.  
  7. add2basket($userid, $productid, $title, $quantity, $price);
  8.  


add2basket - функция, которая записывает инфу в БД

Проблема в том, что в обработчик передается только поле title и только первого элемента, все остальные почему то не передаются.

Сама форма (без ajax запроса, с перезагрузкою) работает и все записывается.
Помогите, пожалуйста. В ajax не силен, если можно подробней...
 
 Top
MAXUS
Отправлено: 21 Декабря, 2014 - 07:50:46
Post Id


Посетитель


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


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




freekc пишет:
Сама форма (без ajax запроса, с перезагрузкою) работает и все записывается.
Помогите, пожалуйста. В ajax не силен, если можно подробней...


Из явных косяков... В аякс передается id:id, а обработчик ожидает post-id. В обработчике, соответственно, $_POST["post-id"] надо заменить на $_POST["id"].
 
 Top
freekc
Отправлено: 21 Декабря, 2014 - 10:07:24
Post Id


Новичок


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


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




MAXUS пишет:
$_POST["post-id"] надо заменить на $_POST["id"].


Да, это точно, недосмотрел, но это никак не влияет на передачу (только это поле не должно было записаться), а у меня записывает только название и поле price (только вбивает 1 независимо от того сколько там прописано) и только первого поста...

Тоесть, если нажать на ссылку на втором посте - в БД все равно записывает данные первого

(Отредактировано автором: 21 Декабря, 2014 - 11:32:25)

 
 Top
Ex
Отправлено: 21 Декабря, 2014 - 11:15:06
Post Id


Частый гость


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


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




а попробуй так, я через JQ ajax передаю методом пост таким образом:
CODE (javascript):
скопировать код в буфер обмена
  1. ...
  2. data:"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity
  3. ...

(Отредактировано автором: 21 Декабря, 2014 - 11:21:40)

 
 Top
freekc
Отправлено: 21 Декабря, 2014 - 11:31:25
Post Id


Новичок


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


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




Ex - пробовал

data:"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity+",

и так

data: {"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity+"},

форма вовсе не работает...


Вот такая конструкция работает:

Спойлер (Отобразить)


А без перегрузки страницы никак
Я уже дня 3 ломаю голову и все никак не получается...


Мне нужно всего то записать инфу в БД без перезагрузки страницы, а застрял на долго...

(Отредактировано автором: 21 Декабря, 2014 - 11:42:01)

 
 Top
Ex
Отправлено: 21 Декабря, 2014 - 14:08:42
Post Id


Частый гость


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


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




freekc пишет:
Ex - пробовал

data:"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity+",

и так

data: {"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity+"},


у тебя и в 1 и во 2 лишние +"
 
 Top
freekc
Отправлено: 21 Декабря, 2014 - 14:21:39
Post Id


Новичок


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


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




Ex пишет:
у тебя и в 1 и во 2 лишние +"


я пробовал и так

data:"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity",

только при этом совсем не происходит передача данных к обработчику.
 
 Top
Ex
Отправлено: 21 Декабря, 2014 - 14:24:28
Post Id


Частый гость


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


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




ты кавычку в конце не убрал опять, она лишняя Ха-ха
 
 Top
freekc
Отправлено: 21 Декабря, 2014 - 14:44:40
Post Id


Новичок


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


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




Да, отправка запроса происходит, но в БД всеравно заносится только Название ы только 1=го поста.. Остальные поля не вписываются почемуто...
 
 Top
Ex
Отправлено: 21 Декабря, 2014 - 16:43:59
Post Id


Частый гость


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


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




Еще 1 вариант: у тебя на странице есть еще объекты с таким же классом.
Попробуй этим импутам дать уникальный ид и с них считывать.
 
 Top
freekc
Отправлено: 21 Декабря, 2014 - 20:27:02
Post Id


Новичок


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


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




Да вот добавил ID к инпутам и форме
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="" class="form_<?php the_ID(); ?>">
  3.          <input name="title" type="hidden" class="title-form" value="<?php the_title(); ?>"/><br/>     
  4.          <input name="price" type="hidden" class="price-form" value="45"/><br/>        
  5.          <input name="post-id" type="hidden" class="id-form" value="<?php the_ID(); ?>"/><br/>
  6.  
  7.     Кол-во товара: <input name="quantity" type="text" size="5" class="quantity-form" value="1"/><br/>
  8.     <input name="item" type="submit" class="submit" value="Добавить товар" />
  9.  </form>
  10.  


прописал их в скрипте

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.    $(document).ready(function () {
  4.         $(".form_<?php the_ID(); ?>").on('submit', function() {
  5.                 var parent = $(this).parent().parent();
  6.                 var title = $(".title-form_<?php the_ID(); ?>").val();
  7.                 var price = $(".price-form_<?php the_ID(); ?>").val();
  8.                 var id = $(".id-form_<?php the_ID(); ?>").val();
  9.                 var quantity = $(".quantity-form_<?php the_ID(); ?>").val();
  10.  
  11.                 $.ajax ({
  12.                         type: "POST",
  13.                         url: "адрес обработчика",
  14.                         data:"title="+title+"&price="+price+"&id="+id+"&quantity="+quantity,
  15.                         success: function(data) {alert("Товар добавлен")}
  16.                 });
  17.         return false;
  18.         });
  19.    });
  20. </script>
  21.  


на отдельной странице заработало, а вот на потоке никак не хочет..

там конструкция вида:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul>
  3.    <li>
  4.        картинка  айди  цена
  5.        форма отправки на запись в БД (та что сверху)
  6.    </li>
  7.  
  8.    <li>
  9.        картинка   айди  цена
  10.        форма отправки на запись в БД (та что сверху)
  11.    </li>
  12.  
  13. </ul>
  14.  
  15.  
 
 Top
3d_killer
Отправлено: 21 Декабря, 2014 - 20:38:55
Post Id



Участник


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


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




не проще форме сделать serialize и отправить а не создавать кучу переменных?
 
My status
 Top
freekc
Отправлено: 21 Декабря, 2014 - 21:08:52
Post Id


Новичок


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


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




3d_killer пишет:
сделать serialize и отправить


а можно подробней, никогда не работал с таким...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB