Перейти к содержимому


Вычисления в анкетах


Сообщений в теме: 27

#1 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 22 Март 2012 - 09:13

по поводу анкет - круто!

А можете выложить пример кода:

1. как проверить правильность ввода емэйла (чтобы можно было только емэйл ввести)

2. проверку на уникальность ввода эмэйла (чтобы нельзя было ввести емэйл который уже есть в базе)

#2 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 22 Март 2012 - 09:57

Предположим ваше поле называется 'Email', id вашей анкеты 4.

Тогда вычисление будет выглядеть аналогично:

if (strpos($line['Email'],'@')===false) // Проверяем на наличие собачки
   {
	   echo "<script>k_answer_hide_form4=0;</script>";
	   echo "Неправильный email";
	   $event_cancel=1;
	   return;
   }
if (data_table("Мои клиенты", "`Email`='".addslashes($line['Email'])."'")) // Проверяем на дублирование
   {
	   echo "<script>k_answer_hide_form4=0;</script>";
	   echo "Данный email уже есть в базе";
	   $event_cancel=1;
	   return;
   }


#3 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 22 Март 2012 - 10:49

спасибо огромное

#4 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 28 Март 2012 - 09:00

а как сделать чтобы этот код выполнялся до нажатия отправить?

пытаюсь его просто вставить в яваскрипт - выдает ошибку

#5 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 28 Март 2012 - 09:23

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

#6 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 28 Март 2012 - 16:23

Просмотр сообщенияAnalitic (28 Март 2012 - 09:23) писал:

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

Добавлен Пример 7, в документацию по анкетам.

#7 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 11 Апрель 2012 - 20:36

а какой скрипт в итоге вставить, чтобы проверял на уникальность emaila. по разному пробовал - не получается.


и еще вопрос ... у вас в документации в примере 6 ... приводится пример "http://mysite.ru/index.php?page=my_anket&name=r123456"
А если у меня анкета размещена, не на php, а на html - как тогда прописать ?

#8 Гость_Roman_*

  • Гости

Отправлено 12 Апрель 2012 - 14:38

Вам необходимо добавить Javascript.
function custom_save_qst1()
{
  var email = document.getElementById('k_input_field_1_71').value;
  if (!((/^([a-z0-9_-]+.)*[a-z0-9_-]+@([a-z0-9][a-z0-9-]*[a-z0-9].)+[a-z]{2,4}$/i).test(email))) // Проверяем на корректность
	 {
		alert('Вы ввели некорректный email');
		return false; // Не выполняем отправку данных анкеты
	 }
  return true; // Отправляем данные анкеты
}

В примере 6 документации расширение скрипта в вычислении не участвует, там выделяются только параметры адресной строки после знака вопроса.

#9 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 12 Апрель 2012 - 14:40

я просил не про КОРРЕКТНОСТЬ, а про УНИКАЛЬНОСТЬ ... чтобы если такой емейл уже вводили, то второй раз нельзя было

#10 Гость_Roman_*

  • Гости

Отправлено 12 Апрель 2012 - 14:53

Из примера выше:
if (data_table("Мои клиенты", "`Email`='".addslashes($line['Email'])."'")) // Проверяем на дублирование
   {
		   echo "<script>k_answer_hide_form4=0;</script>";
		   echo "Данный email уже есть в базе";
		   $event_cancel=1;
		   return;
   }
Если код не работает, то проблема с названиями полей или таблиц.

#11 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 12 Апрель 2012 - 15:03

это ведь уже не JavaScript ? а куда его вставлять тогда? отпишитесь пожалуйста чуть подробнее.

#12 Гость_Roman_*

  • Гости

Отправлено 12 Апрель 2012 - 15:15

Нет, это не Javascript. Код надо вставить в вычисление самой анкеты. В настройках анкеты есть вкладка "Вычисления".

#13 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 12 Апрель 2012 - 15:28

вставили в вычисление. теперь действительно в базе строки с повторными емейлами НЕ ВСТАВЛЯЮТСЯ.

НО - пользователю, который заполняет анкету на сайте - сообщение о том, что echo "Данный email уже есть в базе"; НЕ ПОКАЗЫВАЕТСЯ ...

и даже больше того - этого текста нет, в коде с отображением анкеты (который мы вставляем на сайт).

#14 Гость_Roman_*

  • Гости

Отправлено 12 Апрель 2012 - 15:52

echo "<script>k_answer_hide_form4=0;</script>";

В цифре 4 данной строки содержится id анкеты. Откорректируйте в соответсвии с Вашей базой.

#15 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 12 Апрель 2012 - 17:25

у нас именно так и ... не работает ...

#16 Гость_Roman_*

  • Гости

Отправлено 13 Апрель 2012 - 07:54

Консоль ошибок в браузере не открывали? Может там будет какое-то сообщение, которое даст Вам понять, в чём проблема.

#17 smart

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

  • Пользователи
  • PipPipPip
  • 297 сообщений
  • Пол:Мужчина
  • Интересы:v1980.8@gmail.com

Отправлено 13 Апрель 2012 - 08:51

Может выслать Вам доступ к нашей базе и анкете. На какой емэйл это можно сделать?

#18 ZeroCooL

    Участник

  • Пользователи
  • PipPip
  • 17 сообщений
  • Пол:Мужчина

Отправлено 16 Май 2013 - 14:42

Просмотр сообщенияRoman (12 Апрель 2012 - 14:38) писал:

Вам необходимо добавить Javascript.
function custom_save_qst1()
{
  var email = document.getElementById('k_input_field_1_71').value;
  if (!((/^([a-z0-9_-]+.)*[a-z0-9_-]+@([a-z0-9][a-z0-9-]*[a-z0-9].)+[a-z]{2,4}$/i).test(email))) // Проверяем на корректность
	 {
		alert('Вы ввели некорректный email');
		return false; // Не выполняем отправку данных анкеты
	 }
  return true; // Отправляем данные анкеты
}
...

Прошу прощения за подъем старых тем, но по поиску "custom_save_qst" ответов больше нет. Поэтому думаю уместно спросить здесь.

Пример из цитаты (он же в документации по внешним формам http://clientbase.ru...admin_16/anket/) не хочет работать - все время пишет, что email не верный.
Изменения внес - id поля "E-mail" - 121, id анкеты - 1.
Для проверки ввожу abv@abv.ru -> Вы ввели некорректный email. Версия 1.9.8

Что не так?

Сообщение отредактировал ZeroCooL: 17 Май 2013 - 09:22


#19 ZeroCooL

    Участник

  • Пользователи
  • PipPip
  • 17 сообщений
  • Пол:Мужчина

Отправлено 17 Май 2013 - 15:26

Попробовал разные регулярки из интернета, но проблема похоже глубже.

Зайдя в форму из браузера, который никогда не был на этом аккаунте (да и вообще на сайте clientbase.ru) в исходном коде нашел функцию неизменной.
Т.е. как я вставил текст из примера, так он с полем 71 и стоит (похоже, что когда вставил текст примера сразу сохранил).

Теперь как не изменяй, как не сохраняй, как кэш не чисть - все равно один и тот же пример.
Баг или фича?

ADD
Проверил текст HTML-кода формы, который генерирует Кб - там тоже скрипт не меняется

Сообщение отредактировал ZeroCooL: 17 Май 2013 - 15:40


#20 Гость_Roman_*

  • Гости

Отправлено 17 Май 2013 - 15:41

А исходный код вставленной анкеты Вы где смотрели? На сайте или по ссылке в редактировании формы? Если код вставлен на сайте обновляли ли его после сохранения JavaScript?





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных