المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : درس ربط جدولين ببعض ( عمل أقسام )


admin
12-27-2009, 12:00 AM
السلام عليكم ورحمة الله وبركاته

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

أول شيء نعمل جدولين ..
- جدول أقسام الأخبر
- جدول أخبار

جدول أقسام الأخبار نضع به فقط رقم الآي دي وعنوان الخبر بكل سهولة :

CREATE TABLE `cat` (
`id` int(11) NOT NULL auto_increment,
`title_cat` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ; جدول الأخبار نضع به الحقول
آي دي الخبر - عنوان الخبر - نص الخبر بالاضافة إلى حقل جديد يربط هذا الخبر بالقسم التابع له

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' <h3> أضف قسم جديد </h3>';
echo'
<form action="addcat.php?do=add" method="post" />
عنوان القسم : <br />
<input type="text" name="title_cat" /> <br />
<input type="submit" value=" أضف القسم " />
</form>
';

/////////////////////////////////// Add cat

if($do=="add"){

$addcat=mysql_query("insert into cat (title_cat)values('$title_cat') ");
if($addcat){ echo' تم اضافة القسم بنجاح '; }
else { echo' هناك خطأ .. لم تتم إضافة القسم بنجاح '; }
}

?> لا أظن أنها تحتاج إلى شرح ..
بعد كذا نعمل ملف اضافة الأخبار .. وسنشرحه ..

include"config.php";

echo' <h3> أضف خبر جديد </h3>';
echo'<form action="addnews.php?do=add" method="post" />';
echo"إختر القسم المناسب : ";
echo "<select name='catid'>";
$e= mysql_query("select * from cat");
while($row=mysql_fetch_array($e)){
extract($row);
echo"<option value='$id'>$title_cat</option>";
}
echo'</select> <br/>
عنوان الخبر : <br />
<input type="text" name="title_news" /> <br />
نص الخبر :
<br />
<textarea name="text"></textarea> <br />
<input type="submit" value=" أضف الخبر " />
</form>
';

/////////////////////////////////// Add ..

if($do=="add"){
$addcat=mysql_query("insert into news (catid,title_news,text)values('$catid','$title_new s','$text') ");
if($addcat){ echo' تم اضافة الخبر بنجاح '; }
else { echo' هناك خطأ .. لم تتم إضافة الخبر بنجاح '; }
}


أهم شيء هنا هو :

echo"إختر القسم المناسب : ";
echo "<select name='catid'>";
$e= mysql_query("select * from cat");
while($row=mysql_fetch_array($e)){
extract($row);
echo"<option value='$id'>$title_cat</option>";
} عملنا قائمة وحددنا اسمها بـ catid
بعد ذلك عملنا استعلام من جدول الاقسام ليظهر لنا جميع الأقسام ضمن قائمة منسدلة
لاحظ أننا وضعنا قيمة الاوبشن هي id القسم وثم عرضنا الاسماء بواسطة المتغير title_cat
نغلق بعدها علامة الـ select

echo'</select> <br/>'; بعد ذلك نضيف الخبر بطريقة عادية جدا .. لأنه عندما تختار أحد الأقسام ستكون قيمة المتغير catid هي قيمة التغير $id تبع القسم .. فمثلا لو اخترت قسم أخبار الرياضة وكان رقم القسم 3 ستخزن في المتغير catid القيمة 3 ..
وعندما تضيف الخبر للجدول سيكون عنوانه مثل
انتقال لاعب - ونص الخبر : تم انتقالا اللاعب الى الفريق الجديد - ومن ثم حقل catid سيخزن به رقم 3 وهو رقم قسم الاخبار التابع له هذا الخبر ....... وصلت المعلومة ؟؟

بعد كذا نعمل استعلام سهل لجميع الاقسام في الصفحة الرئيسية ..

include"config.php";
$cat= mysql_query("select * from cat ");
while ($row = @mysql_fetch_array($cat)) {
extract($row);

echo "
- <a href='show.php?id=$id'>
$title_cat </a>
<br />
";
} بشكل سهل جدا .. بحيث جعلنا عنوان القسم عبارة عن رابط .. الرابط يؤدي إلى صفحة عرض الأخبار ولكن ليس جميع الأخبار الموجودة لدينا ستظهر ... ! لا .. بل فقط الأخبار التي يحتوي الـ 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 " <h3>جميع أخبار القسم : $title_cat</h3> ";
}

// 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 <br /> ";
}
?> أول شيء وبما أننا دخلنا على هذه الصفحة عن طريق رابط كالتالي :
show.php?id=3
إذاً .. نجلب هذا الآي دي عن طريق

$id=$_GET['id']; بعد كذا نظهر عنوان القسم عن طريق الاستعلام من جدول الأقسام ولكن بشرط .. لا تظهر جميع عناوين الأقسام .. لا .. فقط أظهر لي عنوان القسم اللي الآي دي تبعه هو 3 يعني الآي دي تبعه هو اللي جايني من فوق من الرابط ..

$cat= mysql_query("select * from cat where id='$id' "); ثم المهم الآن .. نعرض أخبار هذا القسم فقط ..
نستعلم من جدول الأخبار ونقوله أظهر جميع الأخبار اللي في الجدول لكن بشرط .. أظهر فقط الأخبار اللي الحقل catid تبعها يساوي ماهو موجود عندنا وهو حاليا 3 -- أي يساوي رقم القسم اللي نحن موجودين فيه الآن ..

$cat= mysql_query("select * from news where catid='$id' ");ومن ثم نطبع الأخبار ... !

while ($row = @mysql_fetch_array($cat)) {
extract($row);
echo " - $title_news <br /> ";
}

said
02-11-2010, 09:44 PM
مشكور أخي الغالي
راح أحاول أطبق الدرس

admin
02-11-2010, 11:23 PM
العفو
وبالتوفيق