मैं PHP मान में नकारात्मक मान, संख्यात्मक और गैर-संख्यात्मक और खाली मानों को मान्य करने पर काम कर रहा हूं।

यदि कोई मान नकारात्मक, खाली, गैर-संख्यात्मक है तो मुझे त्रुटि संदेश प्रदर्शित करने के लिए PHP की आवश्यकता है।

मुझे अपने HTML फॉर्म से $_POST में मान नहीं मिलने से भी समस्या हो रही है।

$first = $_POST['first'];
$second = $_POST['second'];
$operation = $_POST['operation'];

और मेरे रूप में मेरे पास नकारात्मक मानों के लिए प्रत्येक मान के नाम सही ढंग से लिखे गए हैं

if ($first || $second < 0) {
    print("<h2> Error one or more inputs are not negative numbers</h2>");
     echo("<a href="calculator.html"></a>");
}

mapcar berarti hanya menampilkan bagian string yang cocok - bukan seluruh baris yang memuatnya.

if (empty($first) || empty($second) == true) {
    print("<p> One or more input field is empty </p>");
    echo("<a href="calculator.html"></a>");
}

और ऐसे मान के लिए जो संख्यात्मक नहीं है:

if (!is_numeric($first) || !is_numeric($second) == false) {
    print("<h2> Error one or more inputs are not numbers</h2>");
    echo("<a href="calculator.html"></a>");
}

मेरी समस्या यह है कि जब भी कोई संख्या दर्ज की जाती है तो मुझे त्रुटि संदेश मिलते हैं यदि वह true या false है।

-1
irvdtcc 17 नवम्बर 2019, 00:14

1 उत्तर

सबसे बढ़िया उत्तर

सबसे पहले, इस स्थिति को बदलें, क्योंकि PHP इसे ($first || $second) <0 के रूप में समझेगा, जहां $first || $second का मूल्यांकन एकल बूलियन स्टेटमेंट के रूप में किया जाएगा, और लौटाए गए बूलियन मान की तुलना में int (true -> 1, false - > 0) और <0 के साथ चेक किया गया है, और यह हमेशा गलत होगा, इसलिए कोड को इसमें बदला जाना चाहिए:

if ($first<0 or $second < 0)
{
   print("<h2> Error one or more inputs are not negative numbers</h2>");
   echo("<a href="calculator.html"></a>");
}

इसके बजाय इस ब्लॉक में, == true बेकार है, क्योंकि if this or that php में मतलब है "पहले मान की जांच करें और बूलियन के लिए उचित कास्ट के साथ देखें, सही है या गलत है, और or इस दो मान के बीच", और इस मामले में "यह" और "वह" पहले से ही बूलियन मान हैं, इसलिए यह पूरी तरह से बेकार है, लेकिन यदि आप इसे स्पष्ट करना चाहते हैं, तो कोड empty($first) == true or empty($second) == true जैसा दिखना चाहिए अन्यथा आप खोज रहे हैं दो में से केवल एक, या बेहतर इसे बाहर निकालें और इसलिए कोड ऐसा दिखना चाहिए

if (empty($first) or empty($second))
{
   print("<p> One or more input field is empty </p>");
   echo("<a href="calculator.html"></a>");
}

और कोड के अंतिम ब्लॉक में, तर्क गलत है, क्योंकि आप यह जांचना चाहते हैं कि क्या दो में से एक मान संख्यात्मक नहीं है, इसलिए !is_numeric($value) यदि मान सांख्यिक नहीं है, तो सत्य वापस आ जाएगा, और यदि यह संख्यात्मक था तो गलत है। , तो यह कोड को बदल दिया जाना चाहिए

if (!is_numeric($first) or !is_numeric($second))
{
 print("<h2> Error one or more inputs are not numbers</h2>");
 echo("<a href="calculator.html"></a>");
}

साथ ही, मेरी राय में, मैं आपको or के बजाय || का उपयोग करने का सुझाव दूंगा। और && के बजाय and, क्योंकि अधिकांश अन्य भाषाएं उस ऑपरेटर का उपयोग करती हैं, और इसलिए एक बार सीखने के बाद, आप सभी भाषाओं के साथ ठीक हैं

अनुरोध से डेटा प्राप्त करने में सक्षम नहीं होने के बारे में, कृपया उत्तर फ़ॉर्म में पोस्ट करें और मैं इस उत्तर को संभावित समाधान के साथ संपादित करूंगा

0
Berto99 17 नवम्बर 2019, 00:35