شوف أخي الكريم ..
أنت تحتاج لبناء جدول لعمليات البحث .. هذا الجدول سيكون كالتالي :
كود:
CREATE TABLE `search` (
`id` int(10) unsigned NOT NULL auto_increment,
`keyword` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`searched` smallint(5) unsigned NOT NULL default '1',
`last_search` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `keyword_3` (`keyword`),
FULLTEXT KEY `keyword_2` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
id --> رقم مسلسل لعملية البحث
keyword --> يتم تسجيل كلمة أو عبارة البحث به
searched --> عداد لعدد المرات التى تم البحث فيها عن هذه الكلمة
last_search --> تاريخ آخر مرة تم البحث فيها عن هذه الكلمة كـ timestamp
و الآن عندما يقوم أحد بعملية بحث يجب أن يتم تسجيل هذه العملية فى الجدول كالتالي :
كود PHP:
$Sql = "INSERT INTO `search` (keyword,last_search) VAULES ('$keyword','$timestamp')";
if (!$Result = mysql_query($Sql, $Connect)) {
$Sql = "UPDATE `search` SET searched=searched+1, last_search=$timestamp WHERE keyword='$keyword'";
$Result = mysql_query($Sql, $Connect);
}
الكود السابق سيقوم بالتالي :
سيحاول تسجيل كلمة أو عبارة البحث $keyword و التاريخ الحالي $timestamp فى جدول البحث
فإذا كانت هذه الكلمة $keyword مسجلة بالفعل من قبل ( تم البحث عنها من قبل ) سيقوم الاسكربت بتحديث جدول البحث search كالتالي .. سيزيد عدد المرات التى تم البحث فيها عن هذه الكلمة بمقدار 1 , و سحدث تاريخ آخرة مرة تم البحث فيها عن هذه الكلمة ليجعله التاريخ الحالي.
و الآن أنت لديك جدول يسجل عمليات البحث التي تتم فى الموقع , ماذا عن تحويل بيانات هذا الجدول إلى معلومات مفيدة ؟!
أولا : آخر عمليات البحث ( recent searches )
سيتم جلبها كالتالي :
كود PHP:
$Sql = "SELECT `keyword` FROM `search` ORDER BY `last_search` DESC LIMIT 11";
$Result = mysql_query($Sql, $Connect);
while ($Row = mysql_fetch_array($Result)) {
echo $Row['keyword'].'<br />';
}
mysql_free_result($Result);
هذا الكود سيقوم بكتابة آخر 11 كلمة أو جملة تم البحث عنها , و تستطيع تعديل عدد النتائج كما تفضل LIMIT ...
ثانيا : أكثر الكلمات أو العبارات التى تم البحث عنها ( top saerches )
نفس الكود السابق مع استبدال last_search بـــ searched
ثالثا : عمليات البحث المشابهة ( related searches )
كود PHP:
$Sql = "SELECT `keyword` FROM `search` WHERE id>0 AND MATCH (keyword) AGAINST ('$keyword' IN BOOLEAN MODE) LIMIT 5";
$Result = mysql_query($Sql, $Connect);
while ($Row = mysql_fetch_array($Result)) {
echo $Row['keyword'].'<br />';
}
mysql_free_result($Result);
هذا الكود سيقوم بجلب عمليات البحث المشابهة , بحد أقصى 5 نتائج .. تستطيع تعديل عدد النتائج , أو حذف LIMIT 5 ليتم جلب كل النتائج المشابهة
و لتوضيح أى نقطة تحت أمرك