2017-04-17 90 views
3

我嘗試了以下操作來確保輸入值在0100之間,但它不起作用。使用php if語句來驗證輸入值介於0和100之間

if (($_POST['rate']) >= '0' || =<'100') { 
     $rate = $_POST['rate'] 
    } 
    esle { 
     echo '<p>Please enter a value between 0 and 100</p>'; 
    } 
+1

爲了將來的參考,*「沒有工作」*不是一個很好的問題描述。下一次,包括您正在獲取的確切錯誤(或者根據問題的類型顯示預期與實際產出/結果的示例)。 – domsson

+0

我將這段內容添加到了我的收藏夾中,我剛剛意識到在課堂上爲初學者的考試或討論提供了哪些優秀的材料:讓學生嘗試找到這一行中的錯誤。如果我嘗試過,我不可能想出一個更好的例子。 (不要試圖粗魯,這本身就很有用) – domsson

+0

嘿,阿里,我剛剛意識到你從未選擇任何接受的答案。請這樣做,以便在堆棧溢出時將問題標記爲已解決。 – domsson

回答

5

問題1:string VS int

目前,你是比較字符串,而不是數字。投下你$_POST變量int並刪除周圍0撇號和100解決這個問題:

$rate = (int) $_POST['rate']; 
if ($rate >= 0 || =< 100) { /* ... */ } 

問題2:缺少的東西

然而,這仍然不會產生預期的結果爲第二次比較您缺少$rate。將其更改爲:

$rate = (int) $_POST['rate']; 
if ($rate >= 0 || $rate =< 100) { /* ... */ } 

問題3:or VS and

我們仍然不存在。目前,您正在使用|| (or)。您需要使用&& (and)代替:

$rate = (int) $_POST['rate']; 
if ($rate >= 0 && $rate =< 100) { /* ... */ } 

問題4:=< VS <=

還沒去上班。你的一個comparison operators是錯誤的方式。 =<<=代替:

$rate = (int) $_POST['rate']; 
if ($rate >= 0 && $rate <= 100) { /* ... */ } 

問題5:用戶輸入

$_POST保持數據從用戶的到來。不要信任用戶數據。什麼,例如,如果沒有rate元素?在這種情況下,PHP會拋出類型爲E_NOTICE的錯誤(如果您沒有將報告設置爲E_ALL,您甚至可能不會看到該錯誤),並且一旦轉換爲int,則評估爲0!因此,你的測試會通過,這可能不是你想要的。爲了防止這種情況,使用isset()

$rate = isset($_POST['rate']) ? (int) $_POST['rate'] : -1; 
if ($rate >= 0 && $rate <= 100) { /* ... */ } 

問題6:什麼esle

正如Pedro Lobito指出的那樣,你設法還引入了一個錯字:esle應該是else

問題7:分號

正如Gert指出,您的線路$rate = $_POST['rate']缺少;底。

摘要

我的意思並不是要粗魯,但看到你管理犯了多少錯誤擠入這個簡單if,我得到你應該諮詢一些基本的PHP教程,而不是堆棧的感覺此時溢出。

+2

爲了完整性,我會提高你的答案。 –

0

格式,像這樣以

$temprate=$_POST['rate']; 
      if(($temprate >= '0') && ($temprate <= '100')){ 
      //you forgot the semi colon here by the way 
      $rate = $temprate; 
      } 
      esle{ 
      echo '<p>Please enter a value between 0 and 100</p>'; 
      } 
1

幾個問題數之間檢查你的代碼,

1 -這是一個string'100',這是一個integer100,你不能籤如果一個數字比一個字符串大,或者至少沒有意義。
2 -comparasion operator的正確的語法是:>==>
3 -您在esle一個錯字,應該是else


基於上述,你需要類似:

if(isset($_POST['rate'])) 
{ 
    $rate = $_POST['rate']; 
    if($rate >= 0 and $rate <= 100) 
    { 
     echo "rate is between 0 and 100"; 
    } 
} 

注:

你可能想了解phpLogical Operatorsandor,等..)

+0

與'esle'搭配很好,我錯過了!然而,'empty()'可能不是一個好主意,因爲'0'和'0'都被認爲是空的 - 但是OP想要允許它們。 – domsson

+0

@dom,你說得對,我會將它改爲'isset',tks指出。 –

0

爲了測試數字是0和100之間,試試這個,

if($_POST['rate'] >= 0 && $_POST['rate'] <= 100) 
+2

如果沒有設置$ _POST ['rate']',會發生什麼? –