البرمجة

حل مشكلة تحقق قيم PHP من القيم الفارغة

عندما تقوم بالتحقق من قيمة المدة (durationHH و durationMM) في الشرط الأول من العبارة الشرطية if، يجب أن تكون القيمتين أصغر من أو تساوي صفر. إذا كان أحدهما يساوي صفر والآخر فارغ، فإن الشرط الذي يتحقق هو شرط القيمتين فارغتين. وهذا يفسر لماذا تحصل على النتيجة “DurationHH and DurationMM can not be empty.” في هذه الحالتين.

لحل هذه المشكلة، يمكنك استخدام دالة isset للتحقق من وجود القيم في المتغيرات قبل التحقق من قيمها. يمكنك تعديل الشرط الأول ليصبح كالتالي:

php
if ((!isset($durationHH) || $durationHH <= 0) && (!isset($durationMM) || $durationMM <= 0)) { echo "DurationHH and DurationMM can not be both zero at the same time."; echo "
"
; echo "DurationHH and DurationMM can not be smaller than 0."; } elseif (empty($durationHH) || empty($durationMM)) { echo "DurationHH and DurationMM can not be empty."; echo "
"
; } else { echo $_POST["durationMM"]; echo ":"; echo $_POST["durationHH"]; }

بهذه الطريقة، ستتأكد من وجود القيم في المتغيرات durationHH و durationMM قبل التحقق من قيمتها، وبالتالي لن يتم اعتبارهما فارغتين في الحالات التي تحدث فيها المشكلة.

المزيد من المعلومات

عندما تستخدم الدالة empty() في PHP، فإنها تعتبر المتغير فارغًا إذا كانت قيمته false، أو إذا كانت القيمة تعتبر فارغة من وجهة نظر الدالة، مثل القيم 0 أو "" أو null أو فارغة بالكامل. في حالتك، عندما يكون durationMM أو durationHH يساوي 0، يعتبرهما الدالة empty() فارغين.

بالنسبة للحالات التي تحدث فيها المشكلة، يعتبر PHP القيمة 0 فارغة بواسطة الدالة empty()، وهذا هو السبب في الحصول على رسالة “DurationHH and DurationMM can not be empty.” عندما تكون إحدى القيم تساوي 0 والأخرى غير فارغة.

لحل هذه المشكلة، يمكنك استخدام الدالة isset() للتحقق من وجود القيم قبل التحقق من قيمتها، كما هو موضح في الكود الذي قمت بتعديله في الرد السابق.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر