2015-01-24 2 views
-1

Во-первых, это не лучший способ написать общий код, но я пытаюсь использовать инструкции switch, поэтому я использую те же формы и сообщения об ошибках, чтобы практиковать различные функции и заявления php и т. Д.Оператор переключения PHP - ошибка эха

В этом конкретном случае номер дела (случай 1, случай 2, случай 3 и т. Д.) Включен в мое эхо-заявление, и я не уверен, почему

Итак, в приведенном примере, в форме под именем пользователя I введите букву C и ожидайте, что ошибка будет просто выводиться как «Имя пользователя должно быть не менее 6 символов», но то, что на самом деле выходит, равно «Имя пользователя должно быть не менее 6 символов2»

Я попытался поместить значение числа для начальной переменной в начале с помощью различных операторов if в «", и то же самое, когда я получаю инструкции оператора case в случае, если он должен был читать как текст, но это не не имеет значения

Любая помощь по этому вопросу будет оценена по достоинству. Скорее всего, что-то очень простое. пс пожалуйста, не смейтесь над моим кодом .... слишком много

`

<?php 
##### Form Handling #### 
if ($_SERVER[ 'REQUEST_METHOD'] == 'POST') 

### Error Handling ### 

// define variables and set to empty values 
$userErr = $firstnameErr = $surnameErr = $emailErr = ""; 
$user = $firstname = $surname = $email = ""; 


if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    if (empty($_POST["user"])) 
    { 
    $userErr = 1; 
    } 
    else 
    { 
    $user = $_POST["user"]; 
    if (strlen($user) < 6) { 
     $userErr = 2; 
    } 
    if(strlen(trim($username)) != strlen($username)) { 
     $userErr = 3; 
    } 
    } 

    if (empty($_POST["firstname"])) { 
    $firstnameErr = "First name is required"; 
    } else { 
    $firstname = $_POST["firstname"]; 
    if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) 
     {$firstnameErr = "Only letters and white space allowed"; } 
    } 

    if (empty($_POST["surname"])) { 
    $surnameErr = "Surname is required"; 
    } else { 
    $surname = $_POST["surname"]; 
    if (!preg_match("/^[a-zA-Z ]*$/",$surname)) 
     {$surnameErr = "Only letters and white space allowed"; } 
    } 

    if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
    } else { 
    $email = $_POST["email"]; 
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) 
     { $emailErr = "Invalid email format"; } 
    } 
} 
?> 

<form action="form_register.php" method="POST"> 
<p>Username: 
<input type="text" name="user" value="<?php echo $user;?>"> 
<?php 
switch($userErr) 
    { 
    case 1: 
     echo "Username is required"; 
     break; 
    case 2: 
     echo "Username must be a minimum of 6 characters"; 
     break; 
    case 3: 
     echo "Must not contain any spaces"; 
     break; 
    default: 
     echo "*"; 
     break; 
    } 
echo $userErr;?> </p> 



<p>First Name: 
<input type="text" name="firstname" value="<?php if (isset ($_POST['firstname'])) 
    echo $_POST['firstname'] ; ?>"> </p> 
<p>Surname: 
<input type="text" name="surname" value="<?php if (isset ($_POST['surname'])) 
    echo $_POST['surname'] ; ?>"> </p> 
<p>Email Address: 
<input type="text" name="email" value="<?php if (isset ($_POST['email'])) 
    echo $_POST['email'] ; ?>"> </p> 
<p><input type="submit"></p> 
</form> 

`

ответ

1

Непосредственно после случая блока, вы выводите сам номер:

echo $userErr;?> 

Удалите это echo, и он должен работать нормально.

+0

Спасибо, я думал, что мне нужен оператор эха для вывода инструкции ошибки. Это действительно исправило это –

Смежные вопросы