برای نوشتن این لینکدونی با PHP به کدها و طی کردن مراحل زیر نیاز داریم:
- ساختن جدول لینکهامون در یک دیتابیس (که ما اینجا از MySQL استفاده می کنیم)، شامل فیلدهای: «آدرس لینک»، «متن لینک»، «توضیحات لینک (Tooltip)»، «تعداد کلیکها» و «تاریخ اضافه شدن لینک»
- صفحهای که بتونیم لینکهامون رو از اون طریق وارد دیتابیس کنیم
- کدی برای شمردن تعداد کلیکها
- کدی برای نمایش دادن تعدادی از آخرین لینکهای وارد شده در صفحهی اصلی
برای اینکه مقالهی جامعی باشه سعی میکنم تمام مراحل رو تا اونجایی که بشه به طور کامل توضیح بدم. برای مرحله اول به کد زیر احتیاج داریم که می تونید اون رو خیلی راحت در دیتابیستون Import کنید و جدولتون رو بسازید.
CREATE TABLE links ( id int(11) NOT NULL auto_increment, link text NOT NULL, description text NOT NULL, tooltip text, hits int(5) NOT NULL default ‘۰′, date date NOT NULL default ‘۰۰۰۰-۰۰-۰۰′, PRIMARY KEY (id) ) TYPE=MyISAM
خب، الان جدولمون رو ساختیم و کافیه که از طریق یه فرم خیلی ساده، لینکهامون رو همراه با توضیحاتشون واردش کنیم. برای این کار، یه صفحه با نام «links_entry.php» میسازیم که Action فرم توش رو هم همین صفحه قرار میدیم. این هم کد فرم همراه با کدی که اطلاعات رو از فرم میگیره و وارد دیتابیس میکنه
<form method=\”post”> Link: <input name=\”link” type=\”text” size=\”۵۰″> Description: <input name=\”description” type=\”text” size=\”۵۰″> Tooltip: <input name=\”tooltip” type=\”text” size=\”۵۰″> <input type=\”submit” value=\”Submit”> </form> <? $link = $_POST[“link”]; $description = addslashes($_POST[“description”]); $tooltip = addslashes($_POST[“tooltip”]); if (isset($link)) { db_connect(); $sql = “INSERT INTO `links` (link, description, tooltip, date) values (’$link’ , ‘$description’ , ‘$tooltip’, now())”; if (@mysql_query($sql)) echo “link Added!<br />”; else { echo “Error!”. mysql_error(); exit; } } ?>
تا حالا مرحلهی ۱ و ۲ رو انجام دادیم. اگه تعداد کلیک روی هرکدوم از لینکها برامون مهم نباشه می تونیم با یه حلقهی ساده، آدرس لینکها و توضیحاتشون رو از دیتابیس بیرون بکشیم و فقط اونها رو نمایش بدیم. ولی هدف ما فقط این نیست! برای داشتن آمار دفعات کلیکها ما به یه صفحه واسطه احتیاج داریم که در واقع با کلیک شدن روی هر لینک، اون صفحه لینک رو دریافت کنه و به تعداد هیتهای اون توی جدول ما یکی اضافه کنه و بعد به آدرس لینک اصلی Redirect کنه. کار سختی انجام نمیده کلا! اسم اون رو به عنوان مثال «link_redirect.php» میذاریم و این زیر می بینیم چه کدهایی توش قرار میگیره.
<? $url = urldecode($_GET[“url”]); db_connect(); $query=“SELECT * FROM `links` WHERE link = ‘$url’”; $results = mysql_query($query); $result = mysql_fetch_array($results); $hits = $result[“hits”]; $hits = $hits + 1 ; $updatequery = “UPDATE `links` SET `hits`=’$hits’ WHERE `link`=’$url’”; $result = mysql_query($updatequery); header(“Location:$url”); ?>
تو خط اول، URLمون که قبلا Encode شده (بعدا میگم چطوری)، Decode میشه. این عمل Encode و Decode کردن هم واسه اینکه که چون ما داریم یک URL رو به عنوان متغیر بین صفحاتمون پاس میکنیم و احتمال اینکه یک کاراکتر معنی دار توش باشه هست. با این Encode کردن مثلا اگه کاراکتر Space توی اسم یه فایل استفاده شده باشه به معادل Hexش یعنی %۲۰ تبدیل میشه و از این قبیل…!
http://www.mohsentaleb.com/index 1.htm Changes to… http://www.mohsentaleb.com/index%201.htm
همونطور که واضحه، در خطوط سوم تا هفتم، آخرین تعداد هیتهای یک لینک رو از جدول میخونیم. در خط هشتم اونو یکی اضافه می کنیم، تو خط ۹ تا ۱۱ مقدار جدید هیتها رو وارد جدول میکنیم و در آخر با فرستادن یک Header، صفحه رو به آدرس لینک اصلی Redirect میکنیم. خیلی ساده! پس ما الان یه صفحهی واسطه داریم که آدرس تمام لینکهای لینکدونیمون تحت یک متغیر با اسم url$ باید بهش پاس بشه و خودش دیگه بقیهی کارها رو انجام میده… مثلا اگه ما بخوایم به سایت یاهو لینک بدیم، بجای اینکه توی لینکدونیمون داشته باشیم
<a href=\"http://www.yahoo.com\">Yahoo.com</a>
داریم:
<a href=\"link_redirect.php?url= http://www.yahoo.com\">Yahoo.com</a>
خب، به عنوان مرحلهی آخر، باید کدی بنویسیم که بیاد هر کدوم از لینکهامون رو از دیتابیس بیرون بکشه و به صورت قالبی دربیاره که لینکها فقط به عنوان یه متغیر به اون صفحهی «link_redirect.php» پاس بشن که تعداد کلیکهاشون هم شمارش بشه. اینم کدش. یه تابعست که در آرگومانش یعنی متغیر number$ می تونید تعداد لینکهای جدیدی رو که قراره در صفحهتون نمایش داده بشن مشخص کنید. یخورده اگه با دقت بخونیدش چیز سختی نداره!
<? function show_links($number) { db_connect(); $query=“SELECT * FROM `links` ORDER BY `id` DESC LIMIT ‘$number’”; $results = mysql_query($query); $num_results= mysql_num_rows($results); echo ”<div>”; for ($i=0; $i <$num_results; $i++) { $row = mysql_fetch_array($results); if ($row[“hits”] == ۰) $hits = کلیک نشده; else $hits = $row[“hits”].” کلیک ”; & echo ”<a href=“http://”.$_SERVER[‘HTTP_HOST’] .dirname($_SERVER[‘PHP_SELF’]). “/linkref.php?url=”. urlencode(stripslashes($row[“link”])). ” title=\\””.stripslashes($row[“tooltip”]). ” • ”.$hits.“\”>”. stripslashes($row[“description”]).”</a>”; echo ”<br>n”; } echo ”</div>”; } ?>
تموم شد! پ.ن. برای اینکه کدها زیاد شلوغ نشن و برای تأکید بیشتر رو اصل کد، قسمتهای مربوط به فارسی کردن (Align و Font و …) رو حذف کردم که خودتون بهش اضافه می کنین احتمالا!
آقا سامان خیلی خوشبختم منم امیرم از آشنایی باهاتون کلی فیض بردم 🙂