النتائج 1 إلى 13 من 13

الموضوع: حلول برمجية (4) PHP الخيارات المتعددة

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2000
    المشاركات
    998

    حلول برمجية (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


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





    الملفات المرفقة الملفات المرفقة
    __________________
    لا تعاند من إذا قال فعل
    الشنكبوتية
    اللغة العربية سياج هويتنا
    عبد الرحمن غير متواجد حالياً


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2001
    المشاركات
    823


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





    أبو الوليد غير متواجد حالياً

  3. #3


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


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

    أخوك بارع





    __________________

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

    عبدالعزيز السعيد غير متواجد حالياً

  4. #4
    فضلاً اكتب اسمك الحقيقي هنا
    زائر


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








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

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

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









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





    __________________
    أخوكم ابو مشعل
    ملاحظات لتنظيم المنتدى:
    http://www.swalif.net/softs/showthread.php?s=&threadid=42612
    ---------------
    ابو مشعل غير متواجد حالياً

  6. #6


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





    murcielago غير متواجد حالياً

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Apr 2002
    المشاركات
    170


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

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





    __________________
    الأسم انسان يأسف على امس وتأمل في غد
    المؤهل لا زلت طالب في مدرسة الحياة مبدئي من ظن انه قد علم فقد جهل
    الوظيفه أبن لكل من هو اكبر مني و أخ لمن هم في سني وأب لمن هو اصغر مني
    rzam غير متواجد حالياً

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2000
    المشاركات
    998


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


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


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





    __________________
    لا تعاند من إذا قال فعل
    الشنكبوتية
    اللغة العربية سياج هويتنا
    عبد الرحمن غير متواجد حالياً

  9. #9
    فضلاً اكتب اسمك الحقيقي هنا
    زائر


    جزاك الله خير








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


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


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





    __________________
    أخوكم ابو مشعل
    ملاحظات لتنظيم المنتدى:
    http://www.swalif.net/softs/showthread.php?s=&threadid=42612
    ---------------
    ابو مشعل غير متواجد حالياً

  11. #11
    عضو فعال
    تاريخ التسجيل
    Aug 2000
    المشاركات
    1,382


    بارك الله فيك

    دائما مميز





    __________________
    http://www.bokhalifa.com
    شبكة بوخليفه
    ((( من استغفر للمؤمنين والمؤمنات كتب الله له بكل مؤمن ومؤمنه حسنه )))
    Admin5 غير متواجد حالياً

  12. #12
    عضو جديد
    تاريخ التسجيل
    Sep 2002
    المشاركات
    18


    ما شاء الله
    يا ليتني حصلت علي هذا الشرح الممتاز قبل اسبوع او اسبوعين
    فعلاً انا محتاج لمثل هذه الامثلة وشكراً جزيلاً اخي الكريم وجزاك الله خيراً
    الحقيقة اني محتاج لتصميم فورم لانشاء الجداول داخل قاعدة البيانات وبالتالي فقد دخت السبع دوخات حتي استطعت وضع نموذج اساسي يرضيني وهذا هو الكود الذي وضعته صحيح انه ليس بنفس مستوى اتقان الاخ عبد الرحمن ولكن اضعه هنا املا في ان ان ينبهني احد الاخوة مشكورا الي مواضع العلة والخلل فيه او الي ما سهيت عنه او نسيته او ان يستفيد به احدهم
    كود 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 غير متواجد حالياً

  13. #13
    عضو جديد
    تاريخ التسجيل
    Sep 2002
    المشاركات
    18


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






    JCD غير متواجد حالياً





ضوابط المشاركة

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

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