بسم الله الرحمن الرحيم
الدرس الرابع من سلسلة دروس موقع ثك بوك ...
عنوان المقالة الاصلي :
Extracting Elements from a Database into a Select Form Field
من الاسئلة المتداولة عند مستخدمي قوائم المراسلة ...
(( كيف يمكنني ان اكون قائمة اختيار من عناصر موجودة في قاعدة البيانات ؟؟ ))
المسألة سهلة لاننا نعرف بأن تكوين القائمة سهل جدا بالـ html فالطريقة المعروفة :
<OPTION> field within a <SELECT> كافية جدا لاداء المطلوب .... و لكننا
الان سوف نستخدم امر التكرار while لكي نستخرج محتويات قاعدة بيانات و نضيفها في قائمة الاختيار .
حسنا فلنبدأ ... اولا لنفرض انه لديك قاعدة بيانات باسم OPERATING_SYSTEMS و تحتوي على خانة واحدة اسمها OS تحتوي على هذه المعلومات : - (( انظر الشكل 1 ))
اوكي الان نبدا البرمجة الفعلية للسكربت بلغة بي اتش بي و لهذا المنظور نبدا بانشاء صفحة html عادية و نضمنها كود البي اتش بي مع ملاحظة انني قمت بكتابة الاكواد اللازمة للاتصال بقاعدة البيانات فاذا كنت لا تعرفها يمكنك مراجعة الدرس الخاص بالاتصال بقاعدة البيانات لذلك لن نتاخر في شرحها مرة اخرى ...
<HTML>
<HEAD>
<TITLE>Sample Form</TITLE>
</HEAD>
<BODY>
<?
// create connection
$connection = mysql_connect("servername","username","password") or die("Couldn't make
connection.");
// select database
$db = mysql_select_db("myDB", $connection) or die("Couldn't select database.");
// create SQL statement
$sql = "SELECT OS FROM OPERATING_SYSTEMS ORDER BY OS ASC";
// execute SQL query and get result
$sql_result = mysql_query($sql,$connection) or die("Couldn't execute query.");
?>
الان نعرف متغير باسم $option_block حيث سيحتوي على كل الخيارات التي سنستخرجها من قاعدة البيانات .
<FORM method="[your method]" action="[your action]">
<P>Operating System:<br>
<SELECT name="operating_system">
<? echo "$option_block"; ?>
</SELECT>
<P><INPUT type="submit" value="submit"></p>
</FORM>
</BODY>
</HTML>
لا يوجد شيء جديد و لكن الملاحظ اننا انشأنا فورم و ذلك لكي يتسنى
للزائر الاختيار من هذه القائمة .
اوكي الان نستخدم الامر وايل :
while ($row = mysql_fetch_array($sql_result)) {
// more code here
}
دائرة التكرار while سوف تقوم بانشاء اري ( قائمة) (array) اسمها $row لكل نتيجة . و للحصول على النتائج لكل قائمة نعرف المتغير ... $os
$os = $row["OS"]; ....... لاحظ انه مع كل دورة ستتغير قيمة المتغير ..
الان لن نحتاج الا الى القليل من الـ html لنضع المتغير $os في قائمة
اختيارات و ذلك بطريقة option المعروفة ...
$option_block .= "<OPTION value=\"$os\">$os</OPTION>";
اذا ستكون النتيجة النهائية لدائرة التكرار وايل على هذا الشكل :
while ($row = mysql_fetch_array($sql_result)) {
$os = $row["OS"];
$option_block .= "<OPTION value=\"$os\">$os</OPTION>";
}
_______
النهاية 1 : نعم لقد انتهينا و ستظهر في صفحة الويب قائمة اختيارات تحتوي
على المعلومات المستخرجة من قاعدة البيانات على هذا الشكل : ( انظر شكل 2 )
الان سوف اكتب الكود كاملا و بعده سأقوم بشرح نقطة فرعية اخرى ...
الكود كاملا :
<HTML>
<HEAD>
<TITLE>Sample Form</TITLE>
</HEAD>
<BODY>
<?
// create connection
$connection = mysql_connect("servername","username","password") or die("Couldn't make
connection.");
// select database
$db = mysql_select_db("myDB", $connection) or die("Couldn't select database.");
// create SQL statement
$sql = "SELECT OS FROM OPERATING_SYSTEMS ORDER BY OS ASC";
// execute SQL query and get result
$sql_result = mysql_query($sql,$connection) or die("Couldn't execute query.");
// put data into drop-down list box
while ($row = mysql_fetch_array($sql_result)) {
$os = $row["OS"];
$option_block .= "<OPTION value=\"$os\">$os</OPTION>";
}
?>
<FORM method="[your method]" action="[your action]">
<P>Operating System:<br>
<SELECT name="operating_system">
<? echo "$option_block"; ?>
</SELECT>
<P><INPUT type="submit" value="submit"></p>
</FORM>
</BODY>
</HTML>
_____
_____
حسنــا النقطة التي احببت ان اشير اليها انه لو كانت هذه القائمة اختيارات
و لكن قد تم الاختيار منها سابقا و الان نريد تحرير الاختيار .. اي انه يجب
ان نظهر الخيار الذي قد كان اختير من قبل بلون ازرق ..
او اننا نريد ان نجعل احد الاختيارات هو الخيار الافتراضي ...
هذه المسألة نحلها بهذه الطريقة ..........:
لنفرض ان احد المحتويات قيمته $curr_os و نريد ان نجعله هو الاختيار الافتراضي ..
حسنا نعيد كتابة امر التكرار وايل بهذه الطريقة ..:
while ($row = mysql_fetch_array($sql_result)) {
$os = $row["OS"];
if ($curr_os == $os) {
$option_block .= "<OPTION value=\"$os\" selected>$os</OPTION>";
} else {
$option_block .= "<OPTION value=\"$os\">$os</OPTION>";
}
}
لا يوجد شيء معقد و لكن اخبرنا البي اتش بي انه اذا كان $os مطابقا
للـ $curr_os اظهر المتغير $os مختارا ( اي ملون بلون ازرق ) و في اي
حالة اخرى اظهر المتغير $os بدون اختيار ..
و في مثالنا هذا $curr_os يساوي solaris اي انه سيكون سولاريس الاختيار الافتراضي .
انظر الشكل (3) :
و هكذا نستطيع ان نعلم على اي محتوى من القائمة بتغيير المتغير .
__________
__________
.... و السلام
اعتذر لانني قد انقطع لفترة طويلة لانني مسافر الى امد غير معلوم .
ان شاء الله قدرت افيدكم و لو بالقليل ...
اخوكم ... ،
^SOURCER^