|
عرض بيانات معينة كإختيارات المستخدم أو تعديل وإضافة المواضيع يكون على نموذج ويب (Web Form)، اليوم سأستعرض الجزء الأول من ثلاثة أشكال للتحديث في قاعدة البيانات والتي أراها متكررة وسبق أن مررت بمشكلة بأحد هذه الأشكال، والدرس مقسم إلى ثلاثة أجزاء وسيستفيد منها المبتدئين خصوصاً والمطورين بشكل عام وهي ليست جديدة عليهم عموماً.
<ul>تحميل المرفقات
</ul>
الشكل الأول: عمود لكل إختيار
هذا الشكل سائد على أغلب جداول قاعدة البيانات التي يعتمد عليها أي تطبيق ويب في تخزين بياناته، وهي مستخدمة في كثير من الأحيان لأجل التحكم بمواضيع الموقع أو صفحاته، حسابات مستخدميه، إلخ .. بحيث تكون البيانات المستدعاه إلى الصفحة تعتمد على مفتاح رئيسي (ID) يميز الصف (row) في الجدول.
وهنا تكون لكل قيمة عمود (column) مستقل، وهي سهلة لا تحتاج إلى تعقيد، يكفي إستخدام إستفسار MySQL واحد لتحديث الصف (row) في الجدول.

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

مثال عملي: صفحة لتعديل الموضوع
قبل البدأ في الدرس سيكون التنفيذ على ملف واحد بلغة PHP والتعامل سيكون مع قاعدة بيانات من نوع MySQL وشفرة HTML و CSS لتنسيق الصفحة ستجدها في الملف المرفق لأنها غير مهمة لشرح الدرس وستكون متضمنة مع ملف PHP نفسه وسأضع في بداية الدرس شفرة الإتصال بقاعدة البيانات وسيكون في بداية الملف كذلك:
| PHP CODE: |
0001
0002
0003
0004
|
<?php 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
|
1<?php if($message) { ?> <div id="message"><?php echo $message; ?></div> <?php } ?>
|
سنقوم بإنشاء جدول جديد وسأسميه posts وستكون به القيم التي سأذكرها في إستفسار SQL لأنشاء الجدول:
| PHP CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
|
<?php 1CREATE TABLE `posts` (
2`post_id` int(11) NOT NULL auto_increment,
3`post_title` varchar(200) NOT NULL,
4`post_name` varchar(200) NOT NULL,
5`post_description` text,
6`post_content` text NOT NULL,
7`post_status` enum('Open','Close') NOT NULL,
8PRIMARY KEY (`post_id`)
9)
?>
|
أضف هذا الإستعلام إلى تطبيق SQL الذي تستعمله في عرض قواعد بيانات MySQL (مثل phpMyAdmin) وهي عبارة عن قيم جاهزة لكي نستخدمها في الدرس أو قم بكتابة القيم بنفسك على الجدول posts:
| PHP CODE: |
0001
0002
0003
|
<?php 1INSERT INTO `posts` (`post_id`, `post_title`, `post_name`, `post_description`, `post_content`, `post_status`) VALUES
2 (1, 'درس: تحديث المعلومات في قاعدة البيانات', 'updating-information-in-database',
?>
|
3 'شرح مختصر', 'عرض بيانات معينة كإختيارات المستخدم أو تعديل وإضافة المواضيع يكون على نموذج ويب (Web Form)،
4 اليوم سأستعرض ثلاثة أنواع لتحديث المعلومات في قاعدة البيانات والتي أراها متكررة وسبق أن مررت بمشكلة بأحد هذه الأنواع ففضلت وضعها جميعاً تدوينة واحدة ليستفيد منها المبتدئين والمطورين وهي ليست جديدة عموماً وعادية جداً على المبرمجين.rnrnالمثال الموجود في الدرس، سيكون على نموذج عبارة عن إختيارات عامة لصفحة تطيبق ويب، ستكون هناك حقول مثل إسم المستخدم، البريد الإلكتروني، عنوان الموقع، .. إلخ من الحقول الإعتيادية، الأهم من هذا هو التركيز على أشكال تحديث مثل هذه المعلومات.',
5 'Open');
سنضع تركيبة نموذج HTML مع شفرة 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
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
|
01<form action="<?php echo $_SERVER['PHP_SELF']."?id=".$_GET['id'] ?>" method="post">
02 <fieldset id="form">
03 <legend>تعديل الموضوع</legend>
04 <ul>
05 <?php
06 // إستعلام لجلب الموضوع عن طريق رقم العمود post_id
07 $result = mysql_query("SELECT * FROM posts WHERE post_id = '".$_GET['id']."'");
08
09 // إستعراض البيانات حسب الإستعلام السابق، وبإستخدام حلقة التكرار while
10 while($row=mysql_fetch_array($result)) { ?>
11 <li>
12 <label>عنوان الموضوع</label>
13 <div>
14 <input type="text" name="post_title" value="<?php echo $row['post_title']; ?>" />
15 </div>
16 </li>
17 <li>
18 <label>إسم الموضوع</label>
19 <div>
20 <input type="text" name="post_name" value="<?php echo $row['post_name']; ?>" />
21 <span>إسم الموضوع باللغة الإنجليزية، سيظهر على رابط الموضوع.</span>
22 </div>
23 </li>
24 <li>
25 <label>وصف مختصر للموضوع</label>
26 <div>
27 <textarea rows="3" name="post_description"><?php echo $row['post_description'] ?></textarea>
28 </div>
29 </li>
30 <li>
31 <label>محتوى الموضوع</label>
32 <div>
33 <textarea rows="10" name="post_content"><?php echo $row['post_content'] ?></textarea>
34 <span>اكتب الموضوع كامل في هذا الحقل.</span>
35 </div>
36 </li>
37 <li>
38 <label>حالة الموضوع</label>
39 <div>
40 <input type="radio" name="post_status" value="Open" <?php if($row['post_status'] == 'Open') { echo 'checked="checked"'; } ?> /> مفتوح
41 <input type="radio" name="post_status" value="Close" <?php if($row['post_status'] == 'Close') { echo 'checked="checked"'; } ?> /> مغلق
42 <span>الوضع الحالي لهذا الموضوع.</span>
43 </div>
44 </li>
45 <?php } ?>
46
47 <li>
48 <label><span style="visibility: hidden;">إضغط على زر تحديث ..</span></label>
49 <input type="submit" name="submit" value="تحديث" />
50 <input name="post_id" type="hidden" value="<?php echo $_GET['id'] ?>" />
51 </li>
52 </ul>
53 </fieldset>
54 </form>
|
ملاحظة: في السطر 50 الموجود في الشفرة السابقة يحتوي على حقل مخفي بإسم post_id وسنستخدم هذا الحقل لنقل رقم العمود في الخطوة التالية وتحديث الموضوع حسب رقم العمود الخاص به.
الآن نأتي إلى الخطوة الأخيرة من هذا المثال وهو تحديث هذه البيانات، وسنضع هذه الشفرة في بداية الملف (بعد شفرة الإتصال):
| PHP CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
|
<?php 01if($_POST['submit']) {
02 // التأكد من أن الحقول ليست فارغة
03 if(!(empty($_POST['post_name']) || empty($_POST['post_title']) || empty($_POST['post_description']) || empty($_POST['post_content']))){
04 $post_id = $_POST['post_id'];
05 $post_name = addslashes($_POST['post_name']);
06 $post_title = addslashes($_POST['post_title']);
07 $post_description = addslashes($_POST['post_description']);
08 $post_content = addslashes($_POST['post_content']);
09 $post_status = $_POST['post_status'];
10
11 } else {
12 $message = 'خطأ: هناك حقول كانت فارغة، أعد محاولة تعديل الموضوع.';
13 }
14 if($post_name && $post_title && $post_description && $post_content) {
15 // تحديث البيانات التي يريد المستخدم تحديثها
16 $query = mysql_query("UPDATE posts SET post_name = '$post_name', post_title = '$post_title', post_description = '$post_description', post_content = '$post_content', post_status = '$post_status' WHERE post_id = '$post_id'") or die (mysql_error());
17 if($query) $message = 'تم تحديث البيانات.';
18 }
19
20}
?>
|
بإمكانك تحسين طريقة التأكد من ملأ الحقول، فقط وضعناها للإختصار بهذه الطريقة، ترقبوا تكملة الدرس والجزء الثاني منه سأشرح الشكل الثاني وهو لتحديث الصفوف مرة واحدة لأحد الأعمدة أو ما يسمى بالتحديث الجماعي.
|