التحقق من منطق الاستبيان - متقدم
From LimeSurvey Manual
عام
من الخيارات المهمة التي تساعدك على إنشاء الاستبيانات المعقدة وصيانتها بسهولة خيار التحقق من منطق الاستبيان.
أثناء تطوير الاستبيان واختباره، وقبل تفعيله، من المهم جدًا التحقق من صحة منطق الاستبيان. ينطبق هذا بشكل خاص عند استخدام معادلات الصلة والتخصيص والتحقق من الصحة المعقدة، إذ يجب أن تتأكد من أن شيئًا لن يتعطل عند تشغيل الاستبيان.
تتيح لك هذه الميزة التحقق سريعًا من دقة الاستبيان والمجموعات والأسئلة. يمكن الوصول إليها من خيارات قائمة الشريط العلوي الموجودة ضمن الإعدادات المتعلقة بالاستبيان. وهي متاحة من خلال قائمة أدوات:
كما ترى أعلاه، يمكنك تشغيل هذا الخيار أربع مرات، أي مرة لكل لغة مستخدمة في الاستبيان.
الوصف
يعرض خيار التحقق من منطق الاستبيان كل ما حددته لكل سؤال ومجموعة (مثل الاسم والنص والمساعدة والشروط/الصلة وقواعد التحقق من الصحة والقيم الافتراضية والأسئلة الفرعية والإجابات) في جدول مريح. ويبرز الأخطاء، ويتيح لك النقر على معرّفات الأسئلة والمجموعات (أو المتغيرات المستخدمة داخل المعادلات) لفتح علامات تبويب جديدة في المتصفح لتحرير تلك الأسئلة أو المجموعات. وهذا يسهّل تحرير أي أخطاء بسرعة وتحديث صفحة التحقق من المنطق للتأكد من دقة الاستبيان قبل تفعيله.
صُمم العرض أيضًا ليكون مقروءًا للباحثين وجهات رعاية الدراسة، بحيث يمكنهم التحقق من دقة تصميم الاستبيان ومنطقه. يؤدي التحقق من منطق الاستبيان إلى تحديث ذاكرة التخزين المؤقت لجميع التعبيرات المستخدمة في استبيان نشط.
يتضمن الأعمدة التالية:
- # - يعرض عدد تسلسل المجموعات والأسئلة، بدءًا من 0.
- اسم [ID] - يعرض رمز السؤال للمجموعة/السؤال/السؤال الفرعي. يمكن استخدام هذه الرموز كمتغيرات داخل التعبيرات. ID هو معرف السؤال (QID) أو معرف المجموعة (GID). يعرض هذا الحقل أيضًا نوع السؤال (مثل خيار متعدد [M]).
- ملاءمة [تصديق] (افتراضي) - يعرض ما يلي:
- ملاءمة - معادلة الصلة المميزة بالألوان حسب بناء الجملة للسؤال أو المجموعة. إذا كانت صحيحة دائمًا (أي تظهر في أي سيناريو)، فستكون القيمة 1.
- تصديق - يقوم ExpressionScript تلقائيًا بإنشاء معادلة التحقق من الصحة استنادًا إلى خصائص السؤال المحددة (مثل الحد الأدنى/الأقصى لعدد الإجابات، وقيم المجموع الأدنى/الأقصى/المساوي، والقيم الفردية الدنيا/القصوى أو التحقق بالتعبير المنتظم). يعرض هذا القسم معادلة التحقق المنشأة حتى تتمكن من اكتشاف أي أخطاء (مثل المتغيرات غير المعرفة).
- يعرض التحقق على مستوى السؤال المعادلة اللازمة للتحقق من خصائص السؤال الموضحة أعلاه
- يعرض التحقق على مستوى السؤال الفرعي المعادلة اللازمة لتنفيذ array_filter وarray_filter_exclude وexclusive_option
- افتراضي - إذا كان للسؤال قيمة افتراضية، فستُعرض هنا مميزة بالألوان حسب بناء الجملة (لأن القيمة الافتراضية قد تكون تعبيرًا).
- النص [مساعدة] (نصيحة) - يعرض ما يلي:
- نص - نص المجموعة أو السؤال أو السؤال الفرعي أو الإجابة. وهو مميز بالألوان حسب بناء الجملة لإظهار أي تخصيص مضمّن، مما يتيح لك التحقق من أنك عرّفت جميع المتغيرات التي تخطط لاستخدامها في التخصيص.
- مساعدة - يعرض نص المساعدة للسؤال، وهو أيضًا مميز بالألوان حسب بناء الجملة.
- تلميح - يعرض تلميح التحقق من الصحة المنشأ داخليًا استنادًا إلى خصائص السؤال. يُستخدم هذا التلميح نفسه في جميع أنماط الاستبيان، بالإضافة إلى المسح للطباعة وشاشات مدخل البيانات.
- خصائص السؤال - يعرض جدولًا بجميع خصائص السؤال ذات الصلة بهذا السؤال. الخصائص التي قد تكون معادلات مميزة بالألوان حسب بناء الجملة حتى تتمكن من التحقق من دقتها.
الصفوف مرمّزة بالألوان كما يلي:
- المجموعات - تظهر بخلفية رمادية فاتحة
- أسئلة - تظهر بخلفية خضراء فاتحة
- اسئلة ثانوية - تظهر بخلفية صفراء باهتة
- أجوبة - تظهر بخلفية بيضاء سادة
للإجابات سمة إضافية في عمود ملاءمة:
- قيمة - وهي القيمة الداخلية الافتراضية المستخدمة في الحسابات. إذا كنت تستخدم التقييمات، فستكون هذه قيمة التقييم. وإلا فستكون مطابقة لاسم الإجابة.
الاستخدام
في أعلى الصفحة توجد رسالة ملخص. إذا كان كل شيء سليمًا، فستظهر الرسالة "لم يتم اكتشاف أخطاء في بناء الجملة في هذا الاستطلاع"، أو "هذه المجموعة" أو "هذا السؤال"، "بحد ذاته، لا يحتوي على أي أخطاء في بناء الجملة". وإذا كان العكس صحيحًا، فستظهر الرسالة "X أسئلة بها أخطاء في بناء الجملة تحتاج إلى تصحيح".
يتم تلوين خلفية العمود الأقصى (أي #) لكل سؤال يحتوي على أخطاء في بناء الجملة باللون الأحمر. كما سيظهر تحذير يوضح الحد الأدنى لعدد أخطاء السؤال أسفل عمود اسم [ID]. الأخطاء التالية شائعة:
- متغير غير معرف - إذا لم تعرّف جميع متغيراتك، أو أخطأت في كتابة array_filter (أو استخدمت مجموعات مختلفة من خيارات الاجوبة لـ array_filter)، فستظهر أخطاء في بعض أسئلة التحقق من الصحة. تظهر المتغيرات غير المعرفة بنص أحمر داخل إطار بخط أحمر.
- بناء جملة خاطئ - عند البدء في استخدام معادلات الصلة، قد تستخدم أقواسًا أكثر من اللازم أو أقل منه. يتم تمييز مشكلات بناء الجملة هذه وإحاطتها بإطار أحمر. إذا مررت المؤشر فوق أي نص داخل إطار أحمر، فسيصف تلميح الأداة الخطأ.
الألوان في بناء جملة ExpressionScript
يتم تمييز الشروط والمعادلات بالألوان حسب بناء الجملة لتسهيل فهم ما تنظر إليه:
- أخضر / أزرق فاتح: متغير يشير إلى سؤال سابق في الاستبيان
- أزرق: دالة
- رمادي: تعبير نصي
- بني: تعبير TOKEN (بيانات المشارك)
- أسود: عامل تشغيل
أشياء يجب التحقق منها:
- بنفسجي: متغير يشير إلى سؤال لاحق في الاستبيان. يكون هذا عادةً خطأً ويجب التحقق منه.
- أحمر أو إطار أحمر: متغير غير موجود أو إشارة إلى سؤال سابق أو خطأ في بناء الجملة - يحتاج عادةً إلى التحقق.
متغيرات غير معرفة
إذا تم استخدام متغيرات غير معرفة، فسيتم تلوين اسم المتغير المعني باللون الأحمر وإحاطته بخط أحمر. إذا مررت المؤشر فوق اسم المتغير، فسيظهر "متغير غير معرف":


}}
بناء جملة غير صحيح
ترتبط معظم الأخطاء المتعلقة بالتعبيرات ببناء الجملة غير الصحيح. ويرجع ذلك إلى أن مديري الاستبيان غالبًا ما ينسون إضافة قوس معقوف، أو لا يستخدمون الأقواس بشكل صحيح، أو يستخدمون التعبيرات بشكل خاطئ:


فيما يلي أمثلة جيدة كثيرة على استخدام تمييز بناء الجملة.
JavaScript مخصص غير صحيح
سيتم أيضًا تمييز أخطاء JavaScript في التحقق من منطق الاستبيان:

تسريع التحرير والتحقق من الصحة
جميع النصوص المميزة بناء الجملة تحتوي على تلميحات مضمنة، ويمكن النقر عليها:
- التلميحات
- الدوال - عند تمرير المؤشر فوقها يمكنك رؤية الغرض من الدالة وتعريف بناء جملتها؛
- أسماء المتغيرات - عند تمرير المؤشر فوقها يمكنك رؤية الموضع (المجموعة، تسلسل السؤال) ونص السؤال والإجابات المسموح بها للسؤال.
- الإجراءات
- أسماء المتغيرات - يؤدي النقر على اسم المتغير إلى فتح نافذة جديدة تتيح لك تحرير السؤال. وهذا يسهّل التنقل والتحقق من المنطق - ما عليك سوى مواصلة النقر على أسماء المتغيرات في معايير الصلة أو التحقق من الصحة الخاصة بالسؤال لمعرفة مصدرها وكيفية استخدامها.
أمثلة
الأمثلة التالية مأخوذة من استبيانات ExpressionScript النموذجية. يمكنك العثور على لقطات شاشة للاستبيانات قيد التشغيل وشروحات وملفات للتنزيل في تلك الصفحة.
مؤشر كتلة الجسم
فيما يلي لقطات شاشة لهذا المثال.
هذا هو عرض إعادة ترتيب الأسئلة لحساب مؤشر كتلة الجسم. يمكنك رؤية معادلات الصلة الخاصة بالوزن والطول ومؤشر كتلة الجسم ضمن عمود سؤال:

للحصول على نظرة عامة أفضل على الاستبيان، راجع صفحة التحقق من منطق الاستبيان:

يُعد مثال الاستبيان هذا أيضًا مثالًا جيدًا على عبارات if() المتداخلة لإنشاء "weightstatus".

المنطق المتتالي
فيما يلي لقطات شاشة لهذا المثال.
يعرض منطق التحقق من صحة الأسئلة الفرعية الذي يتم إنشاؤه تلقائيًا عند استخدام array_filter وarray_filter_exclude. يوضح هذا المثال أيضًا كيف يمكنك استبدال قيمة "آخر" المخصصة (الإجابة عن Q02_other هي Q01_other).

يعرض Q05 في هذا المثال الاستخدام المتزامن لـ array_filter و array_filter_exclude على Q01 و Q02 على التوالي. يوضح هذا المثال إمكانيات array_filter المتتالية. لاحظ أن أحد الأسباب الرئيسية لعرض معايير التحقق من الصحة على مستوى السؤال والسؤال الفرعي هو المساعدة في التأكد من عدم وجود أخطاء إملائية في تحديد أسماء متغيرات array_filter أو array_filter_exclude (أو في حال استخدمت أسماء متغيرات مختلفة لقائمة الأسئلة الفرعية المصفّاة). إذا وُجدت مثل هذه الأخطاء، فستظهر جميع أسماء المتغيرات غير الصالحة باللون الأحمر للإشارة إلى أنها غير معرّفة، مما يتيح لك إصلاح المشكلة بسرعة.

الصلة الديناميكية
يوضح هذا المثال منطق الصلة المتتالي الديناميكي للتحكم في ظهور الأسئلة. يمكنك تنزيل هذا المثال من هنا.
لاحظ أيضًا أن الأسئلة لا تُعرض إلا إذا تم استيفاء معايير تحقق معينة. على سبيل المثال، إذا ذكر شخص ما أن لديه طفلين، فيجب على المشارك ملء أسئلة معينة (kid1 و kid2).

الصلة على مستوى المجموعة
يوضح هذا المثال كيف تظهر الصلة على مستوى المجموعة في فحص منطق الاستبيان. فيما يلي لقطات شاشة للمثال الموصوف أدناه.
كما ترى، تظهر معادلة الصلة على مستوى المجموعة (cohabs > 1 && p1_rel != "") في الصف الرمادي Person 2 الخاص بالمجموعة G-2.
قد تلاحظ أيضًا أن جميع الأسئلة إلزامية. ومع ذلك، إذا كانت المجموعة غير ذات صلة، فإن جميع أسئلتها كذلك غير ذات صلة. ونتيجة لذلك، لا تكون هذه الأسئلة إلزامية فعليًا إلا إذا كانت المجموعة ذات صلة.
قد تلاحظ أيضًا أن بعض الأسئلة لا تُعرض إلا إذا لم تكن الإجابة عن السؤال السابق فارغة. يمكنك أن ترى أدناه أنه إذا لم يتم ملء p2_sex، فلن يتم عرض p2_name، على الرغم من أنه سؤال إلزامي. كما لن يتم عرض السؤال الإلزامي p2_age إذا لم يتم ملء p2_name. يمكن اعتبار هذه الأسئلة "إلزامية بشروط".
بالإضافة إلى ذلك، لاحظ أن رسائل التلميح يتم إنشاؤها لك تلقائيًا أيضًا. يتم تنظيمها حسب نطاق القيم (الحد الأدنى/الأقصى)، ونطاق مجموع القيم (الحد الأدنى/الأقصى/المساواة)، وعدد الإجابات (الحد الأدنى/الأقصى)، وغير ذلك (حسب نوع السؤال المستخدم والخصائص النشطة). في بعض الأحيان تريد التحقق من نطاق إجابة معين دون عرض تلميحات تحقق قد تبدو سخيفة للمستخدم. في مثل هذه الحالات، يمكنك استخدام خيار السؤال hide_tip (كما في هذه الحالة، لتجنب إخبار المستخدم بأن العمر يجب أن يكون بين 0 و115 ما لم يحاول إدخال قيمة غير صالحة - انظر p2_age).

الفاصلة كفاصل عشري
على الرغم من أن LimeSurvey يدعم بالكامل استخدام الفاصلة كفاصل عشري أثناء وقت التشغيل، يجب عليك مع ذلك استخدام النقطة كفاصل عشري أثناء وقت التصميم (مثلًا عند تحديد القيم الدنيا/القصوى في خصائص السؤال المتقدمة). يمكنك العثور على المثال العملي هنا.
تذكر أيضًا أن منطق التحقق من الصحة يتم إنشاؤه لك تلقائيًا من خصائص السؤال المفعّلة. قد تبدو المعادلات معقدة، لكن لا داعي للقلق بشأنها.

