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 "while" в JQuery

 PHP.SU

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


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

> Описание: Передаются параметры только из первой формы из input-ов
keilman
Отправлено: 08 Февраля, 2013 - 22:18:12
Post Id


Новичок


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


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




Здравствуйте Уважаемые программисты!

Есть проблема.
Суть такая:

Выводится список товаров циклом WHILE из базы, на странице штук 20 товаров
в каждом есть скрытые поля input для последующей передачи параметров в корзину товаров, так вот сами понимает что циклом вывели и соответственно эта форма и inputы у нее имеют одинаковые названия во всех товарах, только параметры товара разные и соответсвуют товару, смотрим код:

PHP:
скопировать код в буфер обмена
  1. ...while($new_tovar = mysql_fetch_assoc($sql_new_tovar))
  2. {
  3.                 echo '  <span id="block_korzina">
  4.                 <form action="'.$site.$_SERVER['REQUEST_URI'].'" method="post" id="form_insert_korzina">
  5.                 <input type="hidden" name="korz_user_id" value="'.$_SESSION['user_id'].'" />
  6.                 <input type="hidden" name="korz_name_tov" value="'.$new_tovar['ctov'].'" />
  7.                 <input type="hidden" name="korz_kod_tov" value="'.$new_tovar['skod'].'" />
  8.                 <input type="hidden" name="korz_cena" value="';
  9.                 <input type="image" name="go_cart" src="'.$site.$shop.'images/go_cart.png" width="30" height="31" id="go_cart" title="Добавить в корзину" />
  10.                 <input type="hidden" name="korz_date_added" value="'.$date_real.' '.$time_real.'" />
  11.                 <input type="hidden" name="korz_status" value="0" />
  12.                 <input type="hidden" name="insert_korzina" value="form_insert_korzina" />
  13.                 </form>
  14.                 </span>';
  15. }
  16. ... [b]и еще двадцать таких форм[/b] ...


так вот как сделать чтобы скрипт Jquery c Ajax указанный ниже принимал параметры соответствующие товару при клике на кнопку "добавить в корзину", а то он принимает параметры только от первого по списку товара, а если кликать на кнопку по другим товарам он все равно принимает значения из первого товара на странице.
Т. е. мне не нужно объяснять как передать параметры, это я знаю, а как сделать чтобы скрипт отличал формы в товарах и принимал параметры от соответствующей формы товара?

Вот скрипт Jquery:

CODE (javascript):
скопировать код в буфер обмена
  1. <script language="javascript" type="text/javascript">
  2. $(document).ready(function()
  3. {
  4.         $("form#vhod").submit(function()
  5.         {
  6.                 $.ajax(
  7.                 {
  8.                         type: "POST",
  9.                         url: "pages/switch.php?check_autorise_options=options_success",
  10.                         data:
  11.                         {
  12.                                 user_login:$('input#login').val(),
  13.                                 user_parol:$('input#parol').val()
  14.                         },
  15.                         success: function(html)
  16.                 {
  17.                         $("div#autorise").html(html);
  18.                 }
  19.         });
  20.         return false;
  21.         });
  22. });
  23. </script>


Скорее проблема в нем зарыта, нужно как то записать чтобы он по каким то признакам определял формы товаров, а то он видит только форму из первого товара...

Сразу говорю, пробовал это - <input type="hidden" name="korz_kod_tov[]" value="'.$new_tovar['skod'].'" />

т. е. добавлял к name квадратные скобки, но скрипт Jquery обращается только по классу или по id елемента.

также пробовал через функцию serialise()
вот так:


