الويب المصرى الباشا صاحب المنتدى
عدد المساهمات : 434 تاريخ التسجيل : 14/11/2010 العمر : 37
| موضوع: الدرس الرابع السبت نوفمبر 20, 2010 11:22 pm | |
| [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة] قد تكلمنا في الأجزاء السابقه عن التالي :
كيف تعمل سكربت ؟ --- الجزء الاول كيف تعمل سكربت --- الجزء الثاني كيف تعمل سكربت (اضافة الاقسام) --- الجزء الثالث
وأما في هذا الموضوع سنتكلم عن كيفية تعديل الأقسام وحذفها !!
هل تعرف ماهو أمر قاعدة البيانات الذي يقوم بتحديث المعلومات ؟ هل تعرف ماهو أمر قاعدة البيانات الذي يقوم بحذف سجل معين ؟
طبعا هذه الأوامر هي 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>"; ?>
أول الملف وكالعادة دائما نقوم بتضمين ملف الاتصال بقاعدة البيانات
كود :
<? include("../config.php"); ?>
ثم عملنا جدول بسيط ذو 3 حقول بالفرونت بيج .
ثم قمنا بالاستعلام اولا عن عدد البيانات الموجوده بالقاعده
كود :
<? $query = mysql_query("SELECT id,name FROM story_cat order by id desc"); $numbercat = mysql_num_rows($query); ?>
ثم اتبعنا هذا الاستعلام شرط بحيث اذا كانت عدد البيانات تساوي صفر ستعرض لك رساله بأن لاتوجد اقسام واذا كان لا سيتم عرض البيانات التي بعد else و else تفيد بأن اذا ماتم تنفيذ الشرط الاول يتم تنفيذ مابعد 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>"; } ?>
ولاحظ ان هناك ملفات جديده بهذا الاستعلام وهي : section_edit.php >>> للتعديل section_delete.php >>> للحذف
وثم أغلاقنا حلقة التكرار بهذا بالقوس المعكوف الخاص به } واتبعناه كود اغلاق وسوم الجدول يعني كود html عادي .
إنتهى العمل في الملف section_select.php
========
والآن انشيء ملف جديد بمجلد admin وقم بتسميته section_edit.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>"; ?>
شرح الكود :
اول سطر هو لملف الاتصال بقاعدة البيانات وستلاحظ وجود الكود التالي تحته مباشرة
كود :
<? $id = intval($_GET['id']); ?>
استخدمنا المصفوفه $_GET وهي خاصه بجلب البيانات من عنوان الصفحه على عكس المصفوفه $_POST فهي تأتي بالبيانات من الفورم او النموذج تبع ادخال البيانات .
ماعلينا هالحين خلوني اوضح شويه المصفوفه $_GET وهي كما قلنا انها تأخذ المتغيرات والبيانات من رابط عنوان الصفحه بحيث اذا كان الرابط هكذا :
section_delete.php?id=3
فيجب علينا اخبار المصفوفه $_GET بأننا نريد جلب بيانات المتغير id من الرابط السابق وهي بالطبه رقم 3 وستكون المصفوفه هكذا
كود :
<? $id = $_GET['id']; ?>
فرضا عنوان الصفحه كالتالي :
section_delete.php?namecat=bwady
فهنا المتغير هو namecat وبيانات المتغير هي bwady وستكون كتابة المصفوفه هكذا
كود :
<? $id = $_GET['namecat']; ?>
وسيتم عرض الناتج bwady
اعتقد الحين واااااااضحه الطبخه >>>> ولو تلاحظ اننا استعملنا الداله intval ومررنا المصفوفه عليها ياااااااااااااااترى ليش ؟؟
بكل بساطه لأن الدالة intval تعديل قيمة المتغير الى رقم ولاتقبل النصوص نهائيا سوى الأرقام حتى واذا تم التحايل عليها وتم كتابة نص مثلا بهذه الحاله سيتم ارجاع القيمه الى رقم وليس نص يعني تستخدم للأمان في php . وتكتب هكذا
كود :
<? $id = intval($_GET['id']); ?>
ثم كتبنا استعلام لجلب بيانات القسم بشرط ان يكون رقم id يساوي $id كما في الكود
كود :
<? $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'>
والآن ستجد بداخل الفورم كود
كود :
<input type='hidden' name='id' value='$info_cat[id]'>
وتلاحظ انه حقل عادي ولكن نوعه hidden يعني مخفي ولا يتم عرضه بالصفحه وجعلنا اسمه id وقيمته $info_cat[id] أي رقم id تبع القسم وسيتم استعمال هذا الرقم في الصفحه التي تستقبل البيانات وهو ضروري جدا ليتم تحديد القسم المراد تحديث بياناته في صفحة الاستقبال للبيانات .
ثم عملنا جدول بالفرونت بيج ذو حقلين ووضعنا بداخل الفورم وبداخل الجدول ستجد خانات ادخال النصوص لها اسم ولها قيمه !!
لاحظ : كود :
<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) تم جلبها من قاعدة البيانات وان الاسم لكل حقل مختلف عن الآخر وللعلم اسم الحقل تقدر تغيره لأي اسم تبيه بشرط انك وقت الاستقبال للبيانات تضع الاسم تبع الحقل اللي وضعه بمصفوفه حتى يتم التعرف عليه .
وبالأسفل ستلاحظ وجود استعلام آخر وهو كود :
<? $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 وهو خاص بإستقبال البيانات للقسم وقت تحديثها . ضع به الكود التالي :
كود :
<? 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 اللي قلت لك ضروري وسيتم استخدامه في عملية تحديث بيانات القسم حسب رقمه !! وهاهو تم جلبه من خلال هذا الكود
كود :
$id = $_POST['id'];
وأما المتغيرات السابقه فهي كما شرحت سابقا هي اسماء الحقول وبياناتها .
وبما أننا نريد تعديل أو تحديث البيانات فيجب علينا استخدام الاستعلام UPDATE وهو كما بالكود السابق :
كود :
<? $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 وقم بوضع الاكواد التاليه بداخله :
كود :
<? 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
| |
|