2015-06-25 2 views
0

Я проверяю свой текстовый ящик, который содержит только цифры, а также может быть пустым или пустым. Но когда я оставлю его пустым или введите любой номер, он всегда отображает сообщение об ошибке «Только для годовых номеров». .my кодкод проверки не работает в php

<?php 
include "config.php"; 
function is_valid_fname($postg_year) 
{ 
if (!preg_match ("/^[0-9\s]+$/",$postg_year)) { 
    ?> 
    <center><strong><font color="red">Passing Year Only Contain Numbers.</font></strong></center> 
    <?php 
    return false; 
} 
} 
if (isset($_POST['submit'])) { 
$postg_year=$_POST['postg_year']; 
if(is_valid_fname($postg_year)) 
{ 
//my code 
} 
<form method="post"> 
<input type="text" name="postg_year" class="small_text" width="60"> 
<input type="submit" name="submit" value="submit"> 
</form> 
} 
+0

для пустой проверки if! empty ($ postg_year) –

+1

В вашей форме нет кнопки отправки ... Но вы проверяете isset ($ _ POST ['submit']), это может вызвать проблемы ... –

+0

@ Gnanadurai A имеет кнопку отправки

ответ

2

, если я правильно понимаю ... изменить это:

if (!preg_match ("/^[0-9\s]+$/",$postg_year)) { 

в этом:

if (!preg_match ("/^[0-9\s]*$/",$postg_year)) { 

разница в том, что для «+» требуется хотя бы один символ, а «*» принимает даже 0 символов.

+0

спасибо BorissOliSiin ... –

0

Попробуйте использовать

(is_numeric($postg_year)

или

strlen($postg_year) == 0)

1

Попробуйте

function is_valid_fname($postg_year) 
{ 
    if (!preg_match ("/^[0-9\s]*$/",$postg_year)) 
    { 
     return '<center><strong><font color="red">Passing Year Only Contain Numbers.</font></strong></center>'; 
    } 
    else 
     return false; 
} 
1

ваша форма должна иметь кнопку отправки с го е имя атрибута, вы проверяете его в PHP, если он установлен, но в форме вы не дали ему любое имя, так is_valid_fname() никогда не будет вызываться в PHP, используйте следующий код:

<input type="submit" name = "submit" value="submit"> 
0

разница в том, что «+» требует, по меньшей мере, один символ, а «звезда ()» принимает даже 0 characters.so вы должны заменить «+» вместо «звезды ()». как,

if (!preg_match ("/^[0-9\s]*$/",$postg_year)) { 
Смежные вопросы