View Full Version : تعداد کلیک بر روی لینک
mahdioo12194
جمعه 22 مهر 1390, 13:58 عصر
سلام می خواستم بدونم چه جور میشه تعداد کلیک روی لینک را بدست آورد و مثلا در یک لیبل نمایش داد!!
blackmak
جمعه 22 مهر 1390, 15:04 عصر
<script src="jquery.js" type="text/javascript"></script>
<script>
$(function()
{
$('#link').click(function()
{
var count = $('#count').html();
count++;
$('#count').html(count);
});
});
</script>
<a href="#" id="link">Click Here</a><br>
Count Of Your Click : <div id="count">0</div>
Mahnet
جمعه 22 مهر 1390, 15:23 عصر
با سلام
شما می تونید از روش های مختلفی استفاده کنین من یکی از اونها رو براتون مینویسم ...
این روش رو میتونین با database یا file انجام بدین که من با فایل براتون مینویسم ... الگوریتم ساده ای که در ابتدا به نظر میرسه اینه که هر بار بعد از هر کلیک آخرین تعداد رو بگیریم و یکی بهش اضافه کنیم و در جایی دخیره کنیم، که این امر با این الگوریتم اشکال داره چون اگر در یه لحظه چند نفر کلیک کردن و همه آخرین مقدار رو به طور مساوی دریافت کردن ولی به جای چند افزایش تنها یک افزایش انجام میشه... پس بهتره اینطور بنویسیم که هربار یه مقدار unic مثلا id اون لینک رو به انتهای فایل اضافه کنه و زمان خوندن تعداد کلیک ها همون تعداد id ها رو بشمره ...
برای این کار به 5 تا فایل نیاز داریم :
1) count.txt
2) getCount.php
3) setCount.php
4) index و jquery
داخل getCount.php اینو نوشتم:
if(isset($_POST['rand']) and isset($_POST['id'])){
$myFile = "count.txt";
$fo = fopen($myFile, 'r');
echo substr_count(fgets($fo), $_POST['id']);
fclose($fo);
}
داخل setCount.php هم اینطور نوشتم:
if(isset($_POST['rand']) and isset($_POST['id'])){
$myFile = "count.txt";
$fa = fopen($myFile, 'a');
fwrite($fa,$_POST['id']);
fclose($fa);
}
و در بخش jquery هم با متد پست هر بار برای جلوگیری از cash شدن احتمالی یه مقدار random و id لینک مورد نظر رو ارسال کردم...
$(document).ready(function(){
$('a').each(function(){
var id = $(this).attr('id');
$.post('getCount.php',{'rand': Math.random(), 'id': id},function(data){
$('span#'+id).html(data);
});
});
$('a').click(function(){
var id = $(this).attr('id');
$.post('setCount.php',{'rand': Math.random(), 'id': id},function(data){
$.post('getCount.php',{'rand': Math.random(), 'id': id},function(data){
$('span#'+id).html(data);
});
});
});
});
این هم demo که میتونین روی localhost تستش کنین ...
موفق باشی
mahdioo12194
جمعه 22 مهر 1390, 15:41 عصر
با سلام
شما می تونید از روش های مختلفی استفاده کنین من یکی از اونها رو براتون مینویسم ...
این روش رو میتونین با database یا file انجام بدین که من با فایل براتون مینویسم ... الگوریتم ساده ای که در ابتدا به نظر میرسه اینه که هر بار بعد از هر کلیک آخرین تعداد رو بگیریم و یکی بهش اضافه کنیم و در جایی دخیره کنیم، که این امر با این الگوریتم اشکال داره چون اگر در یه لحظه چند نفر کلیک کردن و همه آخرین مقدار رو به طور مساوی دریافت کردن ولی به جای چند افزایش تنها یک افزایش انجام میشه... پس بهتره اینطور بنویسیم که هربار یه مقدار unic مثلا id اون لینک رو به انتهای فایل اضافه کنه و زمان خوندن تعداد کلیک ها همون تعداد id ها رو بشمره ...
برای این کار به 5 تا فایل نیاز داریم :
1) count.txt
2) getCount.php
3) setCount.php
4) index و jquery
داخل getCount.php اینو نوشتم:
if(isset($_POST['rand']) and isset($_POST['id'])){
$myFile = "count.txt";
$fo = fopen($myFile, 'r');
echo substr_count(fgets($fo), $_POST['id']);
fclose($fo);
}
داخل setCount.php هم اینطور نوشتم:
if(isset($_POST['rand']) and isset($_POST['id'])){
$myFile = "count.txt";
$fa = fopen($myFile, 'a');
fwrite($fa,$_POST['id']);
fclose($fa);
}
و در بخش jquery هم با متد پست هر بار برای جلوگیری از cash شدن احتمالی یه مقدار random و id لینک مورد نظر رو ارسال کردم...
$(document).ready(function(){
$('a').each(function(){
var id = $(this).attr('id');
$.post('getCount.php',{'rand': Math.random(), 'id': id},function(data){
$('span#'+id).html(data);
});
});
$('a').click(function(){
var id = $(this).attr('id');
$.post('setCount.php',{'rand': Math.random(), 'id': id},function(data){
$.post('getCount.php',{'rand': Math.random(), 'id': id},function(data){
$('span#'+id).html(data);
});
});
});
});
این هم demo که میتونین روی localhost تستش کنین ...
موفق باشی
متاسفانه با php کار نکردم!! برنامه هم ظاهرا کار نکرد !!
mahdioo12194
جمعه 22 مهر 1390, 15:46 عصر
<script src="jQuery.js" type="text/javascript"></script>
<script>
$(function()
{
$('#link').click(function()
{
var count = $('#count').html();
count++;
$('#count').html(count);
});
});
</script>
<a href="#" id="link">Click Here</a><br>
Count Of Your Click : <div id="count">0</div>
می شه در باره عملکرد .html بیشتر توضیح بدین و بگید کارش چیه و کجا ها استفاده می شود!!
و اینکه می خوام در مراجعات بعدی این تعداد کلیک حفظ بشه!!
Mahnet
جمعه 22 مهر 1390, 15:53 عصر
متاسفانه با php کار نکردم!! برنامه هم ظاهرا کار نکرد !!
دوست عزیز برنامه زمانی کار میکنه که روی سرور apache و php نصب باشه ... بعد فایل رو توی مسیر htdocs قرار میدین و بعد به مسیر http://localhost/countOfClick/index.htm میرین... مزیت این روش اینه که همیشه حتی بعد از خروج از سایت، زمانی که مجددا به سایت مراجعه میکنی آخرین تعداد کلیک هارو مشاهده میکنین ...
مثل تعداد دیدار های فایل های سایت برنامه نویس...
شما همین الگوریتم رو توی asp.net میتونی پیاده سازی کنی ...
موفق باشی
mahdioo12194
جمعه 22 مهر 1390, 16:05 عصر
دوست عزیز برنامه زمانی کار میکنه که روی سرور apache و php نصب باشه ... بعد فایل رو توی مسیر htdocs قرار میدین و بعد به مسیر http://localhost/countOfClick/index.htm میرین... مزیت این روش اینه که همیشه حتی بعد از خروج از سایت، زمانی که مجددا به سایت مراجعه میکنی آخرین تعداد کلیک هارو مشاهده میکنین ...
مثل تعداد دیدار های فایل های سایت برنامه نویس...
شما همین الگوریتم رو توی asp.net میتونی پیاده سازی کنی ...
موفق باشی
ممنون البته اگر با asp شم می ذاشتی که خیلی خوب می شد!!
blackmak
جمعه 22 مهر 1390, 18:23 عصر
دوست من شما باید برای اینکار یه زبان Server side رو یاد بگیرید. همچین چیزی یه فایل نیست شما باید database یاد بگیرید بعد میتونیم راهنمایی کنم همونطور که دیدید Mahnet الگوریتم کارو بهتون گفتن.
mahdioo12194
جمعه 22 مهر 1390, 18:37 عصر
با دیتابیس مشکل ندارم اگه با دیتابیس بگید راحت ترم!
blackmak
جمعه 22 مهر 1390, 19:16 عصر
فرض کنید یه Table دارید که شمال 2 ستون هستش ID و Click .
به این شکل که شما به ازای هر کلیک رکوردی که مربوط به همون کلیک رو update میکنید . به این صورت که ابتدا مقدار ذخیره شده در database رو select میکنید و بعد از اضافه کردن بهش مقدار جدیدو جایگزین یا update میکنید.
mahdioo12194
جمعه 22 مهر 1390, 19:35 عصر
مشکل من ارتباط دیتابیس با متغیرها و توابع جی کویری است مثلا همین متغیر count رو یه جور در پایگاه داده ذخیره می شد دیگه مشکل حل بود!
اینو نمیدونم چه جور انجام بدم! یا مثلا به گفته شما چه جور بگم وقتی روی لینک کلیک شد بره با دیتابیس ارتباط برقرار کنه؟؟
blackmak
جمعه 22 مهر 1390, 20:34 عصر
شما باید از ajax استفاده کنید . پارامتر هارو به صفحه asp ای که کار update کردنو داره با jqury یا js میفرستید و اونور اونو دریافت میکنید و بعد respond رو نشون میدید. برای ارسال Data به صورت ajax باز دوستمون به Mahnet مثال زدن .
<script src="jquery.js" type="text/javascript"></script>
<script>
$(function()
{
$('.news').click(function()
{
///--> baraye jelogiri az cash shodan ye moteghayere random mifrestim
var rand = Math.random(1000);
///--> idye linki ke roosh click shode
var newsId = $(this).attr('id');
///--> url: safheyei ke amaliyate updateo anjam mide
///--> type: methodi ke vase ersale etelaat entekhab mikonid
///--> data: moteghayerhaei ke mikhaid befrestid be safheye updatetoon
///--> success: agar etelaat ba movafaghiyat ersal shod function ejra mishe
$.ajax({ url: "x.php", type: "POST", data:{m:rand,id:newsId}, success: function(resp)
{
///--> pasokhi ke safheye updatetoon chap mikone , baraye mesal : click ba movafaghiyat sabt shod
///--> mitoonid nazaridesh
alert(resp);
}
});
});
});
</script>
<a href="#" class="news" id="10">item 10</a>
<a href="#" class="news" id="11">item 11</a>
<a href="#" class="news" id="12">item 12</a>
<a href="#" class="news" id="13">item 13</a>
<a href="#" class="news" id="14">item 14</a>
mahdioo12194
جمعه 22 مهر 1390, 20:57 عصر
ببخشید زیاد سوال می کنم حالا ما یه جور اطلاعات رو فرستادیم اونور چه جور در یافت و استفاده کنیم؟
blackmak
جمعه 22 مهر 1390, 23:10 عصر
شما asp کار کردید ؟ طریقه گرفتن متد پست رو بلدید وقتی فرم submit میشه ؟ اگه نه بهتره بیشتر کار کنید
اینجا بخش jquery هستش . بهتره سئوالتونو تو بخش asp.net مطرح کنید . یا google کنید .
ارسال و دریافت متد پست asp.net (http://www.google.com/search?client=opera&rls=en&q=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D9%88+%D8%AF%D8% B1%DB%8C%D8%A7%D9%81%D8%AA+%D8%A7%D8%B7%D9%84%D8%A 7%D8%B9%D8%A7%D8%AA+asp.net&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest#pq=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+ %D9%88+%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA+%D8%A7 %D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA+asp.net&hl=en&sugexp=gsih&cp=16&gs_id=4c&xhr=t&q=+%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D9%88+%D8%AF%D8 %B1%DB%8C%D8%A7%D9%81%D8%AA+%D9%85%D8%AA%D8%AF+%D9 %BE%D8%B3%D8%AA+asp.net&qe=IicxMydEIkggLzfMJ0cqIkcqLyZ-MyogYXNwLm5ldA&qesig=jq0hlYKC68JjYlN_e5v1tw&pkc=AFgZ2tkCnKQnYHIyI7Tml6R7wB9QlBEknD8r_UkfSJkciJ DkLT3qnAlrPaFz_TK8Wv6ta9mvIPPPgkHtSSkXacJS6P3uq9wz 7A&pf=p&sclient=psy-ab&safe=off&client=opera&hs=l0T&rls=en&channel=suggest&source=hp&pbx=1&oq=+%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D9%88+%D8%AF%D 8%B1%DB%8C%D8%A7%D9%81%D8%AA+%D9%85%D8%AA%D8%AF+%D 9%BE%D8%B3%D8%AA+asp.net&aq=f&aqi=&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=9986fea20d8c317e&biw=1916&bih=945)
mahdioo12194
جمعه 22 مهر 1390, 23:24 عصر
من دارم asp کار می کنم:لبخند:
حالا پارامتر هایی که فرستاده می شند m و id هستند یا newsId و rand ؟
data:{m:rand,id:newsId}
blackmak
جمعه 22 مهر 1390, 23:48 عصر
m و id . که شما باید id رو بگیرید
mahdioo12194
دوشنبه 25 مهر 1390, 23:06 عصر
من آخر سر نتونستم این دو پارامتر را دریافت واستفاده کنم در asp دوستان اگر کسی می دونه کمک کنه؟!
salamesalehpour
جمعه 29 مهر 1390, 22:22 عصر
دوست عزیز توسط بوسیله متد .html() میتوان محتویات المنت انتخاب شده را برگشت یا ست کرد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.