Re: Отблагодарю! Помогите разобраться с API CRM системы Fron ты хранишь товары в базе? вот добавь ещё поле артикула, а когда будешь через API делать заказ, то зная какие товары выбрал человек сможешь получить артикулы и отправить их.
Вот сейчас вообще непонятно. В какой базе? Никакой базы у меня нет. Или ты про CRM? Там - да. Я там создал "товары" и присвоил им артикулы. Сейчас когда я отправляю запрос (выполняю тот код, который ты мне прислал в самом начале) в CRM появляется заказ, а в заказе товар соответствующий артикулу "1000" потому что в коде отправки у меня $product[0] = "1000"; Я планирую написать так: Код (PHP): $product[0] = "1000" $product[1] = "1000" $product[2] = "1000" $product[3] = "1000" $product[4] = "1000" Только мне нужно, чтобы вместо 1000 были артикулы со страницы с блюдами. Вот я и думаю эти артикулы вставить либо в data-title инпутов которые у меня передают названия блюд, либо создать ещё 5 инпутов специально для артикулов. Вот. Но я не знаю как передать инфу из data-title в php скрипт. Для инпутов я использую Код (PHP): $Lfood_1 = htmlspecialchars($_POST["Lfood_1"]); , а вот какой код, чтобы переменной присваивалось значение не из value, а из data-title - я не знаю.
Где хранятся товары? только через javascript можно получить data-title делай проще, Код (PHP): <input type="hidden" name="products[1][sku]" value="1000"> <input type="text" name="products[1][count]" value="2"> <input type="hidden" name="products[2][sku]" value="2000"> <input type="text" name="products[2][count]" value="5"> в $_POST['products'] будет список товаров с артикулами и кол-во что заказали, можешь ещё что-то туда добавить https://php.net/manual/ru/language.types.array.php
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Я немного не это имел в виду. Ну да ладно. Попробую сам разобраться. Так даже полезнее будет. Спасибо ещё раз огромное за помощь и отзывчивость. От души. Ты прям очень очень помог.
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Потому что я не знаю как ты там всё хранишь и как всё взаимодействует, просто предлагаю обычные алгоритмы как это делают
Денис, помоги пожалуйста o_o У меня всё работает если прописать в php значения артикулов вручную Код (PHP): $product[0] = "00001"; $product[1] = "00002"; $product[2] = "00003"; $product[3] = "00004"; $product[4] = "00005"; Если так, то всё норм, в CRM создаётся заказ со всеми этими блюдами. Но почему-то передать эти артикулы со страницы заказа у меня не получается. Т.е. вот так уже не работает: Код (PHP): $product[0] = htmlspecialchars($_POST["atribute1"]); $product[1] = htmlspecialchars($_POST["atribute2"]); $product[2] = htmlspecialchars($_POST["atribute3"]); $product[3] = htmlspecialchars($_POST["atribute4"]); $product[4] = htmlspecialchars($_POST["atribute5"]); На странице заказа соответствующие инпуты есть... Код (PHP): <input type="text" class="order_storage" name="atribute1" value="00001" readonly/> <input type="text" class="order_storage" name="atribute2" value="00002" readonly/> <input type="text" class="order_storage" name="atribute3" value="00003" readonly/> <input type="text" class="order_storage" name="atribute4" value="00004" readonly/> <input type="text" class="order_storage" name="atribute5" value="00005" readonly/> Ничего не понимаю. Почему значения артикулов не присваиваются через htmlspecialchars($_POST["atribute1"]); ?
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Покажи какой у тебя тег form может там GET method, а не POST. Попробуй сделать отладку, вывести в начале страницы содержание $_POST вот так: var_export($_POST); отладка http://phpfaq.ru/debug
Код (PHP): <form action="php/order.php" method="post" class="formHC"> <ul> <li> <input type="text" class="order_storage" id="Lfood_1" name="Lfood_1" value="" readonly/> <input type="text" class="order_storage" name="atribute1" value="00001" readonly/> <input type="text" class="order_storage" id="Lfood_2" name="Lfood_2" value="" readonly/> <input type="text" class="order_storage" name="atribute2" value="00002" readonly/> <input type="text" class="order_storage" id="Lfood_3" name="Lfood_3" value="" readonly/> <input type="text" class="order_storage" name="atribute3" value="00003" readonly/> <input type="text" class="order_storage" id="Lfood_4" name="Lfood_4" value="" readonly/> <input type="text" class="order_storage" name="atribute4" value="00004" readonly/> <input type="text" class="order_storage" id="Lfood_5" name="Lfood_5" value="" readonly/> <input type="text" class="order_storage" name="atribute5" value="00005" readonly/> <input type="text" class="order_storage" id="order_summ" name="order_summ" value="" readonly/> <input type="text" class="order_storage" id="client_summ" name="client_summ" value="" readonly/> <input type="hidden" name="fefers" class="refer" value=""> </li> <p>Заполните контактные данные</p> <li><input type="text" id="name" name="name" value="Представьтесь" onblur="if(this.value==''){this.value='Представьтесь';}" onfocus="if(this.value=='Представьтесь'){this.value='';}"/></li> <li><input type="text" id="email" name="email" value="Ваш e-mail" onblur="if(this.value==''){this.value='Ваш e-mail';}" onfocus="if(this.value=='Ваш e-mail'){this.value='';}"/></li> <li><input type="tel" id="tel" name="tel" value="+7 (999) 999-99-99" onblur="if(this.value==''){this.value='+7 (999) 999-99-99';}" onfocus="if(this.value=='+7 (999) 999-99-99'){this.value='';}"/></li> <p>Адрес доставки</p> <li><input type="text" id="street" name="street" value="Улица" onblur="if(this.value==''){this.value='Улица';}" onfocus="if(this.value=='Улица'){this.value='';}"/></li> <li> <input type="text" id="Nhome" name="Nhome" value="Номер дома" onblur="if(this.value==''){this.value='Номер дома';}" onfocus="if(this.value=='Номер дома'){this.value='';}"/> <input type="text" id="Napt" name="Napt" value="Квартира" onblur="if(this.value==''){this.value='Квартира';}" onfocus="if(this.value=='Квартира'){this.value='';}"/> </li> <p>Укажите удобное время доставки</p> <li> <div class="time_but" id="time_but_1"> <input type="checkbox" name="checkbox[]" value="12:00 - 16:00" id="time_1" class="timeD"><p>12:00 - 16:00</p> </div> <div class="time_but" id="time_but_2"> <input type="checkbox" name="checkbox[]" value="16:00 - 20:00" id="time_2" class="timeD"><p>16:00 - 20:00</p> </div> <div class="time_but" id="time_but_3"> <input type="checkbox" name="checkbox[]" value="20:00 - 00:00" id="time_3" class="timeD"><p>20:00 - 00:00</p> </div> </li> <li><textarea id="comment" name="comment" value="" onblur="if(this.value==''){this.value='Комментарий к заказу';} $(this).scrollTop(0);" onfocus="if(this.value=='Комментарий к заказу'){this.value='';}">Комментарий к заказу</textarea></li> <li style="padding: 5px 0px;"><input type="submit" class="submit Sdisabled" value="Отправить" disabled onclick="inTarget.event('order_maked'); return true;"/></li> <li class="errror"></li> <p style="width: 90%; margin: 12px auto 0px; font-size: 14px; font-style: italic;">После отправки заявки, наш менеджер свяжется с Вами для подтверждения заказа.</p> </ul> </form>
объясни что тут вообще происходит Код (PHP): <input type="submit" class="submit Sdisabled" value="Отправить" disabled onclick="inTarget.event('order_maked'); return true;"/> кнопка отключена, вызывается javascript функция, может в ней отправка происходит?
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Не. Она отключена, потому что происходит проверка введённых данных. У меня же нет БД тут, поэтому если пользователь не введёт то что необходимо и попробует отправить заказ, то после объявления ошибки ему пришлось бы заново выбирать все блюда, потому что моя "корзина" очистилась бы. Поэтому я написал проверку введённых данных прямо на этой странице. И кнопка включается только если все данные введены верно.
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Попробуй сам всё правильно заполнить и без проверки через javascript посмотреть что будет в $_POST, так отсечём если js что-то мутит. Добавлено спустя 1 минуту 18 секунд: Re: Отблагодарю! Помогите разобраться с API CRM системы Frontpad проверять дополнительно нужно ещё и на PHP, со стороны сервера, на javascript пологатся нельзя
Не. Те же яйца. Отключения проверки JS я убрал, но толку не было. Сделал var_export($_POST); опять atribute пустые У меня есть в php дополнительная проверка введённых полей. Есть ещё скрытое поле, которое не должно быть заполнено. )) А в php у меня всё правильно? Это должно работать? Код (PHP): $product[0] = htmlspecialchars($_POST["atribute1"]); $product[1] = htmlspecialchars($_POST["atribute2"]); $product[2] = htmlspecialchars($_POST["atribute3"]); $product[3] = htmlspecialchars($_POST["atribute4"]); $product[4] = htmlspecialchars($_POST["atribute5"]); если это работает Код (PHP): $product[0] = "00001"; $product[1] = "00002"; $product[2] = "00003"; $product[3] = "00004"; $product[4] = "00005";
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Да, вроде должно работать, давай сюда ссылку, посмотрим на реальном сайте
Re: Отблагодарю! Помогите разобраться с API CRM системы Fron Какой javascript отвечает за проверку данных перед отправкой и который заполняет Lfood_X?
ОООООООО )))))))))))))) Код (PHP): <script type="text/javascript"> $(document).ready(function(){ $(document).scroll(function(){ var scrl = $(document).scrollTop(); if (scrl>150) { $('.order_line').css('top','0px'); $('.up').css('display','block'); } else { $('.order_line').css('top','-150px'); $('.up').css('display','none'); } }); /* выбор всех пяти блюд */ $('.add_all').click(function(){ $('.order_list ul').empty(); var menu_tipe_id = $('.meny_type li.active').attr('id'); if (menu_tipe_id == "meat"){ var day1 = $('#meat_list .day12').find('.table_center').text(); var day2 = $('#meat_list .day22').find('.table_center').text(); var day3 = $('#meat_list .day32').find('.table_center').text(); var day4 = $('#meat_list .day42').find('.table_center').text(); var day5 = $('#meat_list .day52').find('.table_center').text(); $('li#veg').css('display','none'); $('li#meat').css('display','inline-block'); $('#meat_list .day12,#meat_list .day22,#meat_list .day32,#meat_list .day42,#meat_list .day52').find('.add_to_cart').removeClass('add_to_cart').addClass('remove_from_cart').text('отказаться'); $('#meat_list .day12 .prev_next, #meat_list .day22 .prev_next, #meat_list .day32 .prev_next, #meat_list .day42 .prev_next, #meat_list .day52 .prev_next').css('display','none'); } if (menu_tipe_id == "veg"){ var day1 = $('#veg_list .day12').find('.table_center').text(); var day2 = $('#veg_list .day22').find('.table_center').text(); var day3 = $('#veg_list .day32').find('.table_center').text(); var day4 = $('#veg_list .day42').find('.table_center').text(); var day5 = $('#veg_list .day52').find('.table_center').text(); $('li#meat').css('display','none'); $('li#veg').css('display','inline-block'); $('#veg_list .day12,#veg_list .day22,#veg_list .day32,#veg_list .day42,#veg_list .day52').find('.add_to_cart').removeClass('add_to_cart').addClass('remove_from_cart').text('отказаться'); $('#veg_list .day12 .prev_next, #veg_list .day22 .prev_next, #veg_list .day32 .prev_next, #veg_list .day42 .prev_next, #veg_list .day52 .prev_next').css('display','none'); } $('.order_list ul').append('<li>'+day1+'</li><li>'+day2+'</li><li>'+day3+'</li><li>'+day4+'</li><li>'+day5+'</li>'); $('.add_all').css('display','none'); $('.make_order').css('display','block'); $('#getorder>h2').text('Вы выбрали пять блюд'); $('.modal_text').text('Нажмите "оформить заказ", чтобы продолжить.'); $('#gorder5').css('opacity','1'); }); /* оформление заказа */ $('.make_order').click(function(){ $('.order_list').css('margin-top','-12px').css('margin-bottom','-6px').css('border','1px solid #ddd'); $('.order_list li').css('font-size','12px').css('padding','2px').css('border-bottom','1px dashed #ddd'); $('#getorder>h2').text('Ваш заказ:'); $('.modal_text').css('display','none'); $('.make_order').css('display','none'); $('.add_all').css('display','none'); $('.formHC').css('display','block'); /* перенос данных заказа в инпуты */ $('.order_storage').val(''); var total = $('.order_list>ul>li').length; if (total==3) { $('.p3blyud').css('display','block'); $('#order_summ').val($('.order_summ3').text()); $('#client_summ').val($('.p3blyud').text()); } if (total==5) { $('.p5blyud').css('display','block'); $('#order_summ').val($('.order_summ5').text()); $('#client_summ').val($('.p5blyud').text()); } $('#Lfood_1').val($('.order_list li:nth-child(1)').text()); $('#Lfood_2').val($('.order_list li:nth-child(2)').text()); $('#Lfood_3').val($('.order_list li:nth-child(3)').text()); $('#Lfood_4').val($('.order_list li:nth-child(4)').text()); $('#Lfood_5').val($('.order_list li:nth-child(5)').text()); }); /* выбор времени */ $('.timeD').click(function(){ if($(this).prop("checked")){ $(this).parent('div').addClass('act_time'); } else { $(this).parent('div').removeClass('act_time'); } }); /* проверка ввода данных и изменение кнопки "отправить" */ $('.formHC input, .getorder').click(function(){check_inputs();}); $('.formHC input').keyup(function(){check_inputs();}); function check_inputs() { var name, email, tel, street, name_len, email_len, tel_len, street_len, Nhome, Nhome_len; var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i; name= $("#name").val(); email = $("#email").val(); tel = $("#tel").val(); street = $("#street").val(); Nhome = $('#Nhome').val(); name_len = name.length; email_len = email.length; tel_len = parseInt(tel.replace(/\D+/g,"")); tel_len = tel_len.toString(); tel_len = tel_len.length; street_len = street.length; Nhome_len = Nhome.length; if ( name != 'Представьтесь' && email != 'Ваш e-mail' && tel != '+7 (999) 999-99-99' && street != 'Улица' && Nhome != 'Номер дома' && name_len > 2 && email_len > 6 && tel_len > 10 && street_len > 2 && Nhome_len > 0 && pattern.test($("#email").val()) == true ){ $('.submit').removeClass('Sdisabled').addClass('Senabled').removeAttr('disabled'); $('.errror').css('display','none'); } else { $('.submit').removeClass('Senabled').addClass('Sdisabled').attr('disabled', 'disabled'); } } /* вывод ошибки */ $('.submit').parent('li').bind('mouseenter', function(){ if ($('.submit').hasClass('Sdisabled')){ $('.errror').css('display','block'); var name, email, tel, street, name_len, email_len, tel_len, street_len, Nhome, Nhome_len; var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i; name= $("#name").val(); email = $("#email").val(); tel = $("#tel").val(); street = $("#street").val(); Nhome = $('#Nhome').val(); name_len = name.length; email_len = email.length; tel_len = parseInt(tel.replace(/\D+/g,"")); tel_len = tel_len.toString(); tel_len = tel_len.length; street_len = street.length; Nhome_len = Nhome.length; if (name == 'Представьтесь' || name_len <= 2){$('.errror').text('Пожалуйста введите Ваше имя');} else if (email == 'Ваш e-mail' || pattern.test($("#email").val()) == false){$('.errror').text('Пожалуйста введите e-mail');} else if (tel == '+7 (999) 999-99-99' || tel_len <= 10){$('.errror').text('Пожалуйста укажите Ваш телефон');} else if (street == 'Улица' || street_len <= 2){$('.errror').text('Пожалуйста укажите адрес доставки');} else if (Nhome == 'Номер дома' || Nhome_len == 0){$('.errror').text('Пожалуйста укажите номер дома');} } }); }); </script> Добавлено спустя 2 минуты 58 секунд: Re: Отблагодарю! Помогите разобраться с API CRM системы Frontpad Я уже нашёл ошибку Добавлено спустя 1 минуту 16 секунд: Re: Отблагодарю! Помогите разобраться с API CRM системы Frontpad Код (PHP): /* перенос данных заказа в инпуты */ $('.order_storage').val(''); Мне стыдно. Прости, Денис, что отнимал у тебя столько времени. Не знаю что сказать. Я олень.
menu.php 2414 Код (PHP): /* перенос данных заказа в инпуты */ $('.order_storage').val(''); похоже что ты просто удаляешь перед отправкой все значения у atributeX так как у него .order_storage Добавлено спустя 25 секунд: Re: Отблагодарю! Помогите разобраться с API CRM системы Frontpad Всё нормально, бывает.