الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤالي عن كود البحث ذات صلة

بدأه ali123 في 9 مايو 2006 · 18 رد · 2,284 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

إخواني كيف أضيف كود يقوم بالبحث عن المواضيع ذات الصلة بالموضوع الأصلي .

أي عندما اضغط على مقال معين يقوم هذا الضغط اوتوماتيكيا بالبحث عن جميع المقالات طبعا العناويين فقط التي لها علاق بالموضوع الذي ضغطه

فمن يدلني على ذلك مشكورا .

وهذا مثال على أمر استدعاء بيانات من القاعدة

<?php
$query=mysql_query("SELECT * FROM articles_topics WHERE '$result[topic]'=ID ORDER BY ID");
while($row=mysql_fetch_array($query)){
?>
<?php
$query2=mysql_query("SELECT * FROM articles WHERE $row[ID]=topic ORDER BY ID DESC LIMIT 5");
$td=0;
while($result=mysql_fetch_array($query2)){
$td++;
if($td=="2"){
$td_color="#EFF4FA";
$td="0";
}else{
$td_color="#DFE9F4";
}
?>

وهنا مثال لعملية البحث الأصلية بالموقع

<?php
$query=mysql_query("SELECT * FROM articles WHERE BINARY subject LIKE '%$word%' or writer LIKE '%$word%' or description LIKE '%$word%' or text LIKE '%$word%' or resource LIKE '%$word%' ORDER BY ID");
$td=0;
while($result=mysql_fetch_array($query)){
$td++;
if($td=="2"){
$td_color="#EFF4FA";
$td="0";
}else{
$td_color="#D3E6F5";
}
?>

اشكركم مرة أخرى

#2

يا أخ علي اتوقع حسب ما فهمت من سؤلك كود يقوم بالبحث عن جميع مايشبه المضغوط

طالما أن الجدول تبعك يحتوي حقل العنوان فعملية البحث سهلة

$SearchTopic=mysql_query("select * from TableName where SubjectField like %$InputData%");

اتمنى أن تكون الفكرة واضحة,ولو في مشكلة إسأل

#3

اشكرك أخي SoProgramer

سأجرب الطريقة وأفيدك ولكن كما يتضح وفي أعتقادي أن هذا الكود للبحث ولكن كيف أجعله يبحث سأطبق لك مثال واقعي:

لدي موقع على الانترنت ويوجد في منتصف الموقع مجموعة مقالات فلنفرض :

1- من كان مع الله ماذا فقد

2- من كان مع غير الله ماذا وجد

3-محمد عليه الصلاة و السلام

4-أقلّ ما في زماننا الإنصاف

5-أعظم المصائب قسوة القلب

6-ما أكثر الصالحين , وما أقل الصادقين

الان أنا الان زائر أعجبن المقال رقم 2 وضغط عليه ( مع ملاحظة أن المواضيع أعلاه مستدعاه من قاعدة البيانات )

فتح لي صفحة ثانية بها نص الموضوع وفي أخر الصفحة جدول صغير مكتوب عليه:

روابط ذات صلة ( فيقوم بعملية البحث عن جميع المواضيع حول هذا الموضوع ويضعها في الجدول بمجرد دخولي الى الموضوع ): مثل

1- من كان مع الله ماذا فقد

2- من كان مع غير الله ماذا وجد

حيث أن لفظ الجلالة موجود في كلا المقالين وكذلك كلمة كان .

أرجون أن تكون الصورة واضحة

اسف على الاطالة

#4

السلام عليكم

انا ما سبق جربت هذه الطريقة لكن اتوقع والله اعلم انه عند عرض المواضيع يتم حفظ عنوان الموضوع في متغير ومن ثم البحث في قاعدة البيانات عما يشبه هذا العنوان ووضع النتائج في الأسفل ..

لعلي كتبت ما يفيد .

460.gif

#5

اشكرك أخي المتميز

كلامك اعتقد انه صحيح ميه الميه وهو عند اضغط على الموضوع يقوم بحفظه في متغير واجراء عملية البحث

ولكن ...........كييييييييييييييييف؟

آمل أن اجد الحل قريبا ؟؟

شكرا مرة اخرى اخي متميز .....فأنت متميز .

#6

السلام عليكم

كلامك متميز أخي

فعلا لابد من حفظ موضوع في متغير ويقوم هو بعملية بحث للمتشابهات له

ولكن كييييييييف؟

مين يفيدني رجاءا ؟

أو يدلني على سكربت فيه كود لرابط ذات صلة؟

#7

تمام

أصبحت الفكرة تبعك واضح

أن لديك موقع فيه n من المقالات وعندما يضغط الزائر مقولة من المقالات تظهر المقالة المضغوطة ومن ثم المقالات التي تشبه هذه المقالة ok

انظر

صفحة عرض المقالات:-

    $db=mysql_connect("localhost","username","password");
    mysql_select_db("DatabaseName");
$Articles=mysql_query("select * from ArticleTable");
while($Art=mysql_fetch_row($Articles))
<a href='Article.php?Link=$Art[0]'>$Art[1]</a>

في السطر الثالث عبارة عن عملية إستعراض البيانات من الجدول تبعك

السطر الر ابع عبارة عن حلقة دوران

السطر الخامس هو اللي يهمك الأن وهو تخزين الid تبع كل مقولة في متغيرLink وعرض عنوان المقولة

مثلا:-

مقولة X يكون id=1

مقولة Y يكون id=2

قيمة المتغير Link=1/2

الأن قد عرضت المقالات لكن عند ضغطها تفتح الصفحة المربوطة بالإرتباط التشعبي ومعها id تبع المقولة

إسم الصفحة Article.php أكتب الكود التالي

$IDS=$_GET['Link'];

    $db=mysql_connect("localhost","username","password");
    mysql_select_db("DatabaseName");
$Data=mysql_query("select * from ArticleTable where id=$IDS");
while($List=mysql_fetch_row($Data)
{
$SaveTitle=$List[1];
print $List[1] $List[2];
}

$ArticleLikethis=mysql_query("select * from ArticleTable where ArtTile like %$SaveTitle% and id<>$IDS");
while($AllArtLike=mysql_fetch_row($ArticleLikethis))
print $AllArtLike[1] $AllArtLike[2];

في البداية جلبنا المتغير وعل أساسه نجيب المقالة المضغوطة ومن ثم نحفظ عنوان المقولة في المتغير

SaveTitle$ في حينها نعرض المقالة ::::::::::::::::::::::::أيواه الأن العملية الأخيرة وهي كيف نعر جميع المقالات التي تشبه هذه المقالة,بم أننا حفظنا في متغير هتكون عملية البحث سهلة , وهي جملة sql عادية فيها شرط like .

هل الكلام دا مفهوم ياأخ علي أم لا إسال كل ماهو صعب عليك

#8

فعلا كما ذكر اخي SoProgramer

460.gif

#9

اشكرك أخي وجعل ذلك في ميزان حسناتك

عزيزي لقد وضعت هنا صورتين لعملية استدعاء المواضيع من قاعدة البيانات واستدعائها من الأقسام :

كما سوف أرفق لك الملفين على شكل نص كودي هنا لعلك تستخدم نفس المتغيرات . لعلي أفهم...

الصورة الأولى هي من صفحة الرئيسية للمواضيع : كما هي موضح لك في المرفق الأول على شكل صورة موضح بها بعض المعلومات وهنا الكود البرمجي

<?php
$query=mysql_query("SELECT * FROM articles_topics WHERE ID=162");
while($row=mysql_fetch_array($query)){
?>
<td style="border: 1px solid #5A72EA; " align="center"><font class="smallfont">
<?php
$query2=mysql_query("SELECT * FROM articles WHERE $row[ID]=topic ORDER BY ID DESC LIMIT 5");
while($result=mysql_fetch_array($query2)){
?>
<a target="_blank" href="articles_sultan.php?ID=<?php echo $result[ID] ?>"><?php echo $result[subject] ?></a><br>
<?php
}
?>

وهنا أيضا الصورة الثانية بالمرفق الثاني وهو عباره عن صفحة المواضيع

وهذا الكود البرمجي

<?php
$query=mysql_query("SELECT * FROM articles_topics WHERE '$result[topic]'=ID ORDER BY ID");
while($row=mysql_fetch_array($query)){
?>
<?php
$query2=mysql_query("SELECT * FROM articles WHERE $row[ID]=topic ORDER BY ID DESC LIMIT 5");
$td=0;
while($result=mysql_fetch_array($query2)){
$td++;
if($td=="2"){
$td_color="#EFF4FA";
$td="0";
}else{
$td_color="#DFE9F4";
}
?>
<tr>
<td align="center" bgcolor="<?php echo $td_color ?>" style="border:1px solid #D3E6F5; padding:2px; " width="20">
<img border="0" src="images/psd0160.gif" width="15" height="15"></td>
<td align="center" bgcolor="<?php echo $td_color ?>" style="border:1px solid #D3E6F5; padding:2px; ">
<p align="justify"><font class="smallfont" color="#969696">
<a href="articles.php?ID=<?php echo $result[ID] ?>"><?php echo $result[subject] ?></a><br>



<?php
}
?>

في الحقيقة حاولت أكثر من مرة ولم أفلح ...... فلو استطعت إستخدام المتغيرات بالجدول اعلاه.

اسف على عدم فهمي السريع.

شكرا

عندما تريدون التوضيح أكثر فقط أكتب وضح.

post-2527-1147274592_thumb.jpg

post-2527-1147274624_thumb.jpg

#10

السلام عليكم

جرب الكود التالي مع تعديل البيانات الاساسية

ومعذرة إذا كان يحتوي على خطأ لأني كتبته هنا سريعا

//اولا البحث في جدول الاخبار عن الموضوع الذي يحمل رقما ما
$ser=mysql_query("select * from News where id=5");
//عدد النتائج
$result=mysql_num_rows($ser);
for($i=0;$i<$result;$i++){
$row=mysql_fetch_array($ser);
//إنشاء متغير اسمه SerTopic يحمل قيمة موضوع الخبر
$SerTopic=$row[topic];
}
//هنا اكتب كود عرض الخبر او الموضوع
// ثم بعد ذلك ابحث في نفس الجدول عن المواضيع المشابهة
$NewSer=mysql_query("select * from News where topic like  '%".$SerTopic."%'  ");
//ثم اكتب الكود الذي يقوم باستعراض المواضيع المشابهة

460.gif

#11

أشكر الجميع بكل ماتعنيه الكلمة

ولكن أحس أنكم تعبتوا واضعتوا وقتكم على شخص لايجيد هذه اللغة نهائيا .....لأنه كلما حاولت فشلت.

مواضيع ذات صلة ( لقد اتعبتيني ) ؟ وسأحاول أن اضعك بموقعي شئت أم أبيتي . ولو بالفلوس.

#12

ههههههههه الامر بسيط يا اخي

حدد فقط اسم الجدول والحقول وسأضع لك الكود بإذن الله

460.gif

#13

ههههههههه الامر بسيط يا اخي

حدد فقط اسم الجدول والحقول وسأضع لك الكود بإذن الله

460.gif

#14

اشكرك اخي المميز

اليك السالفة من طقطق إلى سلام عليكم

عندي في قاعدة البينات جدولين خاصة بالمقالات :

الأول : يسمى (articles_topics) وهذا الجدول مسؤول عن اقسام المواضيع داخل الموقع .

حيث أن الموقع مقسم إلى اكثر من قسم مثل ( قصص مؤثرة - فتاوى - خلق المسلم - بحوث ودراسات - الخ )

وهذا الجدول خالي تماما من المواضيع .

ويحمل بالضبط نفس هذه لحقول :

-- phpMyAdmin SQL Dump
-- version 2.6.4-pl2
-- http://www.phpmyadmin.net
-- 
-- المزود: localhost
-- أنشئ في: 06 مايو 2006 الساعة 17:53
-- إصدارة المزود: 4.1.18
--  PHP إصدارة: 4.3.11
-- 
-- قاعدة البيانات: `*********_site`
-- 

-- --------------------------------------------------------

-- 
-- بنية الجدول `articles_topics`
-- 

CREATE TABLE `articles_topics` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `place` int(10) unsigned NOT NULL default '0',
  `pic` varchar(255) NOT NULL default '',
  `name2` varchar(255) NOT NULL default '',
  `link` varchar(255) NOT NULL default '',
  `name` varchar(255) NOT NULL default '',
  `description` text NOT NULL,
  `bannars` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`ID`),
  KEY `ID` (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=184;

حيث أن

ID = رقم مفهرس

place= في حال كون القسم يحتوي إلى اقسام فرعية

name= اسم القسم

والبقية تحمل رابط والاسم وخلاف ذلك

الثاني: يسمى (articles) وهذا الجدول مسؤول عن المواضيع ويربطها داخل الاقسام وعرضها بالموقع .

ويحمل بالضبط نفس هذه لحقول :

-- phpMyAdmin SQL Dump
-- version 2.6.4-pl2
-- http://www.phpmyadmin.net
-- 
-- المزود: localhost
-- أنشئ في: 06 مايو 2006 الساعة 17:55
-- إصدارة المزود: 4.1.18
--  PHP إصدارة: 4.3.11
-- 
-- قاعدة البيانات: `**********_site`
-- 

-- --------------------------------------------------------

-- 
-- بنية الجدول `articles`
-- 

CREATE TABLE `articles` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `topic` int(10) unsigned NOT NULL default '0',
  `subject` varchar(255) character set utf8 collate utf8_bin NOT NULL default '',
  `writer` varchar(255) NOT NULL default '',
  `count` varchar(255) character set utf8 collate utf8_bin NOT NULL default '',
  `description` text character set utf8 collate utf8_bin NOT NULL,
  `text` text character set utf8 collate utf8_bin NOT NULL,
  `resource` varchar(255) character set utf8 collate utf8_bin NOT NULL default '',
  `selects` varchar(255) character set utf8 collate utf8_bin NOT NULL default '',
  `basil` varchar(255) character set utf8 collate utf8_bin NOT NULL default '',
  `date` varchar(255) character set utf8 collate utf8_bin NOT NULL default '',
  `counter` varchar(10) character set utf8 collate utf8_bin NOT NULL default '0',
  PRIMARY KEY  (`ID`),
  KEY `ID` (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2023;

حيث ان

ID= مفهرس

topic= وهذا هو رقم القسم الذي حفظ تحته الموضوع

subject=الموضوع

---------------------------------------------------------------------------------------

وهذا هو كود وضع المقالات في الصفحة الرئيسية :

<?php
$query=mysql_query("SELECT * FROM articles_topics WHERE ID=162");
while($row=mysql_fetch_array($query)){
?>
<td style="border: 1px solid #5A72EA; " align="center"><font class="smallfont">
<?php
$query2=mysql_query("SELECT * FROM articles WHERE $row[ID]=topic ORDER BY ID DESC LIMIT 5");
while($result=mysql_fetch_array($query2)){
?>
<a target="_blank" href="articles_sultan.php?ID=<?php echo $result[ID] ?>"><?php echo $result[subject] ?></a><br>
<?php
}
?>

وهذا كود الثاني الذي عندما اضغط الموضوع بالصفحة الرئيسية ينتقل لي الى صفحة خاصة يعرض النص المكتوب بالموضوع

على الصفحة اسم (articles.php)

<?php
$query_topic_name=mysql_query("SELECT * FROM articles_topics WHERE '$result[topic]'=ID ORDER BY ID");
$result_topic_name=mysql_fetch_array($query_topic_name);
echo"<a href=''>الصفحة الرئيسية >>> <a href='articles.php?topic=$result[topic]'>$result_topic_name[name]</a> ";?></a>
<title><?php echo $result_topic_name[name] ?> - <?php echo $result[subject] ?></title>
<?php echo $result[subject] ?></font></b></td></tr><tr>

وفي اخر صفحة عرض النص (articles.php) هذه اريد ان اضيف جدول يحمل اسم ( مواضيع ذات صلة )

هنا السؤال . لقد استخدمت هذا الكود فقط لعرض المواضيع الموجودة داخل القسم الخاص والمحفوظ به الموضوع .

<?php
$query=mysql_query("SELECT * FROM articles_topics WHERE '$result[topic]'=ID ORDER BY ID");
while($row=mysql_fetch_array($query)){
?>
<?php
$query2=mysql_query("SELECT * FROM articles WHERE $row[ID]=topic ORDER BY ID DESC LIMIT 5");
$td=0;
while($result=mysql_fetch_array($query2)){
$td++;
if($td=="2"){
$td_color="#EFF4FA";
$td="0";
}else{
$td_color="#DFE9F4";
}
?>
<a href="articles.php?ID=<?php echo $result[ID] ?>"><?php echo $result[subject] ?></a><br>

ارجوا ان اكون وفقت لعرض سؤالي بالطريقة الجيدة.

وفي الانتظار

شكرا

#15

شوف يا أخ علي ,أتوقع أن الفكرة واضحة بس المطلوب منك تبدل أسماء الجداول بالي حطيته وكذالك إسم القاعدة وكذالك أسماء الحقول وهيعمل معك إن شاء الله ولا تأيس من لم يخطألم يتعلم

#16

أيواااااااااااااااااااااااااااااااااه

ها هو الكودمرفق مطلوب منك التالي:-

1-غير إسم القاعدة إلى إسم القاعدة تبعك

2- غير إسم الجدول إلى الجدول تبعك

3- خلي ال id في الحقل الأول والعنوان Titles في الحقل اثاني والحقل الأخير المقالات

4-localhost/articledispart.php

نصيحة:

** انس أكواد الhtml وتنسيقات

** فكر في جدول صغير علشان تحل قاعدة كبيرة مثل حقك بمعنى لو طبقت على أكيد هتنطبق على كبير

وباالتوفيق

أنتظر ايش الي سار معك

article.rar

#17

أخي SoProgramer

أنت ماقصرت وتقريبا نجحت وأنا أحاول من ذلك الوقت وتقريبا نجحت

ولكن بقي علي كيف أن اجعل الكود يتعرف على الحقل الثالث في الجدول حيث أنه الحقل الثالث مواضيع المقالات

وانت حددت أن يكون الثانتي هو عنوان الموضوع

وعند الانتهاء سأخبرك بكل شئ بالتفصيل

ولك مني الدعاء أنت والاخ مميز في هذه الساعة المجابة الدعاء إن شاء الله

#18

نعم اخي

لقد عرفت طريقة كيف ذلك ولكن لازلت احاول في البحث حول دقة هذا

فإني لست متأكد من النتائج إلى الان

سأوافيك بكل جديد ارجوا المعذرة منكم جميعا على إطالة الموضوع

#19

السلام عليكم كيف الأحوال يا شباب ...

كنت بدور على كود يعمل بحث بالموضوعات ذات الصلة ووصلت للموضوع ده فى منتدانا العزيز ... بس المشكلة يا شباب إن الكود المستخدم هنا بيبحث عن نفس الإسم بالظبط بمعنى لو عندى خبر التايتل بتاعه "مصر تفوز بكاس العالم " وعملت بحث عليه بالأسلوب المكتوب فوق هيجيبلى أى خبر تانى يكون العنوان بتاعه بالظبط زى الخبر ده يعنى لازم يكون الخبر عنوانه "مصر تفوز بكاس العالم" ...

$NewSer=mysql_query("select * from News where topic like  '%".$SerTopic."%'  ");

فلو أنا عايز اعمل بحث عن موضوعات ذات صلة ومتكونش بنفس التايتل يعنى تكملة على المثال اللى فات لو خبر مثلاً عنوانه "مصر تتأهل لنهائيات كأس العالم " يجيى فى الموضوعات ذات الصلة .. فهل من مفيد ؟؟

مواضيع مشابهة