Проверка на валидность

Aidar

Guest
Проверка на валидность

Есть функция правильности заполнения полей. Сначала выполняется подключение к базе. Эта функция работает и опробована ранее.
PHP:
db_connect( "kampi_db" );
global $_POST;
Потом идет проверка заполнены ли все поля, если нет, то выводится ошибка (сначала все ошибки записываются в массив).
PHP:
      if( empty( $_POST['code'] ) || empty( $_POST['specname'] ) ) { $Errors[] = 'Не заполнены все поля.'; }
Если поля не пустые, то проверяется, что введено и если оно не соответствует требуемым данным, то опять же выводится ошибка.
PHP:
      if(!empty( $_POST['code'] ) || !empty( $_POST['specname'] ) ) {
	if( !ereg( "^[а-яА-Я ]{25,255}$" , $_POST['specname'] ) ) { $Errors[] = 'Вы использовали недопустимые символы или ввели слишком короткое название.'; }        
	if( !ereg( "^[1-5]{2}[0-9]{2}$" , $_POST['code'] ) ) {
          $Errors[] = 'Вы использовали недопустимые символы или ввели слишком короткий код.';
Далее идет проверка, существует ли данная запись в базе. У каждой записи свой уникальный код (Code), который вводит пользователь, по нему и проверяем.
PHP:
        } else {
          $result = mysql_query("select '*' from 'speciality' where 'Code' like '$_POST[code]'");
          if( mysql_num_rows( $result ) == 1 ) {
          $Errors[] = 'Такая запись в базе уже есть!'; }
        }
      }
В конце приведу полный код:
PHP:
db_connect( "kampi_db" );
global $_POST;
if( empty( $_POST['code'] ) || empty( $_POST['specname'] ) ) { $Errors[] = 'Не заполнены все поля.'; }
      if(!empty( $_POST['code'] ) || !empty( $_POST['specname'] ) ) {
	if( !ereg( "^[а-яА-Я ]{25,255}$" , $_POST['specname'] ) ) { $Errors[] = 'Вы использовали недопустимые символы или ввели слишком короткое название.'; }        
	if( !ereg( "^[1-5]{2}[0-9]{2}$" , $_POST['code'] ) ) {
          $Errors[] = 'Вы использовали недопустимые символы или ввели слишком короткий код.';
        } else {
          $result = mysql_query("select 'Code' from 'speciality' where 'Code' like '$_POST[code]'");
          if( mysql_num_rows( $result ) == 1 ) { $Errors[] = 'Такая запись в базе уже есть!'; }
        }
      }
Так вот у меня выскакивает ошибка:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\work\www\kernel.php on line 230
И запись не пройдя последнюю проверку на совпадение добавляется в базу!

Вот таблица MySQL:
Id smallint(6) Нет
Code smallint(4) Нет
Specname varchar(255) Нет

Как исправить ошибку?
 

fixxxer

К.О.
Партнер клуба
1)имена полей и таблиц в запросе надо писать не в кавычках.
select code from speciality where code...
2) накойхрен тебе like?
3) достаточно было привести строки 229-230, в которых у тебя и ошибка. все твое говно, которое сверху, никого не интересует.
4) в следующий раз пиши echo mysql_error() и ищи ошибку сам.
 

SelenIT

IT-лунатик :)
5) $_POST не надо объявлять global-ом - он уже глобальный (в отличие от $HTTP_POST_VARS).
 
Сверху