2014-05-05 4 views
0

У меня есть простой текстовый ящик в HTML, который принимает только целые числа, они должны быть ТОЧНО 6 символов. Если эти условия не совпадают, должны быть соответствующие сообщения, предоставленные пользователю, и значение не должно быть $ _POST'ed.Echo не работает в PHP for! Is_numeric

$idLength = strlen($_POST['customerid']); 

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
if(empty($_POST['customerid'])) 
    { 
     $idErr = " *Enter ID"; 
    } 
else if(($idLength > 0) && ($idLength < 6)) 
     { 
     {$idnErr = " ID must be exactly 6 Digits";} 
     if((!is_numeric($_POST['customerid']))) 
     {$idnumErr = " ID must only be numerical values";} 
     } 

else if ((is_numeric($_POST['customerid']))&&($idLength = 6)) 
    { 
     $id = $_POST['customerid']; 
    } 
echo "$id"; 

Так что с этим кодом, я проверить, если поле ввода пусто, если она есть, она отображает «* Введите идентификатор» рядом с полем. Я проверяю, превышает ли значение значение 0 и меньше 6 (maxlength = 6 в html), если это так, он говорит: «Идентификатор должен быть ровно 6 цифр». Я также проверяю, являются ли символы цифрами, если они arent, он показывает, что «ID должен быть только числовым значением».

Если пользователь вводит идентификатор vaild, только тогда идентификатор хранится в переменной. Например: - 123456. Все это работает нормально.

Моя проблема возникает, когда я ввожу ровно 6 символов, которые arent должен был принять, например, 12345a или ABCDE3. Код не хранит их в $ id, но он не показывает сообщение об ошибке, подобное его предназначению, мне было интересно, что я делаю неправильно.

Я также хочу сохранить ввод пользователем в текстовом поле, если они вводят его неправильно. Например. если пользователь вводит «1234g» в идентификатор клиента и нажимает «Отправить», я хочу, чтобы он был там в текстовом поле, когда страница обновляется с ошибками.

+0

у вас есть неопределенную переменную в коде – Daan

+0

@Daan Вы держать это в тайне и не говорит нам? ;) –

+0

какая переменная не определена? @Daan – roro

ответ

4

За здесь:

($idLength = 6) 

Вы назначая значение 6 переменной. Вы должны делать:

($idLength == 6) 

== является comparison operator и проверяет, является ли это это равно 6.

+0

Я пробовал это раньше, вот что я думал, что это было до этого, но это не проблема. Я просто попробовал еще раз, и это не вызвало ошибок. – roro

+0

@roro Держись, я создам демо, чтобы было ясно. –

+0

@roro Итак, вы, похоже, не имеете последнего 'else' для случая, когда' length> 6', но не числового, и я удалил избыточное 'is_numeric().' Посмотрите на это ** [code.] (Https : //eval.in/146465) ** –

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