وبوجود استفسارات حول موضوع ربط الجداول ببعض وعمل أقسام .. حبيت اكتب هالدرس مفصل البسيط عسى أن يكون مفهوم للجميع ..
أول شيء نعمل جدولين ..
- جدول أقسام الأخبر
- جدول أخبار
جدول أقسام الأخبار نضع به فقط رقم الآي دي وعنوان الخبر بكل سهولة :
رمز PHP:
CREATE TABLE `cat` (
`id` int(11) NOT NULL auto_increment,
`title_cat` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
جدول الأخبار نضع به الحقول
آي دي الخبر - عنوان الخبر - نص الخبر بالاضافة إلى حقل جديد يربط هذا الخبر بالقسم التابع له
رمز PHP:
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`title_news` varchar(40) NOT NULL,
`text` text NOT NULL,
`catid` int(5) NOT NULL ,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
مثل ما تلاحظون حقول واضحه جدا .. باستناء حقل catid وهو المهم هنا ..
طيب نعمل صفحة اضافة قسم جديد ..
رمز PHP:
include"config.php";
echo'
أضف قسم جديد
';
echo'
عنوان القسم :
';
/////////////////////////////////// Add cat
if($do=="add"){
$addcat=mysql_query("insert into cat (title_cat)values('$title_cat') ");
if($addcat){ echo' تم اضافة القسم بنجاح '; }
else { echo' هناك خطأ .. لم تتم إضافة القسم بنجاح '; }
}
?>
لا أظن أنها تحتاج إلى شرح طريقة ..
بعد كذا نعمل ملف اضافة الأخبار .. وسنشرح طريقةه ..
رمز PHP:
include"config.php";
echo'
أضف خبر جديد
';
echo'';
echo"إختر القسم المناسب : ";
echo ";
$e= mysql_query("select * from cat");
while($row=mysql_fetch_array($e)){
extract($row);
echo"$title_cat";
}
echo'
عنوان الخبر :
نص الخبر :
';
/////////////////////////////////// Add ..
if($do=="add"){
$addcat=mysql_query("insert into news (catid,title_news,text)values('$catid','$title_news','$text') ");
if($addcat){ echo' تم اضافة الخبر بنجاح '; }
else { echo' هناك خطأ .. لم تتم إضافة الخبر بنجاح '; }
}
?>
أهم شيء هنا هو :
رمز PHP:
echo"إختر القسم المناسب : ";
echo ";
$e= mysql_query("select * from cat");
while($row=mysql_fetch_array($e)){
extract($row);
echo"$title_cat";
}
عملنا قائمة وحددنا اسمها بـ catid
بعد ذلك عملنا استعلام من جدول الاقسام ليظهر لنا جميع الأقسام ضمن قائمة منسدلة
لاحظ أننا وضعنا قيمة الاوبشن هي id القسم وثم عرضنا الاسماء بواسطة المتغير title_cat
نغلق بعدها علامة الـ select
رمز PHP:
echo' ';
بعد ذلك نضيف الخبر بطريقة عادية جدا .. لأنه عندما تختار أحد الأقسام ستكون قيمة المتغير catid هي قيمة التغير $id تبع القسم .. فمثلا لو اخترت قسم أخبار الرياضة وكان رقم القسم 3 ستخزن في المتغير catid القيمة 3 ..
وعندما تضيف الخبر للجدول سيكون عنوانه مثل
انتقال لاعب - ونص الخبر : تم انتقالا اللاعب الى الفريق الجديد - ومن ثم حقل catid سيخزن به رقم 3 وهو رقم قسم الاخبار التابع له هذا الخبر ....... وصلت المعلومة ؟؟ http://www.montadaphp.net/images/smilies/smailes25.gif
بعد كذا نعمل استعلام سهل لجميع الاقسام في الصفحة الرئيسية ..
رمز PHP:
include"config.php";
$cat= mysql_query("select * from cat ");
while ($row = @mysql_fetch_array($cat)) {
extract($row);
echo "
- $title_cat
";
}
بشكل سهل جدا .. بحيث جعلنا عنوان القسم عبارة عن رابط .. الرابط يؤدي إلى صفحة عرض الأخبار ولكن ليس جميع الأخبار الموجودة لدينا ستظهر ... ! لا .. بل فقط الأخبار التي يحتوي الـ catid على رقم القسم نفسه ..
يعني .. رابط قسم أخبار الرياضة مثلا سيكون كالتالي
show.php?id=3
لأن آي دي القسم هو 3
بعد ما يودينا الى صفحة ال show.php
تابع ..
رمز PHP:
include"config.php";
$id=$_GET['id'];
// show cat title ..
$cat= mysql_query("select * from cat where id='$id' ");
while ($row = @mysql_fetch_array($cat)) {
extract($row);
echo "
جميع أخبار القسم :
$title_cat ";
}
// show all news in this cat ..
$cat= mysql_query("select * from news where catid='$id' ");
while ($row = @mysql_fetch_array($cat)) {
extract($row);
echo " - $title_news ";
}
?>
أول شيء وبما أننا دخلنا على هذه الصفحة عن طريق رابط كالتالي :
show.php?id=3
إذاً .. نجلب هذا الآي دي عن طريق
رمز PHP:
$id=$_GET['id'];
بعد كذا نظهر عنوان القسم عن طريق الاستعلام من جدول الأقسام ولكن بشرط .. لا تظهر جميع عناوين الأقسام .. لا .. فقط أظهر لي عنوان القسم اللي الآي دي تبعه هو 3 يعني الآي دي تبعه هو اللي جايني من فوق من الرابط ..
رمز PHP:
$cat= mysql_query("select * from cat where id='$id' ");
ثم المهم الآن .. نعرض أخبار هذا القسم فقط ..
نستعلم من جدول الأخبار ونقوله أظهر جميع الأخبار اللي في الجدول لكن بشرط .. أظهر فقط الأخبار اللي الحقل catid تبعها يساوي ماهو موجود عندنا وهو حاليا 3 -- أي يساوي رقم القسم اللي نحن موجودين فيه الآن ..
رمز PHP:
$cat= mysql_query("select * from news where catid='$id' ");