اتاحة المجال للرد من دون حساب (عضوية)
سيتم الاعلان عن الفائزين في سوالف كاست في الأول من 2009

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

موضوع مغلق  
 
LinkBack أدوات الموضوع
عضو سوبر نشيط
تاريخ التسجيل: Dec 2000-
#1 (permalink)  
حلول برمجية (4) PHP الخيارات المتعددة


هذا موضوع حول الخيارات المتعددة. وقد عانيت كثيرا حتى وصلت إلى الحل.

لأن تحديد خيار واحد أمر سهل؛ فمثلا لو عرضت أمامك قائمة بأسماء المدن؛ لتحديد واحدة منها فإن البرمجة سهلة:

حيث تعطي لكل مدينة قيمة ، ثم تطبع هذه القيمة.

لكن لو كانت هناك قائمة فيها عدة خيارات : مثلا حدد المدن التي زرتها!

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

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


أولا : //* تحديد الاتجاه من اليمين إلى اليسار


كود:
echo "	<html dir='rtl'>

ثانيًا :

المعلومات المراد عرضها. يمكنك استدعاء معلومات من قاعدة البيانات، أو من ملف نصي، أو من متغير.

في هذا التطبيق طبقت على ( المتغير ).

كود:
$city = "مكة المكرمة، المدينة النبوية، الرياض، جدة، الدمام، جلاجل، ليلى، أبها، تبوك";
ثالثًا :

نحسب عدد الفواصل في المتغير السابق؛ لكي نستطيع فصل مدينة عن الأخرى.

يمكنك وضع أي علامة للفصل كـ ( - )، أو ( * )، أو ( @ ) وهلم جرا

كود:

$number = substr_count($city, "،");

رابعًا :


نفرق البيانات حسب وجود الفواصل ثم نجعل هذه البيانات في متغير اسمه $data
كود:
$data = explode ("،",$city);
حلقة تكرار للمعلومات المراد عرضها
المتغير $number هو السابق ذكره في أول البرنامج لحساب عدد الفواصل

كود:
for ($i=0; $i<$number; $i++) {

خامسًا :

1 - نحدد نوع الأنموذج، والملف المستقبل للمعلومات. وضعت اسما للأنموذج (name='city') وهذا //ليس بلازم؛ ولكني من أجل تسهيل قراءة النماذج

2 - حدد خيار الإدخال بأنه خانة اختيار (checkbox). هناك عدة خيارات منها النقطة (radio) والفرق //بينهما أن (checkbox) تتيح لك خيارات متعددة في الوقت نفسه؛ بينما لا تتيح لك (radio) سوى //اختيار واحد

3 - سبق أن طلبنا حلقة تكرار، بحيث يطبع أسماء المدن بعددها في المتغير الأصلي $city الذي //فصلناه عن طريق ( الفاصلة) بالمتغير $data

4 - وضعت اسم المتغير للاختيارات myboxes[] فارغا لكي يتحمل عدة خيارات، ولا يكون خاصا //بخيار معين. ثم أعطيته قيمة اسم المدنية ($data[$i]).

كود:
echo "
	<form  name='city' method='POST' action='$CODE_SELF' >
	<input type='checkbox' name='myboxes[]' value='$data[$i]'  > $data[$i]<br> 				

	";
سادسًا :

إغلاق حلقة التكرار

كود:
}

سابعًا :

طباعة أمر الإرسال، ثم إغلاق الأنموذج


كود:
echo "
    <input type='submit' name='Submit' value='أرسل'>

</form>
";



ثامنًا :

طباعة نتائج الاختيار، وضعتها هنا كي لا يطبع البرنامج الخيارات والنتائج، فهو هنا سيطبع //النتائج، ثم يتوقف.


إذا كان الأنموذج الذي فيه الخيارات بنمط (POST) فإننا نطبع النتائج. هناك نوعان من الأنماط للأنموذج : (POST)، و (GET).

