كيف تعمل سكربت شرح ابوليالي

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
بسم الله الرحمن الرحيم

السلام عليكم

اليوم نقلتلكم موضوع كيف تعمل سكربت من شرح الاستاذ ابوليالي

ان شاء الله تستفيدو من الشرح

اذا استفاديت من الشرح او معلومه ارجو تقيمي +++

وشكراً لكم

نبداء الدروس

يتبع .....​
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس الاول
الدرس الاول


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

الدرس الاول

مساكم الله بالخير والمسرات


- هل تحب أن تتعمل برمجة سكربت ما ؟
- هل تحب ان تكون صفحات موقعك ديناميكيه ؟
- هل تكره الركود لصفحات موقعك ؟
- هل تكره التعديل اليدوي للصفحات ؟
- هل تحت أن تعمل عملك في يدك دون اللجوء لدفع الأموال ؟
- هل تحب ان يكون موقعك متجدد ؟
- هل تحب إنتشار موقعك في محركات البحث العالميه ؟
- هل تحب ترتيب صفحات موقعك كيفما تشاء ؟


إذا كان جوبك (( نعم )) فأهلا بك وسهلا ولنتعلم سويا طريقة برمجة سكربت بإستخدام لغة برمجة المواقع php وبالإعتماد على قواعد البيانات mysql .

وإذا كان جوابك (( لا )) فرجاء ورّنــــا عرض أكتافك !!


في بداية الأمر يجب أن تكون لديك خلفيه عن التعامل مع اكواد php ولو حتى 40% لا بأس في ذلك ان شاء الله .


وأيضا يلزمك برنامج لتحرير أكواد الـ php وقد قمت بتوفيره وهو نفس البرنامج الذي استخدمه في جهازي .
برنامج Emeditor
حجمه تقريبا : 2.600 ميغا
طريقة التنصيب سهله ومرفقه معاه وايضا الكراك مرفق مع البرنامج .


أيضا يفضل ان يكون لديك في جهازك سيرفر اباتشي او ما يعرف بـ localhost
وإليك ببرنامج يفي بالغرض
http://daif.net/camel

================

والآن سنقوم بعمل السكربت التالي ان شاء الله :
- سكربت قصص .


================

وطبعا طريقة الشرح بدأ من :
(1) لوحة التحكم >>> وتشمل على أوامر قاعدة البيانات :
-> INSERT
-> UPDATE
-> DELETE
يعني الإضافة والتعديل والحذف .
(2) صفحة العرض >>> وتشمل على الأمر :
-> SELECT
-> UPDATE
يعني عرض السجلات من القاعده ومن ثم تحديث عدادات الزوار اذا وجدت .

 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس الثاني


الدرس الثاني

نبدأ مباشرة بالجد !!


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


لذلك فإن قواعد البيانات تقوم بفهرسة ما تقوم بإدخاله بشكل منظم ومرتب ثم جلب السجلات من القاعده كيفما تشاء وفي أي وقت أردت .


بحيث قواعد البيانات تمكننا من إضافة النصوص والمحتويات وحتى الملفات الى قاعدة البيانات وبالإمكان أيضا استخدام حقل أساسي أو بما يعرف بالمفتاح الأساسي PRIMARY KEY وهو بإختصار شديد لايقبل التكرار ولا التعديل ويضيف العدد 1 تلقائيا حين اضافة مواد بالقاعده يعني راح يعمل المفتاح بالتسلسل 1,2,3,4,5,6 وهذا الى آخر ولكل رقم استغلاليه يعني لايمكن نهائيا تكراره ولا يمكن تعديله .


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

اسم الجدول مثلا car
اسم الحقول للجدول مثلا id,type,model,price
بحيث ان الحقل id يكون مفتاح اساسي .
والسجلات ستكون كالتالي فرضا >>>

1,bmw,2007,15.000kd


ماعلينا من الكلام اللي فوق أصلا لازم تكون عندك خلفيه عن استخدام قواعد البيانات ولو بسيطه .


في سكربتنا هذا سنعمل له مواصفات بسيطه مثل اقسام وفرعيات وعداد زوار لكل قصه وخلافه .


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


فلنفرض اننا نريد جدولين فقط وهما جدول خاص بالأقسام وجدول خاص بمواضيع القصص .


أولا جدول الأقسام ستكون حقوله كالتالي :
- مفتاح اساسي .
- إسم للقسم .
- صورة تعبيريه للقسم .
- ترتيب القسم .
- قسم فرعي وسيكون تلقائيا 0 اذا لم يتم تحديد قسم رئيسي .

ثانيا جدول مواضيع القصص وحقوله كالتالي :
- مفتاح اساسي .
- عنوان القصة .
- موضوع القصة .
- رقم القسم (( سيكون رقم المفتاح الاساسي في جدول الأقسام )) .
- الكاتب .
- الزيارات .
- التقييم .
- عدد المقيمين .
- تاريخ الإضافة .
- ترتيب القصة .


وإليك الإستعلام الخاص في إنشاء الجداول والحقول كما في الخصائص السابقة .

PHP:
CREATE TABLE `story_cat` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(99) NOT NULL default '',
`image` varchar(99) NOT NULL default '',
`sub` int(10) NOT NULL default '0',
`order_cat` int(10) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;

CREATE TABLE `story` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`text` longtext NOT NULL,
`cat` int(11) NOT NULL default '0',
`writer` varchar(255) NOT NULL default '',
`vis` int(11) default '0',
`vote` int(11) NOT NULL default '0',
`count` int(11) NOT NULL default '0',
`date` varchar(255) NOT NULL default '0',
`order_story` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
كل ما عليك هو انشاء قاعدة بيانات جديده ثم زراعة الاستعلامات به .


وايضا مرفق نفس الاستعلام بملف نصي .


يتبع ..

والله ولي التوفيق
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس الثالث

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


الجزء الثالث يتكلم عن كيفية إضافة النصوص الى قواعد البيانات .


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


عموما هالحين طال عمرك روح لمجلد السيرفر اللي راكب بجهازك وانشيء مجلد جديد فلنفرض ان إسم المجلد سيكون story ثم اضف بداخل المجلد مجلد ثاني بإسم admin وهذا المجلد سيتم وضع جميع ملفات التحكم بالسكربت ان شاء الله .


بما أننا قمنا بزراعة هذه الجداول في قاعدة البيانات
PHP:
CREATE TABLE `story_cat` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(99) NOT NULL default '',
`image` varchar(99) NOT NULL default '',
`sub` int(10) NOT NULL default '0',
`order_cat` int(10) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;

CREATE TABLE `story` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`text` longtext NOT NULL,
`cat` int(11) NOT NULL default '0',
`writer` varchar(255) NOT NULL default '',
`vis` int(11) default '0',
`vote` int(11) NOT NULL default '0',
`count` int(11) NOT NULL default '0',
`date` varchar(255) NOT NULL default '0',
`order_story` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
لابد أن نجري إتصال من ملف php الى القاعدة حتى نتمكن من الاضافه والتعديل والحذف وخلافه .

