PDA

View Full Version : سوال: چگونه وقتی روی لینک کلیک شد در دیتابیس به فیلدی مقدار اضافه شود؟



ablofazlkianianboohi
یک شنبه 16 بهمن 1390, 14:51 عصر
سلام دوستان
من یک برنامه نوشتم که مربوط به یک کتابخانه ی مجازی می باشد.
حالا می خوام تو بخش کتاب ها، وقتی روی کتابی کلیک شد تا دانلود شود، به فیلد count دیتابیس من یک مقدار اضافه بشه.

چطور این کار رو انجام بدهم؟

MMSHFE
یک شنبه 16 بهمن 1390, 18:04 عصر
دو راه وجود داره: یا دانلود غیرمستقیم ایجاد کنید و یا اینکه توسط JavaScript و AJAX، توی رویداد کلیک برروی لینک دانلود، فایل PHP خاصی که از قبل نوشتین رو صدا بزنید و ID کتاب رو براش بفرستید تا اونو توی DB پیدا کنه و تعداد دانلودهای اون رو یک واحد افزایش بده.

ablofazlkianianboohi
یک شنبه 16 بهمن 1390, 19:03 عصر
دوست عزیز
خودم تو فروم search کردم و به جواب هایی رسیدم که به صورت زیر :
<a href='user.php?mycount'>

if (isset($_GET['mycount']))
}
..
{

این کار جواب میده. اما یک مشکل دیگه که دارم می خوام وقتی کلیک شد مثلا به گوگل هم بره.
این کار رو چطور می تونم با همین دستورات ساده php انجام بدم؟

manager_66
یک شنبه 16 بهمن 1390, 19:38 عصر
با header این کار رو انجام بده .


header('Location: http://www.example.com/');

ablofazlkianianboohi
یک شنبه 16 بهمن 1390, 20:41 عصر
خوب این دستور header رو کجا باید بزارم؟برای هر لینک متفاوت هست.

dragontools
دوشنبه 17 بهمن 1390, 10:29 صبح
سلام دوست عزیز

میتونی از روش AJAX بدین صورت استفاده کنی. اول باید یه تابع java script واسه کارت تعریف کنی. دو حالت داریم :
یکی اینکه شما بخواین فقط اون اطلاعات (کلیک شدن روی یک لینک) ارسال بشه و نتیجه ای نمایش داده نشه.

viewlink = function(url){
data = "linkurl="+url;
var xmlhttp;
/*@cc_on @if (@_jscript_version >= 5) try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(E){xmlhttp = false;}} @else xmlhttp = false; @end @*/
if(!xmlhttp&&typeof XMLHttpRequest!="undefined"){try{xmlhttp = new XMLHttpRequest();}catch(e){xmlhttp=false;}}
xmlhttp.open("POST","example.php",true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.send(data);
}


یکی هم نتیجه ای نمایش داده بشه. مثلاً در کد زیر در تک div با آی دی result نتیجه نمایش داده میشه :

viewlink = function(url){
data = "linkurl="+url;
var xmlhttp;
/*@cc_on @if (@_jscript_version >= 5) try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(E){xmlhttp = false;}} @else xmlhttp = false; @end @*/
if(!xmlhttp&&typeof XMLHttpRequest!="undefined"){try{xmlhttp = new XMLHttpRequest();}catch(e){xmlhttp=false;}}
xmlhttp.open("POST","example.php",true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status == 200) {
document.getElementById("result").innerHTML = xmlhttp.responseText;
}else if(xmlhttp.readyState==0 || xmlhttp.readyState==1 || xmlhttp.readyState==2 || xmlhttp.readyState==3) {
document.getElementById("result").innerHTML = "در حال بارگذاری";
}
}
xmlhttp.send(data);
}


حالا باید محتوای فایل example.php را با توجه به نیاز بنویسی.



<?php
$url = trim($_POST['linkurl']);
//عملیات مورد نظر
?>


و در آخر برای هر لینکی که خواستی اطلاعات کلیک شدنش رو ثبت کنی اینطور تگش رو میذاری :


<a href="http://example.com" onclick="viewlink('http://example.com');"> click </a>

واسه کتابخونه مجازی هم اگه بخوای استفاده کنی از تابع های java script که گفتم از اولی استفاده کن.
با آرزوی موفقیت روز افزون شما