كود:
 if ($REQUEST_METHOD=="POST") {

تاسعًا :

في الأنموذج وضعنا متغيرا باسم $myboxes ، وهنا نحسب عدد الخانات المختارة التي وضعت في هذا المتغير.

كود:
$num=count($myboxes);
عاشرًا:

بما أن الأنموذج يشتمل على عدة خيارات فلا بد من عمل حلقة تكرار لعرض الخيارات كلها، يمكن عمل حلقة التكرار بطريقة أخرى ... while

كود:
for ($i=0; $i<$num; $i++) {

حادي عشر :

إذا خترت ثلاث مدن مثلا، فإن المتغير $myboxes سيتحمل ثلاث قيم، لهذا نضع متغيرا جديدا //للطباعة اسمه $print_city ، وهذا المتغير يزداد قيمة بعدد القيم التي في المتغير $myboxed ، فإذا اخترت خمس مدن يزداد خمس مرات؛ لكي يعرض النتيجة كاملة


المتغير $i يرمز إلى القيمة المختارة، ولهذا يكرر الطباعة إلى أن تتوقف قيمة المتغيرات في //$myboxes، فلو اخترت ثلاث مدن مثلا : فسيطبع :

كود:
$myboxes[الرياض]-
$myboxes[جدة]-
$myboxes[الدمام]-
وهكذا


كود:
$print_city .= "$myboxes[$i]-";
ثاني عشر :

إنهاء حلقة التكرار السابقة


كود:
}
ثالث عشر:

طباعة النتيجة


كود:
<br>
	لقد اخترت المدن التالية
	<br>
$print_city
";

رابع عشر :

طباعة أمر التوجيه للصفحة الرئيسة


كود:
echo "
<br>
<a href='$CODE_SELF'> البداية</a>
	";
خامس عشر :

إنهاء البرنامج ؛ لكي لا ينفذ الأوامر التالية

[code]

exit ();

[code]


سادس عشر :

إغلاق قوس : if ($REQUEST_METHOD=="POST")

كود:
}

إعادة تركيب البرنامج :

كود:
<?php


/*---------------------------------------------------------------------
/
/ تطبيق عملي لإظهار عدة خيارات
/ إعداد عبد الرحمن
/ ababab90@yahoo.com
/ http:///www.toarab.ws
/
/----------------------------------------------------------------------
*/

//* تحديد الاتجاه من اليمين إلى اليسار
echo "	<html dir='rtl'>
<center><h1>تطبيق عملي للخيارات المتعددة<br>، إعداد الفقير إلى عفو ربه : عبد الرحمن
<br><br>
";

// المعلومات المراد عرضها. يمكنك استدعاء معلومات من قاعدة البيانات، أو من ملف نصي، أو من متغير.
//في هذا التطبيق طبقت على ( المتغير ).

$city = "مكة المكرمة، المدينة النبوية، الرياض، جدة، الدمام، جلاجل، ليلى، أبها، تبوك";

// نحسب عدد الفواصل في المتغير السابق؛ لكي نستطيع فصل مدينة عن الأخرى.
// يمكنك وضع أي علامة للفصل كـ ( - )، أو ( * )، أو ( @ ) وهلم جرا

$number = substr_count($city, "،");

// نفرق البيانات حسب وجود الفواصل ثم نجعل هذه البيانات في متغير اسمه $data

$data = explode ("،",$city);


// طباعة نتائج الاختيار، وضعتها هنا كي لا يطبع البرنامج الخيارات والنتائج، فهو هنا سيطبع //النتائج، ثم يتوقف.


// إذا كان الأنموذج الذي فيه الخيارات بنمط (POST) فإننا نطبع النتائج. هناك نوعان من الأنماط للأنموذج //: (POST)، و (GET).

 if ($REQUEST_METHOD=="POST") {


// في الأنموذج وضعنا متغيرا باسم $myboxes ، وهنا نحسب عدد الخانات المختارة التي وضعت في هذا // المتغير.
$num=count($myboxes); 

// بما أن الأنموذج يشتمل على عدة خيارات فلا بد من عمل حلقة تكرار لعرض الخيارات كلها، يمكن عمل //حلقة التكرار بطريقة أخرى ... while

for ($i=0; $i<$num; $i++) {

//إذا خترت ثلاث مدن مثلا، فإن المتغير $myboxes  سيتحمل ثلاث قيم، لهذا نضع متغيرا جديدا //للطباعة اسمه $print_city ، وهذا المتغير يزداد قيمة بعدد القيم التي في المتغير $myboxed ، فإذا //اخترت خمس مدن يزداد خمس مرات؛ لكي يعرض النتيجة كاملة


//المتغير $i  يرمز إلى القيمة المختارة، ولهذا يكرر الطباعة إلى أن تتوقف قيمة المتغيرات في //$myboxes، فلو اخترت ثلاث مدن مثلا : فسيطبع :
//$myboxes[الرياض]-
//$myboxes[جدة]-
//$myboxes[الدمام]-
//وهكذا

$print_city .= "$myboxes[$i]-";
}  // إنهاء حلقة التكرار السابقة


// طباعة النتيجة
echo "
<br>
	لقد اخترت المدن التالية
	<br>
$print_city
";

// طباعة أمر التوجيه للصفحة الرئيسة
echo "
<br>
<a href='$PHP_SELF'> البداية</a>
	";

// إنهاء البرنامج ؛ لكي لا ينفذ الأوامر التالية
exit ();
 } //إغلاق قوس  : if ($REQUEST_METHOD=="POST") {