>>>>>> هيا فلــنعمل ملف إتصال بقاعدة البيانات :
بمجلد story انشيء ملف php بإسم config.php وسنكتب به كود الإتصال بقاعدة البيانات .
وهو كالتالي :
PHP:
<?
$localhost = "localhost"; 
$userdb    = "root"; 
$passdb    = ""; 
$namedb    = "story"; 
$connect = @mysql_connect($localhost,$userdb,$passdb)  
or die ("no connect database"); 
$xx= @mysql_select_db ($namedb,$connect) or die ("no select database");
?>

المتغير $localhost هو إسم السيرفر وغالبا يأتي اسمه localhost .
المتغير $userdb هو إسم مستخدم قاعدة البيانات .
المتغير $passdb هو الرقم السري لقاعدة البيانات .
المتغير $namedb هو إسم قاعدة البيانات .

أما المتغير $connect فلا تغير به شي وهو يحتوي على الداله mysql_connect الخاصه في الاتصال في قاعدة البيانات وايضا المتغير $xx لاتغير به شيء وهو يحتوي على الدالة mysql_select_db بحيث يتم تحديد إسم القاعدة المستخدمه .

وهكذا إنتهينا من كتابة ملف الاتصال بقاعدة البيانات config.php .

==============

والآن بمجلد admin انشيء ملف بإسم section.php وهو خاص بإضافة الأقسام لقاعدة البيانات :
قم بعمل نموذج إدخال بيانات يحتوي حقول جدول الأقسام الذي بالقاعدة !!

إليك بالنموذج كاملا :
PHP:
<form method="post" action="section_insert.php"> 
<div align="center"> 
  <center> 
  <table border="1" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="98%" id="AutoNumber1" dir="rtl">
     <tr> 
      <td width="100%" colspan="2"> 
      <p align="center">إضافة قسم جديد</td> 
    </tr> 
    <tr> 
      <td width="20%">إسم القسم :</td> 
      <td width="80%"><input size="60" name="name"></td> 
    </tr> 
    <tr> 
      <td width="20%">صورة القسم :</td> 
      <td width="80%"><input size="60" name="image" dir="ltr"></td> 
    </tr> 
    <tr> 
      <td width="20%">ترتيب القسم :</td> 
      <td width="80%"><input size="60" name="order_cat"></td> 
    </tr> 
    <tr> 
      <td width="20%">قسم رئيسي أو فرعي :</td> 
      <td width="80%"> 
<select size="1" name="sub"> 
<OPTION value="0" selected>قسم رئيسي</OPTION> 
<?php 
include("../config.php"); 
$sql = mysql_query ("SELECT id,name FROM story_cat where sub='0' order by id desc") 
or die ("error"); 
while($cat=mysql_fetch_array($sql)) 
{ 
echo "<OPTION value='$cat[id]'>$cat[name]</OPTION>"; 
} 
?> 
</select> 
      </td> 
    </tr> 
     <tr> 
      <td width="100%" colspan="2"> 
      <p align="center"><input type="submit" value="إضافة" name="xxx"></td> 
    </tr> 
  </table> 
  </center> 
</div> 
</form>
نقوم بشرح النموذج بإختصار :
السطر الأول للكود هو :

<form method="post" action="section_insert.php">


بحيث ان طريقة ارسال البيانات هي post أي ارسال البيانات مباشرة من الخانات الموجوده .
وأما الـ action وهي الصفحة التي يتم توجيه البيانات لها وفي مثالنا تم توجيهها الى الصفحه section_insert.php يعني لازم ننشيء ملف جديد بإسم section_insert.php ونكتب فيه أكواد الاستقبال للبيانات .>> سنتكلم به لاحقا .

حقول النص المكتوبه والمتمثله في اسم القسم وصورة القسم وترتيب القسم تكتب هكذا :
PHP:
<input size="60" name="name">
<input size="60" name="image">
<input size="60" name="order_cat">

مايهمنا في هذا الكود هو اسم الحقل name !!
شوف أسماء الحقول اللي بالكود هي name,image,order_cat هي التي يتم استخدامها في كود استقبال البيانات في صفحة ادخال البيانات للقاعدة ...... أعتقد تم فهم السالفه .


وبالنسبة للقائمة المنسدله اللي مكتوب فيها قسم رئيسي فهذي ان تركت الخيار على ماهو عليه أي (( قسم رئيسي )) فسيتم اضافة رقم 0 تلقائيا وأما اذا إخترت احد الأقسام الموجوده بالقائمة فسيتم إضافة رقم القسم الذي اختره وسيصبح قسم فرعي ...... نعطي مثال بسيط :

فرضا اضفنا قسم بإسم
(( قصص إسلاميه ويحمل المفتاح الاساسي 1 )) >> قسم رئيسي .
وقسم آخر :
(( قصص واقعية ويحمل المفتاح الاساسي 2 )) >> قسم رئيسي .
ثم إضفنا قسم جديد مثلا سميناه (( قصص الصحابه )) ثم اخترنا من القائمه القسم
((قصص إسلاميه )) وهكذا سيتم عرض قسم قصص الصحابه داخل قسم قصص إسلاميه ... وهكذا

ووأما الاستعلام الخاص فهو بالكود السابق وسنفصله تفصيلا :
PHP:
<?
include("../config.php"); 
$sql = mysql_query ("SELECT id,name FROM story_cat where sub='0' order by id desc") 
or die ("error"); 
while($cat=mysql_fetch_array($sql)) 
{ 
echo "<OPTION value='$cat[id]'>$cat[name]</OPTION>"; 
}
?>
أولا ادرجنا ملف الاتصال بقاعدة البيانات ولاحظ المسار تبع الملف
include("../config.php");
ثانيا قمنا بإستخدم SELECT لجلب البيانات من قاعدة البيانات للاقسام الرئيسيه ... وقمنا بإستخدام where لتحديد عرض اقسام معينه فقط بحيث جلعنا جلب البيانات فقط اذا كان الحقل sub=0 فقط ... ثم فتحنا دالة التكرار while لعرض جميع النتائج .

والآن انتهينا من شرح الكود كاملا ان شاء الله

==============

والآن ننشيء ملف جديد بإسم section_insert.php بمجلد admin حيث ان هذا الملف سيكون خاص في استقبال البيانات من النموذج السابق ثم تفحصها ثم ادراجها لقاعدة البيانات .

نكتب به الكود التالي :

PHP:
<?
include("../config.php"); 

$name      = addslashes($_POST['name']); 
$image     = addslashes($_POST['image']); 
$order_cat = addslashes($_POST['order_cat']); 
$sub       = $_POST['sub']; 

