Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Подсчет количества показов формы подписки
Владимир55  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Любопытный
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 916
Пользователь №: 27293
На форуме: 5 лет, 7 месяцев, 26 дней
Карма: -1




Простейшая форма подписки имеется в сети вот здесь: http://www.sitehere.ru/examples/09.09.2014/ Её код я не стал приводить, поскольку он реально длинный и его проще посмотреть прямо на сайте.

Форма всплывает тогда, когда страницу прокрутили до самого низа. Но прокручивают далеко не все посетители, а потому хочется установить счетчик, который будет подсчитывать количество реальных показов.

Для этого я попытался вставить вызов РНР файла, вставив вызов вот таким образом:

<div class="subscribe-me">

<?php


file_put_contents("1stat_form.txt", "ДА");

?>

<h2>
Подписка на обновления</h2>


Надеялся, что запись файла 1stat_form.txt произойдет только тогда, когда форма откроется, но в реальности файл вызывается при каждом открытии страницы, даже если ее не прокручивают вниз и форма на появляется.

Как можно решить эту проблему?

(Описание скрипта http://www.sitehere.ru/nastraivaemoe-vsply...-okno-podpiski)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




Цитата (Владимир55 @ 12.11.2016 - 23:16)
Форма всплывает тогда, когда страницу прокрутили до самого низа.

Вот когда дается команда на показ формы (в JS), то тогда аяксом отсылай соответствующую инфу на сервер.
Ну и вообще разберись с тем, что дает ПХП, а что дает JS, какие происходят клиент-серверные процессы. По целому ряду твоих вопросов видно, что ты этого не понимаешь. Ну вот в данном случае. Естественно, что данная обработка (как ты написал) будет сделана в момент формирования страницы, даже до её показа клиенту. И ты так подсчитаешь только то, сколько раз вообще было обращение к странице.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Владимир55  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Любопытный
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 916
Пользователь №: 27293
На форуме: 5 лет, 7 месяцев, 26 дней
Карма: -1




Цитата (sergeiss @ 13.11.2016 - 06:28)
Вот когда дается команда на показ формы (в JS), то тогда аяксом отсылай соответствующую инфу на сервер.

Я с этого и начал, но, почему-то, не сработало.

Делал вот так:
<div class="subscribe-me">

<?php


echo "
<script type="
. '"text/javascript">' . "
$(document).ready(function() {
$.ajax('1stat_form.txt');
});
</script>
"
;

?>

<h2>
Подписка на обновления</h2>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




То, что ты написал на JS, срабатывает безо всяких условий. Страница загрузилась - пытаешься что-то сделать аяксом. И я не понял, кстати, что именно. Что за текстовый файл у тебя тут указан, какова его роль, по твоему мнению?
Если это (вдруг) сработает, то при каждой загрузке страницы. А тебе надо сделать аяксовый вызов внутри обработчика показа формы.

И еще. Лучше JS хранить в отдельных файлах. Вот так вот формировать код JS внутри ПХП - это изврат и неправильность.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Владимир55  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Любопытный
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 916
Пользователь №: 27293
На форуме: 5 лет, 7 месяцев, 26 дней
Карма: -1




Цитата (sergeiss @ 13.11.2016 - 08:03)
Что за текстовый файл у тебя тут указан, какова его роль, по твоему мнению?
Если это (вдруг) сработает, то при каждой загрузке страницы. А тебе надо сделать аяксовый вызов внутри обработчика показа формы.

И еще. Лучше JS хранить в отдельных файлах. Вот так вот формировать код JS внутри ПХП - это изврат и неправильность.

Вы все верно сказали. Я просто ищу работоспособный способ связи с сервером, а тут любой файл годится, ибо это просто индикатор. И изврат - это временно, потом все почищу.


Цитата
надо сделать аяксовый вызов внутри обработчика показа формы


Как, как конкретно это сделать?
(Я уже сто способов перепробовал)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14966
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 27 дней
Карма: 443




Цитата (Владимир55 @ 13.11.2016 - 12:09)
Как, как конкретно это сделать?
(Я уже сто способов перепробовал)

Так: находишь обработчик открытия (показа) формы. И вставляешь внутрь неё аяксовый вызов. Я даже не знаю, как еще объяснить, честно говоря. Если только в виде "псевдокода"

function ОбработчикОткрытияФормы() {
// сначала код открытия формы
...
// а потом код информирования сервера
$.ajax( ... /*со всеми нужными параметрами*/ );

}


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Владимир55  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Любопытный
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 916
Пользователь №: 27293
На форуме: 5 лет, 7 месяцев, 26 дней
Карма: -1




sergeiss, спасибо!

Я, к сожалению, ничего не понял, но все равно спасибо за попытку помочь!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
comolov  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 43142
На форуме: 5 месяцев
Карма: 1




Владимир55,
Вставь в файл jquery.subscribe-better.js, в метод $.fn.openWindow эти строки

if(typeof settings.myOnShow == 'function') {
settings.myOnShow();
}

должно быть так
...
setTimeout(function(){
$(".sb").show();
$("body").addClass("sb-open");
}, 300);
}
}


if(typeof settings.myOnShow == 'function') {
settings.myOnShow();
}

if (settings.showOnce == true) shown = true;
animating = false;
...

Это вызов функции - коллбека. Передать его теперь нужно так
$(document).ready( function() {
$(".subscribe-me").subscribeBetter({
myOnShow: function() {
Этот код исполнится при открытии формы
$.ajax('http://site.ru/increment.php');
}
}
);
});

PHP файл может быть таким
<?php
$count = (int)file_get_contents('increment.txt');
file_put_contents('increment.txt', $count += 1);

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса