دورات الصيف ... 2009
  1. الرئيسية
  2. الإحصائيات
  3. البحث
  4. جديد الدروس
  5. أخبر صديقك
  6. اتصل بنا

المدرسة العربية للبرمجة  » دروس قواعد البيانات » درس: أشكال التحديث في قاعدة البيانات #2

 درس: أشكال التحديث في قاعدة البيانات #2  أضيف في: 18-2-1431هـ
في الجزء الأول من درس أشكال التحديث في قاعدة البيانات الذي إستعرضناه كان يتحدث عن الشكل الأول من تحديث البيانات وهو أن يكون لكل إختيار أو حقل عمود column في الجدول وهو سهل جداً، هذا الجزء سيكون معقد قليلاً من الجزء الأول من الدرس وهو يشرح تحديث أكثر من صف row في الجدول وفي نفس الوقت. (صف وليس عمود، أتحدث عن تركيب الجدول في قاعدة البيانات)
<ul>تحميل المرفقات
</ul>
الشكل الثاني: صف لكل إختيار

يستخدم هذا النمط في التحكم في الإختيارات المتعددة، بحيث ليس هناك داعي لأن يكون هناك عمود (column) رئيسي لكل قيمة وذلك حسب ما يراه صاحب التطبيق في كثرة القيم الموجودة فيها، الإسم المتعارف عليه لهذه العملية بين المطورين العرب أو متعلمي البرمجة عموماً كما كنت أتابع هو التحديث الجماعي لعدة صفوف أو تحديث قيم متعددة للأعمدة محددة في نفس الوقت.
تستخدم غالباً في صفحات الإختيارات الخاصة بالتطبيق Options، فلو إفترضنا أن المدونة تحتوي على صفحة خاصة للإختيارات بحيث يستطيع صاحب المدونة فيها كتابة إسم المدونة، الوصف، إتاحة التعليقات، .. إلخ من الإختيارات تكون هذه الإختيارات مخزنة بشكل صفوف (rows) في الجدول أو قيم لأعمدة الجدول.
في نموذج HTML يتم إستخدام إسم الحقل كمصفوفة لتمريره في العملية التي تليها لمعالجة البيانات وتهيئتها قبل التحديث كما سنشاهد في الدرس.
imgcache/644_geek4arab.com.jpg

مثال عملي: صفحة تحديث إختيارات العامة للتطبيق

قبل البدأ في الدرس سيكون التنفيذ على ملف واحد بلغة PHP والتعامل سيكون مع قاعدة بيانات من نوع MySQL وشفرة HTML و CSS لتنسيق الصفحة ستجدها في الملف المرفق لأنها غير مهمة لشرح الدرس وستكون متضمنة مع ملف PHP نفسه وسأضع في بداية الدرس شفرة الإتصال بقاعدة البيانات وسيكون في بداية الملف كذلك:

PHP CODE:
0001
0002
0003
0004
1$cnx=mysql_connect('localhost''root''') or die (mysql_error());
 
2$dbx=mysql_select_db('test') or die (mysql_error());
 
3mysql_query("set charset UTF8"); 
 
?>


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

PHP CODE:
0001
0002
 1<?php if($message) { ?> <div id="message"><?php echo $message?></div> <?php ?>
 

في بداية سنقوم بإنشاء جدول options وهو للإختيارات العامة لتطبيق ويب ما، وسيكون فيه عدة صفوف وهي ستكون هذه الصفوف هي الإختيارات العامة، وإختيارات مثل ما وضحتها في الأعلى. (الإسم الحقيقي، الإسم المستعار، عنوان ، هل تريد إغلاق الموقع؟، .. وغيرها من الإختيارات العامة)
imgcache/645_geek4arab.com.jpg

إذا كنت تريد إضافة جدول options إلى قاعدة البيانات إنسخ هذه الشفرة لبدأ المثال:


PHP CODE:
0001
0002
0003
0004
0005
0006
0007
0008
<?php 1CREATE TABLE `options` (
 
`option_idint(11NOT NULL auto_increment,
 
`option_namevarchar(200NOT NULL,
 
`option_desctext NOT NULL,
 
`option_valuetext NOT NULL,
 
6 PRIMARY KEY  (`option_id`)
 
7
 
?>


أضف هذا الإستعلام إلى تطبيق SQL الذي تستعمله في عرض قواعد بيانات MySQL (مثل phpMyAdmin) وهي عبارة عن قيم جاهزة لكي نستخدمها في الدرس أو قم بكتابة القيم بنفسك على الجدول options:


PHP CODE:
0001
0002
0003
0004
0005
<?php 1INSERT INTO `options` (`option_id`, `option_name`, `option_desc`, `option_value`) VALUES
 2
(1'الإسم الحقيقي''الإسم الحقيقي للشخص.''أحمد الكثيري'),
 
3(2'الإسم المستعار''الإسم المستعار أو إسم المستخدم للشخص.''mobde3net'),
 
4(3'عنوان الموقع''عنوان الموقع الشخصي''<a href="http://www.mubde3.net/blog/%27%29;">http://www.mubde3.net/blog/');</a
 
?>


الآن سنعرض نموذج HTML وطريقة عرض الإختيارات المستدعاه من قاعدة البيانات بإستخدام بإستفسار SQL كما ستشاهد في شفرة PHP التالية أيضاً، ستجد الملاحظات بعد هذه الشفرة كما أن هناك أجزاء مهمة مشروحة ضمن الشفرة:

PHP CODE:
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
 01<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post">
 02 <fieldset id="form">
 03 <legend>تعديل الإختيارات</legend>
 04 <ul>
 05 <?php
 06 
// إستدعاء الإختيارات من قاعدة البيانات
 
07 $result mysql_query("SELECT * FROM options");
 
08 
 09 
// إستعراض البيانات حسب الإستعلام السابق، وبإستخدام حلقة التكرار while
 
10 while($row=mysql_fetch_array($result)) { ?>
 11 <li>
 12 <label><?php echo $row['option_name']; ?></label>
 13 <div>
14 <input type="text" name="option[<?php echo $row['option_id']; ?>]" value="<?php echo $row['option_value']; ?>" />
 15 <span><?php echo $row['option_desc']; ?></span>
 16 </div>
 17 </li>
 18 <? ?>
 19 
 20 <li>
 21 <label><span style="visibility: hidden;">إضغط على زر تحديث ..</span></label>
 22 <input type="submit" name="submit" value="تحديث" />
 23 </li>
 24 </ul>
 25 </fieldset>
 26 </form>


لاحظ في عند كتابة الحقل (بإستخدام الوسم input) تكتب الخاصية name أو إسم الحقل كمصفوفة وتتكون من رقم الإختيار الذي نريد عرضه، وهذا سيساعدنا عند تحديث الحقول كلها في المرحلة القادمة.
والخطوة الأخيرة من المثال هي تحديث هذه البيانات بعد التأكيد عليها، سنضع شفرة PHP في بداية الملف كالعادة (بعد شفرة الإتصال):

PHP CODE:
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
01if($_POST['submit']) {
 
02 $result mysql_query("SELECT * FROM options ORDER BY option_id");
 
03 
 04 
// إستقبال وتحديث الحقل عن طريق حلقة التكرار while
 
05 // السبب هو أننا نريد تحديث عدة صفوف مع بعضها
 
06 while($row=mysql_fetch_array($result)){
 
07 $option_id $row['option_id'];
 
08 $option_type $row['option_type'];
 
09 $option_value addslashes($_POST['option'][$option_id]); // لاحظ طريقة إستقبال المصفوفة التي كانت موجودة في الحقل في النموذج
 
10 
 11 
// التأكد من قيمة الحقل أنها صحيحة وكما نحن نريدها
 
12 if($option_value) {
 
13 // تحديث الحقل ضمن إستعلام SQL
14 $query mysql_query("UPDATE options SET option_value = '$option_value' WHERE option_id = '$option_id' LIMIT 1") or die (mysql_error);
 
15 if($query$message 'تم تحديث البيانات.';
 
16 } else {
 
17 $message 'هناك خلل في تحديث الإختيارات.';
 
18 }
 
19 
 20 
}
 
21}
  
 
?>

في الشفرة الأخيرة إستخدمت دالة while ورأيتها مناسبة، وقد تكون هناك فكرة أفضل لتحديث الصفوف ولست مبرمج محترف لأعرف أفضل طريقة ولكن أراها تصلح وتفي بالغرض من تجربتي.
كان هذا الدرس يركز على الجزء الثاني والذي أراه مهم من الجزء الأول ورأيت أكثر من تساؤل حول كيفية تحديث جميع الصفوف مرة واحدة بوضعت هذا الدرس الذي أتمنى أن يكون مفيد وواضح لمن يجد صعوبة في ذلك.
تبقى درس واحد حول تحديث البيانات وسنكتب تحديث مركب بين الشكل الاول والثاني بحيث سنستخدم حقول من نوع checkbox و radio و select في نموذج HTML.
الكاتب: مدونة مبدع انقر هنا لمراسلة مدونة مبدع أنقر هنا للإنتقال إلى موقع مدونة مبدع إضافة للمفضلة إضافة لمفضلة Google إضافة لمفضلة Delicious إضافة لمفضلة Digg إضافة لمفضلة Facebook
خيارات الدرس : ارسل الدرس لصديق ارسل الدرس لصديق  طباعة الدرس طباعة الدرس