// حلقة تكرار للمعلومات المراد عرضها
// المتغير $number هو السابق ذكره في أول البرنامج لحساب عدد الفواصل
for ($i=0; $i<$number; $i++) {

// 1 - نحدد نوع الأنموذج، والملف المستقبل للمعلومات. وضعت اسما للأنموذج (name='city') وهذا //ليس بلازم؛ ولكني من أجل تسهيل قراءة النماذج
// 2 - حدد خيار الإدخال بأنه خانة اختيار (checkbox). هناك عدة خيارات منها النقطة (radio) والفرق //بينهما أن (checkbox) تتيح لك خيارات متعددة في الوقت نفسه؛ بينما لا تتيح لك (radio) سوى //اختيار واحد
// 3 - سبق أن طلبنا حلقة تكرار، بحيث يطبع أسماء المدن بعددها في المتغير الأصلي $city  الذي //فصلناه عن طريق ( الفاصلة) بالمتغير $data 
// 4 - وضعت اسم المتغير للاختيارات myboxes[] فارغا لكي يتحمل عدة خيارات، ولا يكون خاصا //بخيار معين. ثم أعطيته قيمة اسم المدنية ($data[$i]).

echo "
	<form  name='city' method='POST' action='$PHP_SELF' >
	<input type='checkbox' name='myboxes[]' value='$data[$i]'  > $data[$i]<br> 				

	";
} // إغلاق حلقة التكرار

// طباعة أمر الإرسال، ثم إغلاق الأنموذج

echo "
    <input type='submit' name='Submit' value='أرسل'>

</form>
";






?>


لتجربة البرنامج :

http://www.toarab.ws/scripts/checkbox.php


لتحميل الملف :






الملفات المرفقة
نوع الملف: zip checkbox.zip‏ (1.8 كيلوبايت, المشاهدات 338)
__________________
لا تعاند من إذا قال فعل
الشنكبوتية
اللغة العربية سياج هويتنا
عبد الرحمن غير متواجد حالياً   قديم 08-02-2003, 08:37 PM
عضو سوبر نشيط
تاريخ التسجيل: Nov 2001-
#2 (permalink)  

جزاك الله خير استاذ عبد الرحمن






أبو الوليد غير متواجد حالياً   قديم 08-02-2003, 08:42 PM
مشرف قسم PHP
تاريخ التسجيل: Nov 2001-
#3 (permalink)  

مشكوور على الجهد الطيب وواصل إبداعك .. والله يكتب لك الأجر والمثوبة


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

أخوك بارع






__________________

ألا في سبيل الله ما أنا فاعل - - - عطاء وإقدام وحزم ونائل

ncE بارع Pri غير متواجد حالياً   قديم 08-02-2003, 09:21 PM
-
#4 (permalink)  

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






  قديم 10-02-2003, 12:41 AM
مشرف تطوير المواقع
تاريخ التسجيل: Apr 2001-
#5 (permalink)  

الله يجزاك خير يا استاذنا عبدالرحمن
متميز دائماً .

بالنسبة لمن يواجه مشكلة في العرض

ترميز بعدين العرض من اليمين الى اليسار . او العكس و يضبط معاه









تحياتي
اخوكم ابو مشعل






__________________
أخوكم ابو مشعل
ملاحظات لتنظيم المنتدى:
http://www.swalif.net/softs/showthread.php?s=&threadid=42612
---------------
ابو مشعل غير متواجد حالياً   قديم 10-02-2003, 02:05 AM
عضو نشيط
تاريخ التسجيل: Nov 2001-
#6 (permalink)  

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






murcielago غير متواجد حالياً   قديم 10-02-2003, 06:40 AM
عضو نشيط
تاريخ التسجيل: Apr 2002-
#7 (permalink)  

ماشالله عليك ..

وجزاك الله الف خير .... والله يكثر من أمثالك






__________________
الأسم انسان يأسف على امس وتأمل في غد
المؤهل لا زلت طالب في مدرسة الحياة مبدئي من ظن انه قد علم فقد جهل
الوظيفه أبن لكل من هو اكبر مني و أخ لمن هم في سني وأب لمن هو اصغر مني
rzam غير متواجد حالياً   قديم 10-02-2003, 07:25 AM
عضو سوبر نشيط
تاريخ التسجيل: Dec 2000-
#8 (permalink)  

شكرا لكم أيها الأخوة


أبا مشعل، إن كنت تستطيع الدخول إلى ملفات المنتدى فهنا الحل


حلول برمجية (2) PHP






__________________
لا تعاند من إذا قال فعل
الشنكبوتية
اللغة العربية سياج هويتنا
عبد الرحمن غير متواجد حالياً   قديم 10-02-2003, 06:23 PM
-
#9 (permalink)  

جزاك الله خير






  قديم 11-02-2003, 12:21 AM
مشرف تطوير المواقع
تاريخ التسجيل: Apr 2001-
#10 (permalink)  

اقتباس:
رد مقتبس من عبد الرحمن
شكرا لكم أيها الأخوة


أبا مشعل، إن كنت تستطيع الدخول إلى ملفات المنتدى فهنا الحل


حلول برمجية (2) PHP
ليتني املك بس ان شاء الله اخونا سوالف ما يقصر نكلمه و يصلحه






__________________
أخوكم ابو مشعل
ملاحظات لتنظيم المنتدى:
http://www.swalif.net/softs/showthread.php?s=&threadid=42612
---------------
ابو مشعل غير متواجد حالياً   قديم 11-02-2003, 12:29 AM
Moderator
تاريخ التسجيل: Aug 2000-
#11 (permalink)  

بارك الله فيك

دائما مميز






__________________
http://www.bokhalifa.com
شبكة بوخليفه
((( من استغفر للمؤمنين والمؤمنات كتب الله له بكل مؤمن ومؤمنه حسنه )))
Admin5 غير متواجد حالياً   قديم 11-02-2003, 02:47 AM
عضو جديد
تاريخ التسجيل: Sep 2002-
#12 (permalink)  

ما شاء الله
يا ليتني حصلت علي هذا الشرح الممتاز قبل اسبوع او اسبوعين
فعلاً انا محتاج لمثل هذه الامثلة وشكراً جزيلاً اخي الكريم وجزاك الله خيراً
الحقيقة اني محتاج لتصميم فورم لانشاء الجداول داخل قاعدة البيانات وبالتالي فقد دخت السبع دوخات حتي استطعت وضع نموذج اساسي يرضيني وهذا هو الكود الذي وضعته صحيح انه ليس بنفس مستوى اتقان الاخ عبد الرحمن ولكن اضعه هنا املا في ان ان ينبهني احد الاخوة مشكورا الي مواضع العلة والخلل فيه او الي ما سهيت عنه او نسيته او ان يستفيد به احدهم
كود PHP:
<?
echo "<table border=1 cellpading=0 cellscaping=0  style=border-collapse: colapse bordercolor=#111111 width=50%><td>name</td><td>type</td><td>linght</td><tr>";
echo 
"<form method=post action=i.php>"  ;
//echo "";
for ($ir=1;$ir<=4;$ir++)
{
print 
"<td><input type=text name=fna[".$ir."] size=10></td><td>";
print 
"<select name= fty[".$ir."]><option name= fty[".$ir."]>date<option name=fty[".$ir."]>str<option name=fty[".$ir."]>int";
echo 
"</select></td>";
print 
"<td><input type=text name=flin[".$ir."] size=3></td><tr>";
echo 
"<tr>";


}
print 
"<input type=text name=tabname size=25 value=".$tabname.">";
echo 
"<input type=submit value=create>";
echo 
"</form>";
$g"create table ".$tabname;
echo 
"</table>";
for (
$ir=1;$ir<=4;$ir++)
{
$g.=" "$fna[$ir]." ".$fty[$ir]."(".$flin[$ir].")not null";
print (
"<p>".$fna[$ir]);
echo 
$flin[$ir];
echo 
$fty[$ir];
}
echo 
$g;
?>
اعتقد ان البرنامج ابسط من ان يتم شرحه
ملاحظات
1- الفكرة مازالت في طور التجربة
2-المتغير $g سيتم استخدامه مع الدالة mysql_query لغرض انشاء الجدول المطلوب






JCD غير متواجد حالياً   قديم 11-02-2003, 07:15 AM
عضو جديد
تاريخ التسجيل: Sep 2002-
#13 (permalink)  

نسيت اهم شئ
كل عام والجميع بخير [SIZE=]1[/size]






JCD غير متواجد حالياً   قديم 11-02-2003, 07:32 AM
موضوع مغلق


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 12:44 PM بتوقيت المملكة العربية السعودية