1

私はPHPにかなり慣れていないので、お問い合わせフォームを作成しようとしています。特定の文字である必要があるフィールドがいくつかあります。

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ステートメントで提供された最後のエラーが表示されます。

何が起こっていますか? フィールドを空のままにしておくと、2番目ではなく最初のエラーが表示されます。また、フィールドに1文字だけ入力しても、エラーは表示されません。

頭を抱えて、試行錯誤を繰り返しましたが、何もうまくいかないようです。誰かが転送できれば、それは大きな助けになります。これは、私の読者の何人かがそれを望んでいて、私が言語を完全に学んでいないという理由だけで、PHPでの私の最初のプロジェクトです。

4

5 に答える 5

2

ifelseステートメントがごちゃ混ぜになっているように見えます.....この方法で試してください、

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 />";
}
于 2013-01-24T13:12:05.140 に答える
1

(strlen($title)>=1||strlen($title)<6)タイトルの長さが1以上または6未満(あるいはその両方)であるため、条件は常に真です。&&おそらくの代わりに使用したかったでしょう||

于 2013-01-24T13:10:43.610 に答える
0

文字列が空の場合にのみ、elseに入ります。

于 2013-01-24T13:10:33.797 に答える
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 />";
}
于 2013-01-24T13:15:37.187 に答える
0

Dan Berindeiが言ったように、$ titleが空でないかどうかを確認するために、andを使用する必要があるときにまたはを使用します。実際には、空の文字列ではないことをすでに確認しているので、少なくとも1文字であることを確認する必要はありません。

これが少しきれいなものです:

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 />";
}
于 2013-01-24T13:16:02.340 に答える