PHP:
скопировать код в буфер обмена
  1. data: $(#form_insert_korzina).serialise(),


параметры принимаются скриптом, но почему то теперь только от последнего товара независимо от того по какому товару нажать "Добавить в корзину"

В ajax и jquery я вообще не силен, поэтому прошу помочь и объяснить почему так. Вернее я понимаю что не соответствуют ключи выбранным элементам, но как это правильно написать и сделать не пойму, уже все перепробовал...

Прошу помощи!

(Отредактировано автором: 09 Февраля, 2013 - 09:37:26)

 
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 22:29:25
Post Id



Активный участник


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


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




Вопрос: зачем отправлять скрытые данные клиенту, чтобы потом их получить обратно?

Для хранения данных между переходами по страницам придумали механизм сессий.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
keilman
Отправлено: 08 Февраля, 2013 - 22:38:50
Post Id


Новичок


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


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




DelphinPRO пишет:
Вопрос: зачем отправлять скрытые данные клиенту, чтобы потом их получить обратно?

Для хранения данных между переходами по страницам придумали механизм сессий.


Нет Вы не поняли меня.. У меня практически все функции на сессиях работают в магазине.
Или я не так описал проблему...
Как по другому не знаю...

Данные не поступают обратно они поступают в обработчик и в базу.
Передается: цена, id, имя товара и другие параметры, id юзера.

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

А вот если убрать скрипт ajax, то все нормально становиться, но товар добавляется с перезагрузкой страницы.

Т. е. смысл в том чтобы определить какие параметры соответствуют какому товару и записать в базу.
Приведенный мною скрипт jquery принимает пока параметры только от одного товара, а нужно от каждого в зависимости от того по какому нажму "добавить в корзину"

Может так понятнее?
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Февраля, 2013 - 22:40:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Ну или сразу можно дать обе ссылки.
Раз: http://forum.php.su/topic.php?forum=33&topic=793
И два: http://forum.php.su/topic.php?forum=33&topic=792
По второй ссылке (там про корзину), могу только сказать, что на аякс её перевести - дело получаса.
(Добавление)
keilman пишет:
данные всегда одинаковые независимо от того на каком товаре нажимаю купить
Аааа Закатив глазки
Вам поможет Math.random():
CODE (javascript):
скопировать код в буфер обмена
  1.  ... url: "ajax/korzina_front.php?hren="+Math.random()+"&act=go_cart", // Обработчик ...
 
 Top
DelphinPRO
Отправлено: 08 Февраля, 2013 - 23:15:37
Post Id



Активный участник


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


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




вы меня не поняли. по простому: незачем загонять данные в скрытые инпуты, а потом (по клику) отправлять всю пачку на сервер обратно. положите их в сессию и пусть лежат там себе спокойно.

Теперь по вашей проблеме в текущей реализации.
для того, чтобы передать массив параметров припишите квадратные скобки к имени
CODE (html):
скопировать код в буфер обмена
  1. <input type="hidden" name="name_tov[]" class="kor_name_tov" ...

а чтобы отправить пачку данных (все данные формы разом) используйте метод jQuery — serialize(). Т.е. вам не нужно циклом пробегаться по всем полям, JQ сделает это сам. Пример использования метода можно посмотреть в документации по jquery, сейчас уже поздо, лень думать Улыбка

(Отредактировано автором: 08 Февраля, 2013 - 23:16:18)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
keilman
Отправлено: 08 Февраля, 2013 - 23:36:06
Post Id


Новичок


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


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




DelphinPRO пишет:
<input type="hidden" name="name_tov[]" class="kor_name_tov"


Про такой способ я в курсе, знаю что если добавлять [] к name то автоматически расставятся ключи, но насколько я знаю и даже сейчас пробовал Jquery обращается по классу или по ID элемента, а не по "name"

По поводу serialise возможно то самое что нужно, но я так и не разобрался как мне сериализовать и рассериализовывать данные к понимаемому PHP фориату...
И как я понял при сериализации все данные поступают в базу в нечитабельном виде, мне это не нужно. Или я ошибаюсь про нечитабельный вид при сериализации?
(Добавление)
DelphinPRO пишет:
используйте метод jQuery — serialize()


Не могу на форуме нажимать "Спасибо", сообщений маловато. Фантик я еще Радость

Буду благодарен если на примерах покажете как использовать сериализацию.

Из формы параметры php в скрипт Jquery, и обратно
 
 Top
keilman
Отправлено: 09 Февраля, 2013 - 09:42:42
Post Id


Новичок


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


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




Проблему так и не решил!
Жду от всех хоть какой-нибудь помощи!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB