لا تقوم PHP تلقائيًا بتحويل معلومات مربعات الاختيار المتعددة التي تحمل نفس الاسم إلى مصفوفة مثلما يفعل ASP، مما يسبب بعض الإزعاج في الاستخدام. ولكن لا يزال هناك حل، وهو استخدام جافا سكريبت للقيام بالمعالجة المسبقة. لا تزال مربعات الاختيار المتعددة التي تحمل نفس الاسم موجودة في شكل صفائف في JavaScript، لذلك قبل إرسال النموذج، يمكنك استخدام JavaScript لدمج المعلومات الموجودة في مربعات الاختيار في مصفوفة أحرف وتعيينها للعناصر المخفية في النموذج، ثم استخدم PHP تقوم وظيفة التفجير بتوزيع هذه المصفوفة بحيث يمكن نقل معلومات خانة الاختيار. فيما يلي أمثلة.
لنفترض أن هناك مثل هذا النموذج:
<form name="form1" id="form1"method="post" action="myphp.php" onSubmit="return Checker()">
<نوع الإدخال = "مربع الاختيار" اسم = "قيمة العنصر" = "1"> 1<br>
<نوع الإدخال = "مربع الاختيار" اسم = "قيمة العنصر" = "2"> 2<br>
<نوع الإدخال = "مربع الاختيار" اسم = "قيمة العنصر" = "3"> 3<br>
<نوع الإدخال = "مربع الاختيار" اسم = "قيمة العنصر" = "4"> 4<br>
<نوع الإدخال = "مخفي" اسم = "قيمة العناصر" = "">
<نوع الإدخال = "إرسال" القيمة = "إرسال">
</form>
يحتوي هذا النموذج على أربع خانات اختيار أسماؤها جميع العناصر. عندما ينقر المستخدم على زر إرسال، سيتم استدعاء وظيفة المدقق، وإذا عاد المدقق صحيحًا، فسيتم إرسال النموذج إذا عاد خطأ لن يتم تقديم النموذج. وظيفة المدقق هنا هي وظيفة المعالجة المسبقة التي نريد كتابتها. أضف جافا سكريبت التالي في قسم رأس HTML:
<script language="javascript">
<!--
مدقق الوظيفة ()
{
form1.items.value = "";
إذا (!form1.item.length) // يوجد مربع اختيار واحد فقط،form1.item.length = غير محدد
{
إذا (form1.items.checked)
form1.items.value =form1.item.value;
}
آخر
{
من أجل (i = 0 ; i <form1.item.length ; i++ )
{
إذا (form1.item(i).checked) // يوجد مربع محدد في خانة الاختيار {
form1.items.value =form1.item(i).value;
من أجل ( j = i + 1 ; j <form1.item.length ; j++ )
{
إذا (form1.item(j).محدد)
{
form1.items.value += " "; // استخدم المسافات كفواصلform1.items.value +=form1.item(j).value;
}
}
استراحة؛
}
}
}
عودة صحيحة؛
}
-->
</script>
استخدم
هذا البيان في myphp.php:
$items =تفجير(" ", $HTTP_POST_VARS["items"]);
يمكن فصل هذه الخيارات إلى صفائف. تجدر الإشارة إلى أن القيمة الموجودة في الخيار لا يمكن أن تحتوي على محددات (هنا، مسافات).