if ($name == ""){ 
echo "<div align='center'>لم تقم بإدخال إسم للقسم <a href='javascript:history.back(1)'>عودة للخلف</a></div>"; 
}else{ 
$query = @mysql_query ("INSERT INTO story_cat (name,image,sub,order_cat)  
VALUES 
('$name','$image','$sub','$order_cat')") or die ("error query"); 
echo "<p align=center>تمت الاضافه بنجاح</p>"; 
echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=section.php'>"; 
}
?>

في بداية الكود ادرجنا ملف الاتصال بالقاعده وهذا ضروري جدا لكل ملف اذا كان يتم التعامل مع قاعدة البيانات به .
PHP:
<?
include("../config.php");
?>
ثم استقبلنا البيانات من النموذج عن طريق المصفوفه POST >>> ألا تذكر في كود النموذج الذي بالأعلى ان تم ارسال البيانات عن طريق post وها نحن استقبلناها كما ارسلناها .

PHP:
<?
$name      = addslashes($_POST['name']); 
$image     = addslashes($_POST['image']); 
$order_cat = addslashes($_POST['order_cat']); 
$sub       = $_POST['sub'];
?>

ولو تلاحظ أننا استخدما الداله addslashes في بعض المتغيرات !!! لمــاذا ياترى ؟
ببساطه لزيادة الأمان لقاعدة البيانات أولا وفائدتها إضافة سلاش (/) اذا كان النص المرسل يحتوي على (") أو (') وستكون النتيجه هكذا (/") أو (/') .

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

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

PHP:
<?
echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=section.php'>";
?>
والآن انتهينا من عمل صفحات اضافة الاقسام والاقسام الفرعية .

والله ولي التوفيق​
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس الرابع​

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


قد تكلمنا في الأجزاء السابقه عن التالي :

كيف تعمل سكربت ؟ --- الجزء الاول
كيف تعمل سكربت --- الجزء الثاني
كيف تعمل سكربت (اضافة الاقسام) --- الجزء الثالث

وأما في هذا الموضوع سنتكلم عن كيفية تعديل الأقسام وحذفها !!

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

طبعا هذه الأوامر هي UPDATE وهو لتحديث البيانات والأمر DELETE لحذف البيانات .

سنستخدم هذه الإستعلامات بتعديل او حذف البيانات حسب رقم الـ id الذي يتعتبر مفتاحا أساسيا لكل سجل في قاعدة البيانات ومستحيل تلقا رقم متشابه مع الآخر ولو تذكرون تكلمنا عنه في الجزء الثاني .

======

نبدأ الشغل وقولوا بإسم الله وتوكلنا على الله ولاحول ولاقوة إلا بالله

الحين خلنا نتكلم عن الطريقه اللي راح نتبعها بإختصار >> : >>
(1) ننشيء ملف جديد وهو لكي نعرض جميع البيانات للاقسام هو نضع بجانب كل قسم كلمة حذف أو تعديل .
(2) ننشيء ملف جديد حتى اذا ضغطنا على تعديل سيذهب بنا لهذا الملف وبه يتم عرض بيانات القسم كامله بخانات ويتم تعديلها بكيفك .
(3) ننشيء ملف جديد وهو خاص بإستعلام التعديل فور الانتهاء من تعديل البيانات .
(4) ننشيء ملف جديد حتى اذا ضغطنا على كلمة حذف سيتم حذف البيانات من خلاله .

هذا بإختصار >>> وتعالوا للشغل :

اذهب لمجلد admin وأنشيء ملف جديد بإسم section_select.php وهذا الملف سيتم عرض جميع بيانات الأقسام فيه وسنستخدم به دالة التكرار while حتى تعطينا جميع الأقسام الموجوده .

وهذا الكود ضعه بالملف :
PHP:
<?php 
include("../config.php"); 

echo "<div align='center'> 
  <center> 
  <table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='98%' id='AutoNumber1' dir='rtl'>
    <tr> 
      <td width='86%'> 
      <p align='center'>إسم القسم</td> 
      <td width='7%'><p align='center'>تعديل</p></td> 
      <td width='7%'><p align='center'>حذف</p></td> 
    </tr>"; 
$query = mysql_query("SELECT id,name FROM story_cat order by id desc"); 
$numbercat = mysql_num_rows($query); 

if($numbercat == 0){ 
echo "<tr> 
    <td width='100%' colspan='3'> 
    <p align='center'>لايوجد أقسام حاليا</p></td> 
  </tr>"; 
}else{ 
while($row = mysql_fetch_array($query)) 
{ 
echo "<tr> 
      <td width='86%'>$row[name]</td> 
      <td width='7%'><p align='center'><a href='section_edit.php?id=$row[id]'>تعديل</a></p></td> 
      <td width='7%'><p align='center'><a href='section_delete.php?id=$row[id]'>حــذف</a></p></td> 
    </tr>"; 
} 
} 
echo "</table> 
  </center> 
</div>"; 
?>
أول الملف وكالعادة دائما نقوم بتضمين ملف الاتصال بقاعدة البيانات
PHP:
<?
include("../config.php");
?>

ثم عملنا جدول بسيط ذو 3 حقول بالفرونت بيج .

ثم قمنا بالاستعلام اولا عن عدد البيانات الموجوده بالقاعده
PHP:
<?
$query = mysql_query("SELECT id,name FROM story_cat order by id desc"); 
$numbercat = mysql_num_rows($query);
?>
ثم اتبعنا هذا الاستعلام شرط بحيث اذا كانت عدد البيانات تساوي صفر ستعرض لك رساله بأن لاتوجد اقسام واذا كان لا سيتم عرض البيانات التي بعد else و else تفيد بأن اذا ماتم تنفيذ الشرط الاول يتم تنفيذ مابعد else .
ثم كتبنا كود التكرار لجميع النتائج بالقاعدة :
PHP:
<?
while($row = mysql_fetch_array($query)) 
{ 
echo "<tr> 
      <td width='86%'>$row[name]</td> 
      <td width='7%'><p align='center'><a href='section_edit.php?id=$row[id]'>تعديل</a></p></td> 
      <td width='7%'><p align='center'><a href='section_delete.php?id=$row[id]'>حــذف</a></p></td> 
    </tr>"; 
}
?>

ولاحظ ان هناك ملفات جديده بهذا الاستعلام وهي :
section_edit.php >>> للتعديل
section_delete.php >>> للحذف


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

إنتهى العمل في الملف section_select.php

========

والآن انشيء ملف جديد بمجلد admin وقم بتسميته section_edit.php ثم ضع الكود التالي بداخله
PHP:
<?php 
include("../config.php"); 
$id = intval($_GET['id']); 

$query = mysql_query("SELECT * FROM story_cat where id=$id"); 
$info_cat = mysql_fetch_array($query); 

echo "<form method='POST' action='section_update.php'> 
<input type='hidden' name='id' value='$info_cat[id]'> 

<div align='center'> 
<center> 
<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber2' dir='rtl'>

<tr> 
<td width='30%'>إسم القسم :</td> 
<td width='70%'><input name='name' size='60' value='$info_cat[name]'></td> 
</tr> 

<tr> 
<td width='30%'>صورة القسم :</td> 
<td width='70%'><input name='image' size='60' value='$info_cat[image]'></td> 
</tr> 

<tr> 
<td width='30%'>ترتيب القسم :</td> 
<td width='70%'><input name='order_cat' size='60' value='$info_cat[order_cat]'></td> 
</tr> 


<tr> 
<td width='30%'>القسم الرئيسي :</td> 
<td width='70%'> 
<select size='1' name='sub'> 
<OPTION value='0'>قسم رئيسي</OPTION>"; 

$sql = mysql_query ("SELECT id,name FROM story_cat where sub='0' order by id") or die ("error");
while($sub = mysql_fetch_array($sql)) 
{ 

if($sub['id'] ==  $info_cat['sub']){ 
echo "<option value='$sub[id]' selected>$sub[name]</option>"; 
}else{ 
echo "<option value='$sub[id]'>$sub[name]</option>"; 
} 

} 
echo "</select> 
</td> 
</tr> 

<tr> 
<td width='100%' colspan='2' align='center'><input type='submit' value=' تعديل البيانات ' name='xxx'></td> 
</tr> 

</table> 
</center> 
</div> 
</form>"; 
?>

شرح الكود :

اول سطر هو لملف الاتصال بقاعدة البيانات وستلاحظ وجود الكود التالي تحته مباشرة

PHP:
<?
$id = intval($_GET['id']);
?>

استخدمنا المصفوفه $_GET وهي خاصه بجلب البيانات من عنوان الصفحه على عكس المصفوفه $_POST فهي تأتي بالبيانات من الفورم او النموذج تبع ادخال البيانات .

ماعلينا هالحين خلوني اوضح شويه المصفوفه $_GET وهي كما قلنا انها تأخذ المتغيرات والبيانات من رابط عنوان الصفحه بحيث اذا كان الرابط هكذا :

section_delete.php?id=3


فيجب علينا اخبار المصفوفه $_GET بأننا نريد جلب بيانات المتغير id من الرابط السابق وهي بالطبه رقم 3 وستكون المصفوفه هكذا

PHP:
<?
$id = $_GET['id'];
?>

فرضا عنوان الصفحه كالتالي :

section_delete.php?namecat=bwady


فهنا المتغير هو namecat وبيانات المتغير هي bwady
وستكون كتابة المصفوفه هكذا
PHP:
<?
$id = $_GET['namecat'];
?>

وسيتم عرض الناتج bwady

اعتقد الحين واااااااضحه الطبخه >>>> ولو تلاحظ اننا استعملنا الداله intval ومررنا المصفوفه عليها ياااااااااااااااترى ليش ؟؟

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

PHP:
<?
$id = intval($_GET['id']);
?>

ثم كتبنا استعلام لجلب بيانات القسم بشرط ان يكون رقم id يساوي $id كما في الكود
PHP:
<?
$query = mysql_query("SELECT * FROM story_cat where id=$id"); 
$info_cat = mysql_fetch_array($query);
?>

ثم عملنا form عادي وكتبنا الأكشن تبعه (( صفحة الاستقبال للفوم )) هي section_update.php

<form method='POST' action='section_update.php'>


والآن ستجد بداخل الفورم كود
PHP:
<input type='hidden' name='id' value='$info_cat[id]'>
وتلاحظ انه حقل عادي ولكن نوعه hidden يعني مخفي ولا يتم عرضه بالصفحه وجعلنا اسمه id وقيمته $info_cat[id] أي رقم id تبع القسم وسيتم استعمال هذا الرقم في الصفحه التي تستقبل البيانات وهو ضروري جدا ليتم تحديد القسم المراد تحديث بياناته في صفحة الاستقبال للبيانات .

ثم عملنا جدول بالفرونت بيج ذو حقلين ووضعنا بداخل الفورم وبداخل الجدول ستجد خانات ادخال النصوص لها اسم ولها قيمه !!

لاحظ :
PHP:
<input name='name' size='60' value='$info_cat[name]'>
<input name='image' size='60' value='$info_cat[image]'>
<input name='order_cat' size='60' value='$info_cat[order_cat]'>

لاحظ ان القيمة (value) تم جلبها من قاعدة البيانات وان الاسم لكل حقل مختلف عن الآخر وللعلم اسم الحقل تقدر تغيره لأي اسم تبيه بشرط انك وقت الاستقبال للبيانات تضع الاسم تبع الحقل اللي وضعه بمصفوفه حتى يتم التعرف عليه .

وبالأسفل ستلاحظ وجود استعلام آخر وهو

PHP:
<?
$sql = mysql_query ("SELECT id,name FROM story_cat where sub='0' order by id") or die ("error");
while($sub = mysql_fetch_array($sql)) 
{ 

if($sub['id'] ==  $info_cat['sub']){ 
echo "<option value='$sub[id]' selected>$sub[name]</option>"; 
}else{ 
echo "<option value='$sub[id]'>$sub[name]</option>"; 
} 

}
?>
وهو خاص بالقسم الفرعي وقم تم جلب البيانات ووضعها في قائمه منسدله ولك ان تختار من القسم الفرعي الذي تريد او اعادة القسم الفرعي الى قسم رئيسي .

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

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

وانتهى شرح الملف section_edit.php .

==========

الآن انشيء ملف بإسم section_update.php وهو خاص بإستقبال البيانات للقسم وقت تحديثها .
ضع به الكود التالي :
PHP:
<?
include("../config.php"); 

$id        = $_POST['id']; 
$name      = addslashes($_POST['name']); 
$image     = addslashes($_POST['image']); 
$order_cat = addslashes($_POST['order_cat']); 
$sub       = $_POST['sub']; 

$query =  mysql_query("UPDATE story_cat SET name='$name', image='$image', sub='$sub', order_cat='$order_cat' where id=$id");
echo "<div align='center'>تمت عملية تحديث البيانات بنجاح</div>";
?>
اول سطر تضمين ملف الاتصال بقاعدة البيانات .
لو تتذكر الحقل المخفي hidden اللي قلت لك ضروري وسيتم استخدامه في عملية تحديث بيانات القسم حسب رقمه !!
وهاهو تم جلبه من خلال هذا الكود

PHP:
$id = $_POST['id'];

وأما المتغيرات السابقه فهي كما شرحت سابقا هي اسماء الحقول وبياناتها .

وبما أننا نريد تعديل أو تحديث البيانات فيجب علينا استخدام الاستعلام UPDATE وهو كما بالكود السابق :

PHP:
<?
$query =  mysql_query("UPDATE story_cat SET name='$name', image='$image', sub='$sub', order_cat='$order_cat' where id=$id");
?>

بحيث كل حقل في قاعدة البيانات يقابله متغير يحمل معلومات جديده تم تحديثها ويوجد شرط في نهاية الاستعلام وهو where يعني تعديل الجدول بالبيانات التي تم استقبالها بشرط يكون رقم id يساوي المتغير $id .

وبعدها سيتم عرض رساله اذا تم التحديث بشكل سليم .

انتهى شرح الملف section_update.php

=========

والآن سنقوم بعمل ملف لحذف البيانات من القاعدة .
قم بإنشاء ملف بإسم section_delete.php وقم بوضع الاكواد التاليه بداخله :

PHP:
<?
include("../config.php"); 
$id = intval($_GET['id']); 
$query =  mysql_query("DELETE FROM story_cat WHERE id = $id"); 
echo "<div align='center'>تمت عملية حذف البيانات بنجاح</div>";
?>
أربع أسطر فقط :
السطر الأول لتضمين ملف الاتصال بقاعدة البيانات .
السطر الثاني لجلب قمية المتغير id من العنوان وتم شرحه في اول الموضوع .
السطر الثالث استخدمنا الاستعلام DELETE لحذف البيانات وبأخير السطر ستجد الشرط WHERE بحيث سيتم حذف البيانات اذا كان رقم id ساوي المتغير $id فقط وأما لم نتبع الاستعلام شرط فسيتم حذف جميع بيانات الجدول !!!
السطر الرابع رساله تقول لك بأن تم الحذف بنجاح .

انتهى شرح الملف section_delete.php .

=============

وبهذا نكون قد انتهينا من ( إضافة - تعديل - حذف ) بيانات جدول الأقسام .
وفي هذا الموضع انشأنا أربع ملفات وهي :
(1) section_select.php
(2) section_edit.php
(3) section_update.php
(4) section_delete.php

وفي الجزء السابق تم إنشاء الملفات التالي :
(1) section.php
(2) section_insert.php


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

هذا والله وتمنياتي للجميع بدوام التوفيق
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس الخامس


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

في الجزء السابق تم شرح طريقة تعديل وحذف الأقسام

وتم الانتهاء من الاقسام شرحا وتفصيلا .


والآن بهذا الموضوع سنقوم بشرح طريقة إضافة قصه جديده أو موضوع جديد .


قم بإنشاء ملف جديد في مجلد admin وقم بتسميته add_story.php وهالملف خاص بالنموذج الذي يحتوي حقول اضافة القصه لقاعدة البيانات ويحتوي على :

- عنوان القصة .
- كاتب القصة .
- ترتيب القصة .
- موضوع القصة .
- قسم القصة .
وسيتم إدراح تاريخ الإضافة تلقائيا لقاعدة البيانات بهذه الصورة 15/8/2007

قم بوضع الكود التالي في الملف :
PHP:
<form method="post" action="insert_story.php">
<div align="center">
<center>
<table border="1" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="98%" id="AutoNumber1" dir="rtl">
<tr>
<td width="100%" colspan="2">
<p align="center">إضافة قصة جديده</td>
</tr>
<tr>
<td width="20%">عنوان القصة :</td>
<td width="80%"><input size="60" name="name"></td>
</tr>
<tr>
<td width="20%">إسم الكاتب :</td>
<td width="80%"><input size="60" name="writer"></td>
</tr>
<tr>
<td width="20%">ترتيب القصة :</td>
<td width="80%"><input size="60" name="order_story"></td>
</tr>
<tr>
<td width="20%">موضوع القصة :</td>
<td width="80%"><textarea name="text" rows="6" cols="70"></textarea></td>
</tr>
<tr>
<td width="20%">القسم الخاص بالقصة :</td>
<td width="80%">
<select size="1" name="cat">
<?php
include("../config.php");
$sql = mysql_query ("SELECT id,name FROM story_cat order by id desc") 
or die ("error");
while($cat=mysql_fetch_array($sql))
{
echo "<OPTION value='$cat[id]'>$cat[name]</OPTION>";
}
?>
</select>
</td>
</tr>
<tr>
<td width="100%" colspan="2">
<p align="center"><input type="submit" value="إضافة" name="xxx"></td>
</tr>
</table>
</center>
</div>
</form>
طبعا واضح من الكود ان نموذج اما كما يحلو للمبرمجين ان يسمونه فورم form

في بداية السطر مكتوب

PHP:
<form method="post" action="insert_story.php">

حيث ان نوعية الإرسال هي post والملف اللي سترسل له البيانات هو insert_story.php

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

<input size="60" name="name">
<input size="60" name="writer">
<input size="60" name="order_story">


وايضا ستلاحظ وجود حقل من نوع textarea

<textarea name="text" rows="6" cols="70"></textarea>


يستخدم لكتابة المواضيع الكبيره التي تتعدد فيها الأسطر .

وايضا يوجد هذا الكود
PHP:
<?
include("../config.php"); 
$sql = mysql_query ("SELECT id,name FROM story_cat order by id desc")  
or die ("error"); 
while($cat=mysql_fetch_array($sql)) 
{ 
echo "<OPTION value='$cat[id]'>$cat[name]</OPTION>"; 
}
?>

وهو لجلب بيانات الأقسام كامله وقد حددنا id,name فقط لأن لاحاجة لنا ببقية حقول الجدول ... ووضعنا الاستعلام في قائمة منسدله لكي نختار القسم المناسب لنا .

وفي اسفل الكود ستجد زر الإضافة .

انتهى شرح الملف add_story.php

========

والآن قم بإنشاء ملف استقبال البيانات من الفورم السابق وقم بتسميته insert_story.php طبعا في مجلد admin واكتب به الاستعلام التالي :
PHP:
<?
include("../config.php"); 

$d = date("d"); 
$m = date("m"); 
$y = date("Y"); 
$Xdate = "$d/$m/$y"; 

$name        = addslashes($_POST['name']); 
$writer      = addslashes($_POST['writer']); 
$order_story = addslashes($_POST['order_story']); 
$text        = addslashes($_POST['text']); 
$cat         = $_POST['cat']; 

if ($name == "" OR $text == "" OR $cat == ""){ 
echo "<div align='center'>قم بكتابة عنوان للقصة أو لايوجد موضوع للقصة أو لايوجد قسم <a href='javascript:history.back(1)'>عودة للخلف</a></div>"; 
}else{ 
$query = @mysql_query ("INSERT INTO story (name,writer,cat,order_story,text,date) 
VALUES 
('$name','$writer','$cat','$order_story','$text','$Xdate')") or die ("error query");
echo "<p align=center>تمت الاضافه بنجاح</p>"; 
}
?>
قمنا بتضمين ملف الاتصال بقاعدة البيانات اولا ثم استخدمنا الدالة date لكتابة التاريخ في متغيرات هكذا :
PHP:
<?
$d = date("d"); 
$m = date("m"); 
$y = date("Y"); 
$Xdate = "$d/$m/$y";
?>
وتم تجميع اليوم والشهر والسنه بالأرقام في المتغير $Xdate

ثم استقبلنا المتغير التي تم ارسالها من الفورم السابق بالمصفوفه $_POST
PHP:
<?
$name        = addslashes($_POST['name']); 
$writer      = addslashes($_POST['writer']); 
$order_story = addslashes($_POST['order_story']); 
$text        = addslashes($_POST['text']); 
$cat         = $_POST['cat'];
?>

وكل حقل نصي استخدمنا معاه الدالة addslashes حتى لا تواجهنا مشاكل في اضافة المعلومات لقاعدة البيانات >> تم شرحها بأحد الأجزاء السابقه .

ثم استخدما الشرط التالي :

PHP:
<?
if ($name == "" OR $text == "" OR $cat == ""){
?>

بحيث اذا كانت الحقول (( العنوان أو الموضوع أو القسم )) فارغه سيتم عرض رساله لك ولن تتم اضافة البيانات الى القاعده واذا كانت ليست فارغه فسيتم اضافة البيانات للقاعدة مباشرة

PHP:
<?
$query = @mysql_query ("INSERT INTO story (name,writer,cat,order_story,text,date) 
VALUES 
('$name','$writer','$cat','$order_story','$text','$Xdate')") or die ("error query");
?>


هذا وقد تم الانتهاء من شرح الملف insert_story.php .


وستجدون بالمرفق الملفات التي تم عملها

والله ولي التوفيق
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس السادس


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

إكاملا لسلسلة الدروس التي عملتها بخصوص كيفية عمل سكربت وكان آخر الدروس هو الجزء الخامس :
كيف تعمل سكربت (إضافة موضوع)


وهذا الشرح خاص بإنشاء ملف لعرض الأقسام .


الآن بمجلد السكربت أنشيء ملف جديد بإسم index.php وضع بداخله الكود التالي :
PHP:
<?
include('config.php'); 

echo "<html dir='rtl'> 

<head> 
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'> 
<link rel='stylesheet' href='style.css' type='text/css'> 
<title>$namesite</title> 
</head> 
<body leftmargin='0' topmargin='0'>"; 

include('header.htm'); 

echo "<br>";
?>
شرح الكود :

السطر الأول
PHP:
<?
include('config.php');
?>

خاص بتضمين ملف الاتصال بقاعدة البيانات .

الكود التالي :
PHP:
<?
echo "<html dir='rtl'> 

<head> 
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'> 
<link rel='stylesheet' href='style.css' type='text/css'> 
<title>$namesite</title> 
</head> 
<body leftmargin='0' topmargin='0'>";
?>
وهو وسوم html عاديه مع تضمين ملف الاستايل style.css الخاص بالخطوط والانماط الخاصه بالسكربت .
ثم ستجد متغير إسمه $namesite بين وسمي title أي عنوان الصفحة العلوي والمتغير هو إسم موقعك .

ثم الكود التالي :
PHP:
<?
include('header.htm');
?>

لاحظ اننا ضمنا صفحة وإسمها header.htm ويجب عليك إنشاء صفحة بنفس المسمى بداخل السكربت .


ثم الكود التالي :
PHP:
<?
echo "<br>";
?>

وهو يعني سطر جديد .

==============================


ثم نضيف الاستعلام التالي تحت الكود السابق مباشرة :

PHP:
<?
$Sql = mysql_query("SELECT * FROM story_cat where sub=0 order by order_cat"); 
$cats = mysql_num_rows($Sql); 
if($cats == 0){ 
echo "<div align='center'>عذرا .. لايوجد أقسام حاليا .</div>"; 
}else{ 

echo "<div align='center'> 
  <center> 
<table border='1' cellpadding='3' cellspacing='3' bordercolor='#E7E49F' width='90%' id='AutoNumber2'>";

$looptable = '0'; 
while ($Row = @mysql_fetch_array($Sql)) 
{ 
++$looptable; 
if($looptable=="3"){ 
$tr = "</tr><tr>"; 
$looptable="0"; 
}else{ 
$tr = ""; 
} 

$storys = mysql_num_rows(mysql_query("select id from story where cat='$Row[id]'"));

if ($Row[image]){ 
$imageok = "<img border='0' src='$Row[image]' alt='$Row[name]'><br>"; 
}else{ 
$imageok = ""; 
} 

echo "<td width='33%' bgcolor='#FCFEF0'> 
<p align='center'><a href='section.php?id=$Row[id]'>".$imageok."$Row[name]</a><br>عدد القصص $storys</td> 
$tr"; 
} 

echo "</table> 
  </center> 
</div>"; 
}
?>

شرح الكود :

لاحظ الاستعلام التالي ويحتوي على شرط !!

PHP:
<?
$Sql = mysql_query("SELECT * FROM story_cat where sub=0 order by order_cat"); 
$cats = mysql_num_rows($Sql); 
if($cats == 0){ 
echo "<div align='center'>عذرا .. لايوجد أقسام حاليا .</div>"; 
}else{
?>
والشرط هو يأتي دائما بعد الكلمة where وهنا شرطنا يقول عرض جميع السجلات الموجوده بالجدول story_cat بشرط أن يكون الحقل sub يساوي صفر .

بمعنى أننا سنقوم بعرض جميع الأقسام التي التي يحمل الحقل sub تبع القسم الرقم صفر .

لأن الرقم صفر يعني ان القسم قسم رئيسي وأما اذا كان العدد غير الصفر فيكون القسم فرعي وليس رئيسيا .


ثم قمنا بترتيب الأقسام حسب الحقل order_cat .

ثم استخدمنا دالة حساب عدد السجلات بالجدول وهي :
PHP:
<?
$cats = mysql_num_rows($Sql);
?>

ثم أنشأنا بعدها شرط إذا كان عدد السجلات يساوي صفر فسيتم عرض رساله تفيد بأن لايوجد أقسام حاليا وأما اذا كان العدد أكبر من صفر فسيتم عرض الأقسام :
PHP:
<?
if($cats == 0){ 
echo "<div align='center'>عذرا .. لايوجد أقسام حاليا .</div>"; 
}else{[
?>


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

PHP:
<?
echo "<div align='center'> 
  <center> 
<table border='1' cellpadding='3' cellspacing='3' bordercolor='#E7E49F' width='90%' id='AutoNumber2'>";
?>


ثم كتبنا متغير :
$looptable = '0';
وهو خاص في بداية عرض الأعمدة للجدول في السطر الواحد وجعلنا القيمه صفر حتى يبدأ العد من الصفر الى الأعلى .

ثم فتحنا حلقة تكرار لجلب جميع السجلات بجدول الأقسام :
PHP:
<?
while ($Row = @mysql_fetch_array($Sql)) 
{
?>

ثم كتبنا بداخل حلقة التكرار :
PHP:
<?
++$looptable; 
if($looptable=="3"){ 
$tr = "</tr><tr>"; 
$looptable="0"; 
}else{ 
$tr = ""; 
}
?>

بحيث ان المتغير ++$looptable يزداد 1 لكل مره .
ثم قمنا بعمل شرط بحيث اذا تم عرض ثلاث أعمده بالجدول سيتم عرض البقيه بسطر جديد وهكذا الى ان ينتهي من جلب جميع السجلات .
ثم كتبنا الاستعلام التالي :
PHP:
<?
$storys = mysql_num_rows(mysql_query("select id from story where cat='$Row[id]'"));
?>
وهو خاص بعدد القصص التي داخل كل قسم بحيث جعلنا شرط الاستعلام أن الحقل cat الموجود في جدول القصص يساوي رقم حقل id الخاص بجدول أقسام القصص .

ثم كتبنا شرط آخر وهو خاص بصورة القسم :
PHP:
<?
if ($Row[image]){ 
$imageok = "<img border='0' src='$Row[image]' alt='$Row[name]'><br>"; 
}else{ 
$imageok = ""; 
}
?>
بحيث اذا كانت الصوره موجوده ستعرض واذا ليست موجوده لن يتم عرض اي صوره .

ثم نكتب الكود التالي :
PHP:
<?
echo "<td width='33%' bgcolor='#FCFEF0'> 
<p align='center'><a href='section.php?id=$Row[id]'>".$imageok."$Row[name]</a><br>عدد القصص $storys</td> 
$tr"; 
}
?>

وهو خاص بحقول الجدول الذي عملناه بالفرونت البيج وجعلنا عرض الحقل الواحد يساوي 33% لأننا قمنا بتحديد عرض الحقول بالسطر الواحد يساوي 3 حقول وأما اذا كنا نريد ان نعرض 4 حقول فلابد عليك تغيير الرقم 3 الى 4 ثم تغيير عرض الحقل الى 25% يعني طريقه حسابيه بالنسبة المئويه حيث ان النسبه كامله 100% وسيتم تقسيمها على العدد تبع عرض الحقول بالسطر الواحد .

ثم ستجد هناك اسم ملف جديد وهو :
PHP:
<?
section.php?id=$Row[id]
?>

وهذا الملف خاص بعرض الأقسام سنتكلم عنه لاحقا ان شاء الله ولو تلاحظ ان هنا متغير id يحمل القيمة $Row[id] وهي رقم القسم الخاص به بجدول قاعدة البيانات .

ثم اخذنا سطر جديد ثم كتبنا بعده المتغير $storys وهو خاص بعدد القصص بالقسم .

ثم ستلاحظ وجود المتغير $tr وهو خاص بالقفز سطر جديد لحقول الجدول الذي عملناه بالفرونت بيج كلما تعدى عدد الحقول بالسطر الواحد عن العدد الذي قمنا بتحديده سابقا وهو 3 .

ثم أقفلها دالة التكرار بالقوس المعكوف تبع الإغلاق :
PHP:
<?
}
?>


ثم نكتب نهاية وسوم الجدول اللي عملناه بالفرونت بيج
PHP:
<?
echo "</table> 
  </center> 
</div>"; 
}
?>

ولاحظ وجود القوس } في نهايته وهو خاص بإغلاق الشرط .

==============================


ثم نكتب الكود التالي تحت مباشرة :

PHP:
<?
include('footer.htm'); 
echo "</body> 
</html>";
?>


قمنا بتضمين ملف footer.htm وهو خاص بذيل الصفحة وبذلك يجب عليك انشاءه بنفس مجلد السكربت وبنفس المسمى .

ثم آخر شيء هو إغلاق وسوم الصفحة .


وان شاء الله سيتم شرح ملف section.php الخاص بعرض عناوين القصص حسب القسم .

والله ولي التوفيق
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس السابع

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


تكلمنا في الجزء السادس عن كيفية عرض الأقسام وفي شرحنا هذا سنتكلم عن كيفية عرض الأقسام الفرعيه وعناوين القصص .


قم بإنشاء ملف جديد بمجلد السكربت بإسم section.php ضع به الكود التالي :
PHP:
<?
include('config.php'); 

$id = intval($_GET["id"]); 
$Sql2 = mysql_query("select id,name from story_cat where id=$id"); 
$Row2 = @mysql_fetch_array($Sql2); 
if (!$Row2) 
{ 
ECHO "<meta http-equiv='Refresh' content='1;URL=index.php'>"; 
exit; 
}
?>

السطر الأول هو تضمين ملف الاتصال بقاعدة البيانات .
السطر التالي :
PHP:
<?
$id = intval($_GET["id"]);
?>

وهو لإستقبال المتغيرات من خلال الرابط الذي بالمتصفح عن طريقة المصفوفة $_GET وقمنا بتمرير المتغير على الداله intval وهي خاص بلفترة المتغير وجعله لا يقبل الا رقم فقط .

ثم قمنا بكتابة استعلام يفيد بعرض القسم حسب id=$id واذا لايوجد رقم هذا القسم وعنا له شرط بحيث اذا لم يوجد يتم تحويل المتصفح للصفحة الرئيسيه ثم يتم ايقاف الصفحة section.php .

ثم نكتب اسفل الكود السابق الكود التالي :
PHP:
<?
echo "<html dir='rtl'> 

<head> 
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'> 
<link rel='stylesheet' href='style.css' type='text/css'> 
<title>$Row2[name]</title> 
</head> 
<body leftmargin='0' topmargin='0'>"; 

include('header.htm'); 

echo "<br>";
?>

الكود هو وسوم html خاصه بالهيدر ولاحظ ان عنوان title الصفحة سيكون $Row2[name] يعني إسم القسم .

ثم ثم قمنا بتضمين الملف header.htm تبع الهيدر .

PHP:
<?
$Sql = mysql_query("SELECT * FROM  story_cat where sub=$id order by order_cat");
$cats = mysql_num_rows($Sql); 

if($cats == 0){ 
echo ""; 
}else{ 

echo "<div align='center'> 
  <center> 
<table border='1' cellpadding='3' cellspacing='3' bordercolor='#E7E49F' width='90%' id='AutoNumber2'>";

$looptable = '0'; 
while ($Row = @mysql_fetch_array($Sql)) 
{ 

++$looptable; 
if($looptable=="3"){ 
$tr = "</tr><tr>"; 
$looptable="0"; 
}else{ 
$tr = ""; 
} 

$storys = mysql_num_rows(mysql_query("select id from story where cat='$Row[id]'"));

if ($Row[image]){ 
$imageok = "<img border='0' src='$Row[image]' alt='$Row[name]'><br>"; 
}else{ 
$imageok = ""; 
} 

echo "<td width='33%' bgcolor='#FCFEF0'> 
<p align='center'><a href='section.php?id=$Row[id]'>".$imageok."$Row[name]</a><br>عدد القصص $storys</td> 
$tr"; 
} 

echo "</table> 
  </center> 
</div> 
<br>"; 
}
?>


هذا الاستعلام مشابه تماما للاستعلام الخاص بالملف index.php تبع الاقسام الرئيسيه ولكن هذا الاستعلام خاص بجلب بيانات الاقسام الرئيسيه بحيث وضعنا شرط أنه سيتم جلب سجلات الجدول story_cat بشرط أن يكون الحقل sub=$id وأما بالاستعلام تبع الملف index.php كان sub=0 >>> هل لاحظت الفرق !!

ثم البقيه تم شرحها بالدرس السابق .

==============================


والآن نضع الكود التالي تحت مباشرة :
PHP:
<?
$Sqlx = mysql_query("SELECT id,name,cat,date,vis,count,vote FROM story where cat=$id order by order_story");
$allstorys = mysql_num_rows($Sqlx); 

if($allstorys == 0){ 
echo ""; 
}else{
?>

اولا قمنا بتحديد الحقول التي سيتم سحبها من الجدول تبع القصص وهي :
id,name,cat,date,vis,count,vote

ثم قمنا بعمل شرط للاستعلام بحيث نعرض جميع القصص بشرط cat=$id أي حقل cat تبع القصه يساوي حقل id تبع أقسام القصص . ثم قمنا بالترتيب حسب الحقل order_story .

وايضا استخدمنا دالة حساب عدد السجلات الجدول
PHP:
<?
$allstorys = mysql_num_rows($Sqlx);
?>

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

ثم نكتب الكود التالي اسفل شيء :
PHP:
<?
echo "<div align='center'> 
  <center> 
  <table border='1' cellpadding='3' cellspacing='3' bordercolor='#E7E49F' width='90%' id='AutoNumber3' dir='rtl'>
    <tr> 
      <td width='58%' bgcolor='#FCFEF0'><p align='center'>إسم القصة</p></td> 
      <td width='14%' bgcolor='#FCFEF0'><p align='center'>تاريخ الإضافة</p></td>
      <td width='14%' bgcolor='#FCFEF0'><p align='center'>التصويت</p></td> 
      <td width='14%' bgcolor='#FCFEF0'><p align='center'>الزيارات</p></td> 
    </tr>";
?>
وهو فتحنا جدول ذو 4 حقول عن طريق الفرونت بيج .

ثم انشأنا حلقة تكرار لنجلب جميع القصص التي بالقسم :
PHP:
<?
while ($Rowx = @mysql_fetch_array($Sqlx)) 
{ 
$Rowx[name] = stripslashes($Rowx[name]); 
echo "<tr> 
      <td width='58%'><img src='images/start.gif' alt='$Rowx[name]' border=0> <a href='show.php?id=$Rowx[id]'>$Rowx[name]</a></td> 
      <td width='14%'><p align='center'>$Rowx[date]</p></td> 
      <td width='14%'><p align='center'>$Rowx[vote]/$Rowx[count]</p></td> 
      <td width='14%'><p align='center'>$Rowx[vis]</p></td> 
    </tr>"; 
}
?>
ستلاحظ وجود اسم ملف جديد وهو :
PHP:
<?
show.php?id=$Rowx[id]
?>

خاص بعرض موضوع القصه سيتم شرحه لاحقا ان شاء الله .

لاحظ ان جميع ما بداخل اقواس حلقة التكرار سيتم تكراره على حسب عدد القصص الموجوده به .


ثم نغلق وسوم الجدول ثم نغلق الشرط :
PHP:
<?
echo "</table> 
  </center> 
</div>"; 
}
?>


ثم نقوم بتضمين ملف footer.htm ونغلق بعد وسوم الصفحه كما فعنا بالشرح السابق :
PHP:
<?
include('footer.htm'); 
echo "</body> 
</html>";
?>

إنتهينا من شرح الملف section.php ولله الحمد .

وسيتم شرح الملف الخاص برؤية القصة وموضوعها ان شاء الله .

والله ولي التوفيق
 

Mohamed aliraqi

عضو جديد
7 سبتمبر 2012
480
0
0
الدرس الثامن​

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


من فضل الله تعالى أن أتم نعمته علي ويسّر لي الشروحات من بدايتها وحتى نهايتها بهذا الموضوع .


وهذا الشرح خاص بملف عرض القصة .



أنشيء ملف جديد بإسم show.php بداخل مجلد السكربت ثم ضع به الأكواد التاليه :

PHP:
<?
include('config.php'); 

$id = intval($_GET["id"]); 
$Sql = mysql_query("select * from story where id=$id"); 
$Row = @mysql_fetch_array($Sql); 
if (!$Row) 
{ 
ECHO "<meta http-equiv='Refresh' content='1;URL=index.php'>"; 
exit; 
}
?>
السطر الأول خاص بتضمين ملف الاتصال بقاعدة البيانات .
السطر التالي جلب قمية المتغير وهي تحمل رقم id القصة وتم تمرير المتغير على الدالة intval للأمان .

ثم استعلمنا عن القصة بشرط ان id=$id واذا لايوجد هذا الرقم بقاعدة البيانات فسيتم توجيه المتصفح الى الصفحة الرئيسيه واذا الرقم موجود سيتم عرض باقي الاستعلامات بالملف وعرض القصة .

ثم نضع الكود التالي :
PHP:
<?
$sql2 = mysql_query ("update story set vis=vis+1 where id=$id");
?>

وهالاستعلام خاص بزيارات القصة بحيث يزداد الحقل vis كلما زار الصفحة شخص ما عدد واحد ثم اتبعناه شرط وهو بشرط ان تكون القصة id=$id .

ثم نضع الكود التالي :

PHP:
<?
echo "<html dir='rtl'> 

<head> 
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'> 
<link rel='stylesheet' href='style.css' type='text/css'> 
<title>$Row[name]</title> 
</head> 
<body leftmargin='0' topmargin='0'>"; 

include('header.htm'); 

echo "<br>";
?>

وقد تم شرحه سابقا وهو كود الهيدر واسم الصفحه ثم تضيمن ملف header.htm ثم سطر جديد وستلاحظ ان عنوان الصفحة يحمل اسم القصة وهو $Row[name] .

ثم نكتب هذه الأكواد :
PHP:
<?
$Row[name] = stripslashes($Row[name]); 
$Row[name] = htmlspecialchars($Row[name]); 
$Row[text] = stripslashes($Row[text]); 
$Row[text] = htmlspecialchars($Row[text]); 
$Row[text] = nl2br($Row[text]);
?>
وهي عنوان القصة ومحتوى القصة .

واستخدمنا الدالة stripslashes لإزالة علامات / من النص .
واستخدمنا الدالة htmlspecialchars لعدم تفعيل أكواد html .
ثم استخدمنا الدالة nl2br لإضافة سطر جديد لموضوع القصة .


ثم ننشيء جدول بالفرونت بيج كالتالي :
PHP:
<?
echo "<div align='center'> 
  <center> 
  <table border='1' cellpadding='3' cellspacing='3' bordercolor='#E7E49F' width='90%' id='AutoNumber4' dir='rtl'>
    <tr> 
      <td width='100%' bgcolor='#FCFEF0'><p align='center'>$Row[name]</p></td> 
    </tr> 
    <tr> 
      <td width='100%'>$Row[text]</td> 
    </tr> 
  </table> 
  </center> 
</div>";
?>

ووضعنا بداخلة المتغير $Row[name] لعنوان القصة والمتغير $Row[text] لموضوع القصة .

ثم نضع الكود التالي :

PHP:
<?
echo "<br>"; 

echo "<div align='center'> 
  <center> 
  <table border='1' cellpadding='3' cellspacing='3' bordercolor='#E7E49F' width='90%' id='AutoNumber6' dir='rtl'>
    <tr> 
      <td width='33%' align='center' bgcolor='#FCFEF0'>إسم الكاتب</td> 
      <td width='33%' align='center' bgcolor='#FCFEF0'>تاريخ الإضافة</td> 
      <td width='34%' align='center' bgcolor='#FCFEF0'>زيارات القصة</td> 
    </tr> 
    <tr> 
      <td width='33%' align='center'>$Row[writer]</td> 
      <td width='33%' align='center'>$Row[date]</td> 
      <td width='34%' align='center'>$Row[vis]</td> 
    </tr> 
  </table> 
  </center> 
</div>";
?>

وهو كما واضع لك جدول به 3 خانات لعرض كاتب القصة وتاريخ الإضافة وزياراة القصة .

ثم أخيرا نقل وسوم الصفحة وقبلها نضمن ملف الفوتر :
PHP:
<?
include('footer.htm'); 
echo "</body> 
</html>";
?>
هكذا وقد إنتهينا ولله الحمد.

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

ومن يستوعب الشرح ويركز به ويبدأ به تدريجيا من أوله إلى آخر فسوف ينشي سكربتاته بنفسه بإذن الله تعالى .



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

givara

عضو جديد
23 أكتوبر 2012
2
0
0
جزاك الله كل خير و عافية على هذا الموضوع المفيد جدا و أتمنى أن أعرف كيف أحصل على المرفقات و من أين ؟ إذا تكرمتم علي مع الشكر الجزيل.
 

givara

عضو جديد
23 أكتوبر 2012
2
0
0
جزاكم الله الخير و العافية على عملكم و نشاطكم و أود من الأخ الكريم محمد العراقي أن يتقبل شكري و امتناني له و طلبي منه بإرسال سكربتات الدرس (كيف تعمل سكربت شرح أبو ليالي) على شكل مرفقات علما بأني حاولت إرسال رسالة خاصة له فلم يسمح لي لأسباب أجهلها فأنا عضو جديد في هذا الموقع و لكم جزيل الأجر من الله عز و جل