|
|
|
| Здравствуйте.
Уперся в проблему: Есть галлерея изображений...
Нужно сделать подсчет кликов по каждой картинке, с занесением в базу...
Подсчет кликов хочу сделать на PHP, с помощью обработчика, а вот как передать этому самому обработчику переменную(в фоновом режиме, без перезагрузки страници, и без открытия в новом окне) методом Гет не могу взять в толк...
Например выводятся ссылки
<a href="/click.php?id=1">foto1.jpg</a>
<a href="/click.php?id=2">foto2.jpg</a>
<a href="/click.php?id=3">foto3.jpg</a>
....
<a href="/click.php?id=183">foto183.jpg</a>
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(20.10.2011 в 12:14)
| | А что у Вас происходит при клике на картинку? Переход на click.php ? | |
|
|
|
|
|
|
|
для: Dinya_1
(20.10.2011 в 12:14)
| |
| |
|
|
|
|
|
|
|
для: Dinya_1
(20.10.2011 в 12:14)
| | На каждую из ссылок надо повесить обработчик события onclick, вот так:
<a href="/click.php?id=1" onclick="myFunc (this.href)">foto1.jpg</a>
|
Функция myFunc обработает HREF, вытащит из него значение id и передаст это значение программе на PHP посредством технологии AJAX. Вот так:
function myFunc (x)
{
//вытаскиваем id
var myId = x.split ('?id=') [1];
//создаём объект HttpRequest
if (navigator.appName == 'Microsoft Internet Explorer') htReq = new ActiveXObject ('Microsoft.XMLHTTP');
else htReq = new XMLHttpRequest ();
//Отсылаем id серверу
htReq.open ('get', 'file.php?' + myId);
htReq.send (null);
}
|
Файл file.php обрабатывает QUERY_STRING и записывает данные в соответствующий текстовой файл на сервере.
PS. Что там далее будет делать ссылка - открывать новую страницу (тут же, или в ифрейме, либо будет запускать какой-то скрипт (который надо тогда будет прописать ПОСЛЕ вызова функции, через точку с запятой: onclick="myFunc (this.href); ваш_скрипт") - это НЕ ВАЖНО. Ибо onclick срабатывает РАНЬШЕ, чем происходит реальный переход по HREF ссылки. | |
|
|
|
|
|
|
|
для: АЯС
(20.10.2011 в 18:10)
| | >Файл file.php обрабатывает QUERY_STRING и записывает данные в соответствующий текстовой файл на сервере.
В данном месте не совсем понятно..
Файл PHP должен содержать какойто специальный код QUERY или там уже будет мой код (например Оператор UPDATE на PHP ) ?
А переменную Гет id так и принимать в виде $_GET["id"] ? | |
|
|
|
|
|
|
|
для: Dinya_1
(20.10.2011 в 20:02)
| | 1. Функция myFunc () вызовет файл file.php?НОМЕР, где НОМЕР - это "вытащенный" из HREF ссылки id
2. Всё, что написано в URL после символа вопроса - это и есть QUERY_STRING
3. Файл file.php должен "вытащить" эту самую QUERY_STRING и таким образом получить НОМЕР ссылки, по которой кликнули.
4. Инструкция по "вытаскиванию" - простейшая: $nomer = $_SERVER['QUERY_STRING'];
5. Счётчики (в самом простом виде) организуются так:
-- у вас, положим, 22-е разные ссылки с разными id (от 1 до 22) и клики по ним всем вы хотите посчитать.
-- для этого вам на сервере надо создать 22 текстовых файла, название которых будет содержать этот самый id. Например, файлы id1.txt, id2.txt, id3.txt,.. id22.txt
-- в каждый из файлов надо изначально прописать цифру 0 (кликов по соответствующей ссылке не было).
-- как только клиент кликнет, например, по ссылке с id=3, то функция myFunc () передаст файлу file.php этот самый номер 3 в виде QUERY_STRING; файл file.php вытащит эту цифру 3, откроет соответствующий файл под названием id3.txt; прочитает имеющуюся в нём цифру (в первый раз это будет 0), прибавит к этой цифре единицу и полученное запишет обратно в файл id3.txt (таким образом после первого клика в файле будет уже цифра 1, после второго - 2 и т. д.).
-- когда вам надо будет УЗНАТЬ - сколько кликали по какой-то ссылке, просто открываете соответствующий файл и читаете его значение.
Для организации всего вышенаписанного вам нужны несколько методов языка PHP для работы с файлами:
fopen (); flock (); fread (); fputs (); fclose () - открыть, запереть, читать, записывать, закрывать.
Теперь понятно? | |
|
|
|
|
|
|
|
для: АЯС
(20.10.2011 в 20:34)
| | Спасибо. Буду пробывать реализовать
А можно еще вопрос нельзя зделать запись прямо в базу?
Р/s В общем плане понятно. Спасибо. | |
|
|
|
|
|
|
|
для: Dinya_1
(20.10.2011 в 21:38)
| | можно, вы просто в фоновом режиме вызываете обычный php файл. | |
|
|
|
|
|
|
|
для: АЯС
(20.10.2011 в 20:34)
| | Можно ли к этому еще прибавить, чтоб после фонового выполнения php скрипта, в контейнере менялась информация, например возле картинки отображалось то самое количество кликов? или как пример менялся весь контейнер, например: "Спасибо за клик!"? | |
|
|
|
|
|
|
|
для: Timchik_
(02.11.2011 в 13:38)
| | можно только тогда вашь php файл еще и должен что выдать на вывод, это что-то вы обработаете с помощью javascript и вставите в нужное место ) | |
|
|
|
|
|
|
|
для: KPETuH
(02.11.2011 в 15:20)
| | Вот это уже интересно!
А можно пример подобного привести? Я в принципе применяю iframe - но это как то уже не модно ) хотелось бы с помощью java сделать. | |
|
|
|
|
|
|
|
для: Timchik_
(02.11.2011 в 15:43)
| | Я для этого использую jquery в нем с AJAX становиться все просто.
Вот к примеру у меня есть функция которая обращается к файлу php, передает методом post в него данные, принимает из него html код который я вставляю в определенное место на странице. Функция в общем то реализует мини чат.
function show_chat(){
//Получаем время последнего сообщения
n = $("#message p:last").html();
time=n.split('<br>');
//Обращаемся к файлу message.php отправляем туда переменную time (в message.php это будет $_POST['time'])
$.post("message.php",
{time: time[0]},
//Обрабатывем и помещаем полученный html в элемент с id = message
function(html){
if (html!="False") {//По задумке возвращается либо новые сообщения либо просто текст False если новых сообщений не было
$("#message").html(html); //Здесь помещаем полученный html в контейнер
}
}, "html" //Здесь указывается тип получаемых данных, если почитаете про jquery и AJAX увидите что данные можно получить разные и не только html
);
}
|
http://jquery-docs.ru/ajax/jquery-post/ | |
|
|
|