Php счетчик кликов кнопка
Button (Кнопка)
Общая информация
Кнопка — один из самых распространенных элементов управления в программировании. Наследуется от TextView и является базовым классом для класса СompoundButton. От класса CompoundButton в свою очередь наследуются такие элементы как CheckBox, ToggleButton и RadioButton. В Android для кнопки используется класс android.widget.Button. На кнопке располагается текст и на кнопку нужно нажать, чтобы получить результат. Альтернативой ей может служить компонент ImageButton (android.widget.ImageButton), у которого вместо текста используется изображение.
В студии кнопка представлена компонентом Button в разделе Widgets. Управлять размером шрифта, цветом текста и другими свойствами можно через атрибут textAppearance, который задействует системные стили. Выпадающий список данного свойства содержит огромный перечень вариантов. Также вы можете вручную задать конкретные индивидуальные настройки через отдельные свойства.
Если вы растягиваете кнопку по всей ширине экрана (android:layout_width=»match_parent»), то дополнительно рекомендую использовать атрибут android:layout_margin (или родственные ему layout_marginRight и layout_marginLeft) для создания отступов от краев экрана (веб-мастера знакомы с этими терминами).
Так как кнопка является наследником TextView, то использует многие знакомые атрибуты: textColor, textSize и др.
Три способа обработки событий нажатий на кнопку
Если вы разместили на экране кнопку и будете нажимать на неё, то ничего не произойдёт. Необходимо написать код, который будет выполняться при нажатии. Существует несколько способов обработки нажатий на кнопку.
Первый способ — атрибут onClick
Относительно новый способ, специально разработанный для Android — использовать атрибут onClick (на панели свойств отображается как On Click):
Имя для события можно выбрать произвольное, но лучше не выпендриваться. Далее нужно прописать в классе активности придуманное вами имя метода, который будет обрабатывать нажатие. Метод должен быть открытым (public) и с одним параметром, использующим объект View. Вам нужно выучить пять слов для создания метода, а сам метод поместить в класс (если вы ещё путаетесь в структуре Java-кода, то вставьте метод перед последней фигурной скобкой):
Когда пользователь нажимает на кнопку, то вызывается метод onMyButtonClick(), который в свою очередь генерирует всплывающее сообщение.
Обратите внимание, что при подобном подходе вам не придётся даже объявлять кнопку через конструкцию (Button)findViewById(R.id.button1), так как Android сама поймёт, что к чему. Данный способ применим не только к кнопке, но и к другим элементам и позволяет сократить количество строк кода.
Второй способ — метод setOnClickListener()
Более традиционный способ в Java — через метод setOnClickListener(), который прослушивает нажатия на кнопку. Так как для начинающего программиста код может показаться сложным, то рекомендуется использовать подсказки студии. Вот как это будет выглядеть. Предположим, у вас на экране уже есть кнопка button. В коде вы объявляете её обычным способом:
Следующий шаг — написание метода для нажатия. Напечатайте имя элемента и поставьте точку button. — среда разработки покажет вам список доступных выражений для продолжения кода. Вы можете вручную просмотреть и выбрать нужный вариант, а можно продолжать набирать символы, чтобы ускорить процесс. Так как с нажатиями кнопок вам часто придётся работать, то запомните название его метода (хотя бы первые несколько символов) — набрав четыре символа (seto), вы увидите один оставшийся вариант, дальше можно сразу нажать клавишу Enter, не набирая оставшиеся символы. У вас появится строка такого вида:
Курсор будет находиться внутри скобок и появится подсказка OnClickListener l. Начинайте набирать new OnClickListener. Здесь также не обязательно набирать имя полностью. Набрав слово Oncl, вы увидете нужный вариант и снова нажимайте Enter. В результате вы получите готовую заготовку для обработки нажатия кнопки:
Теперь у вас есть рабочая заготовка и сразу внутри фигурных скобок метода onClick() вы можете писать свой код. Рекомендую потренироваться и набить руку в создании заготовки. Это не так сложно, и с практикой навык закрепится автоматически.
Как вариант, можно вынести код для OnClickListener в отдельное место, это удобно, когда кнопок на экране несколько и такой подход позволит упорядочить код. Удалите предыдущий пример и начните писать код заново. Принцип такой же, немного меняется порядок. В предыдущем примере мы сразу прописали в методе setOnClickListener слушателя new OnClickListener. с методом onClick(). Можно сначала отдельно объявить отдельную переменную myButtonClickListener:
Во время набора активно используйте подсказки через Ctrl+Space. Набрали несколько символов у первого слова и нажимайте эту комбинацию, набрали после слова new несколько символов и снова нажимайте указанную комбинацию — заготовка будет создана за несколько секунд, а вы избежите возможных опечаток.
У нас есть готовая переменная, и теперь, когда вы будете набирать код button.setOnClickListener, то вместо new OnClickListener впишите готовую переменную.
Для новичка описание может показаться сумбурным и не понятным, но лучше самостоятельно проделать эти операции и понять механизм.
Третий способ — интерфейс OnClickListener
Третий способ является родственным второму способу и также является традиционным для Java. Кнопка присваивает себе обработчика с помощью метода setOnClickListener (View.OnClickListener l), т.е. подойдет любой объект с интерфейсом View.OnClickListener. Мы можем указать, что наш класс Activity будет использовать интерфейс View.OnClickListener.
Опять стираем код от предыдущего примера. Далее после слов extends Activity дописываем слова implements OnClickListener. При появлении подсказки не ошибитесь. Обычно первым идёт интерфейс для диалогов, а вторым нужный нам View.OnClickListener.
Название вашего класса будет подчёркнуто волнистой красной чертой, щёлкните слово public и дождитесь появления красной лампочки, выберите вариант Implement methods. Появится диалоговое окно с выделенным методом onClick. Выбираем его и в коде появится заготовка для нажатия кнопки.
Метод будет реализован не в отдельном объекте-обработчике, а в Activity, который и будет выступать обработчиком. В методе onCreate() присвоим обработчик кнопке. Это будет объект this, т.е. текущий объект нашей активности.
На первых порах такой способ также покажется вам сложным и непонятным. Со временем и опытом понимание обязательно придёт.
Лично я рекомендую вам использовать первый способ, как самый простой и понятный. Использование второго и третьего способа дадут вам представление, как писать обработчики для других событий, так как кнопка может иметь и другие события. Например, кроме обычного нажатия существует долгое нажатие на кнопку (long click). Один из таких примеров с методом касания я привёл в конце этой статьи.
О том, как обрабатывать щелчки кнопки я написал отдельную статью Щелчок кнопки/Счетчик ворон. Также кнопки часто будут встречаться во многих примерах на сайте. Про обработку длительный нажатий можно прочитать в статье, посвященной ImageButton.
Плодитесь и размножайтесь — это про кошек, а не про кнопки
Когда у вас одна кнопка в окне, то у вас будет один метод, две кнопки — два метода и так далее. Если у вас несколько кнопок, то не обязательно для каждой прописывать свой метод, можно обойтись и одним, а уже в самом методе разделять код по идентификатору кнопки. Если вы посмотрите на код в предыдущих примерах, то увидите, что в методе присутствует параметр View, который и позволяет определить, для какой кнопки предназначен кусок кода:
Предположим, у вас есть три кнопки:
Как видите, мы сократили количество кода. Теперь у нас один обработчик onClick(), в котором прописаны действия для трёх кнопок.
Сделать кнопку недоступной
Иногда нужно сделать кнопку недоступной и активировать её при определённых условиях. Через XML нельзя сделать кнопку недоступной (нет подходящего атрибута). Это можно сделать программно через метод setEnabled():
Как альтернативу можете рассмотреть атрибут android:clickable, который позволит кнопке не реагировать на касания, но при этом вид кнопки останется обычным.
Сделать кнопку плоской
Стандартная кнопка на экране выглядит выпуклой. Но в некоторых случаях желательно использовать плоский интерфейс. Раньше для этих целей можно было использовать TextView с обработкой щелчка. Но теперь рекомендуют использовать специальный стиль borderlessButtonStyle:
Кнопка сохранит своё привычное поведение, будет менять свой цвет при нажатии и т.д.
С появлением Material Design добавились другие стили, например, style=»@style/Widget.AppCompat.Button.Borderless», который является предпочтительным вариантом. Попробуйте также style=»@style/Widget.AppCompat.Button.Borderless.Colored»
Коснись меня нежно
Если вы внимательно понаблюдаете за поведением кнопки, то увидите, что код срабатывает в тот момент, когда вы отпускаете свою лапу, извините, палец с кнопки. Для обычных приложений это вполне нормально, а для игр на скорость такой подход может оказаться слишком медленным. В подобных случаях лучше обрабатывать ситуацию не с нажатием кнопки, а с его касанием. В Android есть соответствующий слушатель OnTouchListener():
У метода onTouch() есть параметр MotionEvent, позволяющий более тонко определять касания экрана. Если произойдет событие, когда пользователь коснулся экрана, то ему будет соответствовать константа ACTION_DOWN. Соответственно, если пользователь уберёт палец, то нужно использовать константу ACTION_UP. Таким образом, можете расценивать щелчок кнопки как комбинацию двух событий — касания и отпускания.
Получить текст с кнопки
Навеяно вопросом с форума. Задача — получить текст кнопки в методе onClick(). У метода есть параметр типа View, у которого нет метода getText(). Для этого нужно привести тип к типу Button.
Если у вас несколько кнопок привязаны к методу onClick(), то щелчок покажет текст нажатой кнопки.
Палитра тишины…
- Главная
- Обмен постовыми
- Обратная связь
- Карта сайта
- О блоге
- Портфолио
Простой счётчик нажатий на кнопку (PHP)…
Не так давно начал серию постов “Для новичка” и написал первый пост этой серии “Вывод информации о сервере посредством PHP“. В продолжение открытой темы даю новый меленький урок. Пост написан по просьбе пользователя Gala-Ko. В нём я постараюсь в очень очень кратком виде, но на живом примере описать основной принцип создания счетчика нажатий на кнопку типа “submit” или “button”, написанного на PHP и хранящего данные в простом текстовом файле *.txt. и позволяющего выводить его текущее значения рядом с вышеупомянутой кнопкой.
Надо сказать, что счётчик кликов, наравне со счётчиком посещений, можно считать одним из самых простых php-сценариев, между тем, отлично показывающим возможности и синтаксис языка. Именно с написания подобных вещей рекомендуется начинать изучение.
Итак, приступим. Предположим, что у нас имеется первоначальный код html-страницы с формой и кнопкой, при нажатии на которую запускается печать текущей страницы. Выглядит он следующим образом:
И так, для начала, мы имеем страницу (index.html) с формой, которая содержит кнопку, например “Распечатать”. Рядом с кнопкой нам надо вывести счетчик нажатий на данную кнопку (данное значения будет выводиться силами PHP и храниться в текстовом файле, допустим, counter.txt). Алгоритм прост – пользователь нажимает на кнопку, выполняется небольшой php-сценарий, который забирает из файла counter.txt текущее значение счетчика, прибавляет к нему единицу и переписывает содержимое файла, вставив в него новое значение (старое, при этом, заранее удаляется из файла).
PHP-сценарий у нас будет располагаться на самой странице с формой (так проще, но его в любой момент можно перенести в отдельный файл), следовательно её надо предварительно переименовать из “index.html” в “index.php”. Плюс, необходимо заранее создать файл “counter.txt”, в котором, собственно, и будет храниться текущее значение счетчика, и записать в него первоначально значение, а именно “0″. В будущем, можно добавить в сценарий пару строк и он сам будет создавать этот файл при его отсутствии.
Далее, после кнопки внутри формы вставляем первый PHP-фрагмент. В нём мы указываем путь к файлу, в котором хранится текущее значение, открываем файл на чтение, забираем значение, закрываем файл, выводим значение.
Далее, снимаем с кнопки вызов js-сценария на распечатку, а после закрывающего тега формы вставляем еще один PHP-фрагмент, который проверяет, была ли нажата кнопка. Если кнопка нажата то выполняется следующая последовательность действий: открывается на запись файл со значением; значение увеличивается на один и записывается в файл, предварительно удалив из него данные; файл закрывается. После этого выполняется простейший js-сценарий, запускающий распечатку текущей страницы.
На этом, собственно, вся работа по модернизации страницы завершена. Ничего сложного, вроде бы, мы не сделали, но теперь всё именно так, как нам и хотелось. В итоге мы получили счётчик нажатий на кнопку в выводом его текущего значения на странице. Полный листинг страницы будет выглядеть, примерно, следующим образом:
Думается, пример получился не самый простой, но, зато он “живой” и умеет делать действительно что-то полезное. Тем более, что писался он по просьбе человека, перед которым стояла определённая задача – её мы, собственно, и решили. В дальнейшем, путём нехитрых манипуляций при минимальных знаниях PHP данный скрипт можно значительно расширить и доработать.
С радостью отвечу на возникшие вопросы и выслушаю Ваши предложения…
AHK: Счетчик кликов клавишей мыши в определенной области экрана
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 19
1 Тема от Jack 2020-09-09 14:20:01 (изменено: Jack, 2020-09-09 14:42:50)
- Jack
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Тема: AHK: Счетчик кликов клавишей мыши в определенной области экрана
Помогите пожалуйста!
Нужен код для подсчета кликов мышью по кнопке в окне браузера.
В идеале хотелось, чтобы код сам определял эту область кнопки, по заранее сделанному её скрину. Так как кнопка не всегда находится на одном месте. При прокрутке, она немного смещается по вертикали.
Но если это будет проблемно исполнить, можно просто забить область на экране в код. и желательно, чтобы эта область была как то выделена, например рамкой в 1 или 2 пикселя
Сразу хочу предупредить, что я полный чайник в написании кода Фантазия работает, а языков не знаю
2 Ответ от __Михаил__ 2020-09-09 20:21:58
- __Михаил__
- Участник
- Неактивен
- Рейтинг : [ 76 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
Данный форум помогает в решении проблем.
Напишите свой код и если он кого-то заинтересует, то вам помогут решить ваши проблемы с ним.3 Ответ от Jack 2020-09-09 20:48:37 (изменено: Jack, 2020-09-09 20:50:12)
- Jack
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
__Михаил__ я понимаю, что только помогают, но я вообще не разбираюсь в этом. Однажды я уже просил мне помочь и тоже без кода пришел, нашлись добрые люди, которые помогли мне с этим. Например здесь: http://forum.script-coding.com/viewtopic.php?id=9953
Хотелось бы верить, что и сейчас кто то отзовется4 Ответ от __Михаил__ 2020-09-09 20:52:31
- __Михаил__
- Участник
- Неактивен
- Рейтинг : [ 76 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
Jack
Читал и видел, что за столько лет нет желания к самосовершенству.
5 Ответ от __Михаил__ 2020-09-09 20:55:06
- __Михаил__
- Участник
- Неактивен
- Рейтинг : [ 76 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
В целом ничего сложного тут не вижу. Сейчас набросаю что-нибудь.
6 Ответ от Jack 2020-09-09 21:05:41
- Jack
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
__Михаил__ Я специалист в других сферах и просто нет банально времени вникать глубоко в эту тему. Вот взяли бы и помогли мне вместо того, чтобы упрекать меня в не компетентности
7 Ответ от Jack 2020-09-09 21:07:24
- Jack
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
__Михаил__ Спасибо, Мир не без добрых людей
8 Ответ от __Михаил__ 2020-09-09 21:32:05
- __Михаил__
- Участник
- Неактивен
- Рейтинг : [ 76 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
Важно: картинка не должна меняться, иначе не произойдёт её определение.
9 Ответ от __Михаил__ 2020-09-09 22:12:54
- __Михаил__
- Участник
- Неактивен
- Рейтинг : [ 76 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
Работает коряво, при многократном нажатии может перестать определять, фиг знает что делать))
10 Ответ от Jack 2020-09-10 09:18:43 (изменено: Jack, 2020-09-10 12:09:18)
- Jack
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
__Михаил__Может второй вариант осуществить? Просто считать клики в определенной области на экране. У меня тоже проблемы, моя кнопка меняет немного тон при наведении мыши на неё.
Или может кто-то другой поможет устранить проблему в коде?11 Ответ от __Михаил__ 2020-09-11 21:13:47
- __Михаил__
- Участник
- Неактивен
- Рейтинг : [ 76 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана
Jack
Сделал по новому, теперь в виде нормальной проги, косяки возможно не все вычистил.
Как посчитать количество кликов по ссылке
Задача подсчета кликов по ссылке встала передо мною, поскольку я захотел реализовать у себя на сайте что-то наподобие строк NOLIX и DAOS. О том как сделать такую строчку я уже написал в статье: «как сделать строку как у NOLIX и DAOS». Данная статья является продолжением той статьи и носит технический характер анализа полученных результатов, а именно принципа определения кликов по каждому объявлению. Однако ниже описанный метод может использоваться для подсчета кликов по любым ссылкам. Код является универсальным и его можно легко модифицировать под Ваши конкретные цели.
Подсчет кликов по ссылке описанный ниже придуман лично мною. Не удивляйтесь, если Вы сможете реализовать этот механизм ещё лучше, поскольку я не мега крутой веб-программист. Мой способ основан на использовании 4ех технологий HTML, JavaScript, PHP и MySQL. Было бы неплохо, если бы Вы что-то понимали в этих языках, но не стоит особо переживать, если у Вас нет никаких навыков их использования, поскольку все исходные коды я приведу ниже. Ваша задача только правильно все установить и настроить это под себя. Если же Вы ничего не понимаете в кодах, то, скорее всего, Вам проще всего использовать Яндекс Метрику или Google Analitics, которые так же позволяют подсчитывать клики по ссылке.
Итак, начнем описание моего способа. Вам он может показаться большим и страшным, но на самом деле все очень просто. Большовизна этой статьи связана не со сложностью ниже приведенного кода, а лишь с тем, что я описываю все шаги подробно и поэтому даже новичок должен разобраться, что есть что.
Сразу хочу дать ссылку на скачивание архива: cntclick.rar, в котором есть все необходимые файлы для работы. Поэтому настоятельно рекомендую скачать его заранее.
Реализация механизма
1. Создание AJAX функции
Создать файл rttr.js (название можете придумать другое или вообще записать его содержимое в уже существующий файл .js). Главная суть этого файла в том, что в нем описана специальная функция setrate :
Кратко опишу, что делает эта функция. Функция setrate получает параметр id и с помощью метода POST посылает параметр id в файл /sts/click.php на исполнение. Уже в файле click.php происходит обработка полученного параметра (id), а далее и запись информации о клике в базу данных.
Итак, Ваша первая задача: создать файл rttr.js с содержимом, которое я указал чуть выше (также файл rttr.js есть в архиве cntclick.rar). На тех страницах где будет осуществляться подсчет кликов по ссылке подключите этот файл:
Файл jquery.js является копией ЯваСкрипта от Google: http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js. Можете подключать файл прямо с Гугла (установить прямой адрес в src=»https://zarabotat-na-sajte.ru/uroki-html/js/jquery.js»), но я скопировал его и добавил к себе на сайт, поскольку иногда бывает, что связь с Гуглом плохая и из-за этого сайт грузится долго.
2. Создание базы данных и таблиц
Для того, чтобы подсчитывать клики, нужно где-то хранить информацию, т.е. нужна база данных. Дабы не использовать файлы для хранения информации (т.к. это считается медленной реализацией), я решил сделать все красиво и воспользоваться MySQL. Для создания БД на MySQL Вы должны сделать следующее:
2.1. Зайдите к себе на хостинг и создайте базу данных. Если у Вашего сайта есть движок, то, скорее всего, уже есть созданная база данных. Однако можно все равно создать вторую бд, чтобы наша информация хранилась в отдельном месте, что на мой взгляд практичнее.
Примечание: я не описываю механизм создания БД на Вашем хостинге, поскольку на каждом хостинге она создается по-разному. Советую прочитать FAQ Вашего хостинга, там со 99.99% вероятностью есть информация о создании бд.
2.2. Создание таблиц для нашей задачи. Через phpmyadmin зайдите в панель управления базой данных. Нажмите выполнить SQL-запрос и напишите следующее:
Если по каким-то причинам возникли ошибки, то попробуйте создавать каждую таблицу по одной, т.е. в первом запросе создайте первую таблицу, во втором вторую таблицу. Если Вы впервые работаете с MySQL, то, скорее всего, Вам будет труднова-то разобраться.
Кратко опишу, что означают поля таблицы. Первая таблица main_rtr содержит следующие поля:
- id (уникальный идентификатор)
- text (анкоры ссылок)
- click (общее количество кликов)
Вторая таблица click_data содержит:
- id_num (уникальный идентификатор)
- id (для связи с первой таблицей)
- date (дату клика)
- time (время клика)
3. Создание конфигурационного файла
Здесь все просто: создаете специальный файл, где будут хранится настройки для подключения к БД. Например, можно назвать его config.php . Его содержимое представлено ниже:
Отредактируйте файл config.php, заполнив Ваши данные (имя базы данных, логин и пароль в поля $dbname , $dbuser и $dbpasswd соответственно). Если база данных находится не на Вашем хосте, то нужно ещё поменять и параметр $dblocation.
4. Заполнение таблицы
Первую таблицу с именем main_rtr нужно заполнить анкорами ссылок, которые будут участвовать в подсчете кликов. Я сделал специальную миниформу, чтобы заполнять таблицу более удобно. Приводить сюда код я не стал в связи с тем, что статья и так получается слишком огромная. В архиве, который я привел выше, есть файлик add.php с помощью которого можно заполнить первую таблицу довольно просто и быстро.
Кратко о форме в файле add.php: эта форма просто выводит текстовое поле textarea, а далее по клику на кнопку «добавить» добавляет новую строку в первую таблицу.
5. Обработка результата клика
Для этого есть файл click.php , который нужно разместить в папку /sts. Его содержимое:
Код очень простой и здесь особо не нужно вдаваться в подробности. Первый запрос повышает каждый раз значение поля click на единицу у той ссылки, по которой был осуществлен клик (ссылка определяется по параметру id). Вторая таблица вносит данные во вторую таблицу информацию о клике: дату, время и по какой ссылке был клик.
6. Подготовка ссылок для подсчета кликов
К тем ссылкам, которые учувствуют в подсчете кликов дописываем атрибут onclick=»javascript:setrate(N)» . Выглядит это примерно следующим образом в коде:
Число в скобочках у функции setrate должно соответствовать номеру id Вашего анкора в таблице main_rtr.
7. Вывод результатов
Для вывода результатов (статистики кликов) я разработал очень простой html-документ ( stat.html ). С помощью него удобно отслеживать те ссылки, по которым чаще всего кликают. Вся информация выводится в соответствующие таблицы.
Я не буду описывать каждую таблицу, т.к. они все похожи. Для примера рассмотрим только первую таблицу. Она выводит общую информацию о клике. Вот её код: