2013-01-24 58 views
1

好吧我在PHP中相當新,我試圖做一個聯繫表單。有一些我需要成爲某些角色的領域。strlen()邏輯和比較運算符不工作

if (!empty($_POST['title'])) { 
    $title = $_POST['title']; 
    } 
    elseif (strlen($title)>=1||strlen($title)<6)||strlen($title)>50 { 
     $error .= "Length of your Subject must be more than 6 characters. <br />"; 
    } 
else { 
    $error .= "Please enter the Subject. <br />"; 
} 

$ error存儲填寫表單時出現的所有錯誤。最後,表單檢查,如果沒有發現錯誤,則消息成功發送。

我想要什麼? 如果字符串長度小於3但大於或等於1,我想要顯示在elseif語句中聲明的錯誤。如果長度大於50個字符,也應顯示錯誤。

如果該字段爲空,則應顯示else語句中提供的最後一個錯誤。

發生了什麼事? 每當我將該字段保留爲空時,它將顯示第一個錯誤而不是第二個錯誤。如果我在字段中只輸入1個字符,則不會顯示錯誤。

我在抱我的頭,我做了很多試驗和錯誤,但似乎沒有任何工作。 如果有人可以轉發,這將是一個巨大的幫助。這是我在PHP中的第一個項目,僅僅是因爲我的一些讀者想要它,而且我還沒有完全學過這門語言。

回答

2

看你搞亂了,如果else語句..... 嘗試這種方式,

if (!empty($_POST['title'])) 
{ 
    $title = $_POST['title']; 

    if (strlen($title)>=1 && strlen($title)<6)||strlen($title)>50) 
    { 
     $error .= "Length of your Subject must be more than 6 characters. <br />"; 
    } 
} 

else 
{ 
$error .= "Please enter the Subject. <br />"; 
} 
+1

這是我的回答的正確詳細版本 –

+0

是的,他使用了其他 - 如果,但要檢查$ title中存在的數據,他必須在他的第一個if語句中成功,這就是爲什麼執行出錯 –

+0

是的一點點改變你的strlen比較,因爲丹提到你也必須改變... –

0

只有當字符串爲空時纔會進入else。

1

您的條件是(strlen($title)>=1||strlen($title)<6)始終爲真,因爲標題的長度是> = 1或<(或兩者)。您可能想使用&&而不是||

+1

以及如何做一個非空字符串到,如果 –

+0

這是有關該問題的一半:當標題是空的,爲什麼打印錯誤? –

+1

@Peter Wooster不會被不正確的縮進所迷惑,'$ title'在那個'elseif'中是不確定的,條件總是計算爲'true'。 OP應該使用'$ _POST'而不是'$ title',然而它使得它可以工作...... – jeroen

0

爲什麼顯示同樣的錯誤,如果長度爲1個6個字符,超過50個字符之間?你的if語句也是錯誤的。如果它是空的,你將使用elseif,你正在使用$title,但目前還沒有定義變量$title

if(!empty($_POST['title'])) { 
    $title = $_POST['title']; 

    if(strlen($title) >= 1 && strlen($title) < 6) { 
     $error .= "Length of your Subject must be more than 6 characters. <br />"; 
    } elseif(strlen($title)>50) { 
     $error .= "Length of your Subject must be no more than 50 characters. <br />"; 
    } else { 
     // Length is between 6 and 50 characters, i.e. it is valid. 
    } 
} else { 
    $error .= "Please enter the Subject. <br />"; 
} 
0

就像Dan Berindei說的那樣,你使用一個或者當你應該使用一個或者用來檢查$ title是不是空的。事實上,由於您已經確認它不是空字符串,因此您不需要檢查它是否至少有一個字符。

這裏是東西乾淨了一點:

if (!empty($_POST['title'])) { 
    $title = $_POST['title']; 

    if (strlen($title)<6)||strlen($title)>50) { 
     $error .= "Length of your Subject must be between than 6 and 50 characters. <br />"; 
    } 
}else { 
    $error .= "Please enter the Subject. <br />"; 
}