2012-05-31 3 views
0

양식 유효성 확인을위한 양식 유효성 검사 라이브러리를 사용하려고합니다. 문제가 생겨 도움이 필요해. 1. 사용자가 제출할 양식을 채운다 고 가정하십시오.
2. 유효성 검사 라이브러리는 db 테이블에서 중복을 찾고 필드에 대한 오류 메시지를 설정합니다.
3. 양식이 메시지와 함께 표시됩니다.
이 방법에서 내가 다시 무승부를 참조하십시오. 테이블에 unique로 설정된 5 개의 필드가 있다고 가정 해 보겠습니다. 따라서 유효성 검사는 고유 한 필드를 찾기 위해 쿼리를 5 회 실행합니다.코드 유효성 검사기에서 mysql 오류로 양식 유효성 확인

기타 방법 사용자가 삽입하여 db에 오류가 발생하게하는 것입니다. 여기에 callback_find_duplicate 함수가 폼 유효성 검사 라이브러리에서 호출되지 않습니다. 양식이 채워집니다. 이 방법에서는 중복되는 필드를 찾기가 어렵 기 때문에이 필드에 대한 설정 오류 메시지는 번거로울 수 있습니다. 최악의 상황은이 사용자가 중복 된 이름을 입력하는 것입니다. 양식이 채워진 다음 전자 메일로 채워집니다. 그런 다음 다른 사람들과 계속됩니다.
필자는 방법이 있는지 알아야하거나 모든 필드에 대해 중복 된 항목을 모두 찾을 수있는 쿼리를 작성할 수 있습니다. callback_find_duplicate를 5 번 호출하여 모든 필드에 대한 오류 메시지를 설정하십시오. 왜냐하면 나는 하나의 쿼리를 호출하면 실행 시간이 짧아 질 것이라고 생각하기 때문이다.

+0

우리는 양식, 검증 및 삽입 코드를 볼 수 있습니까? –

답변

1

form_validation이 훌륭하고 모든 경우에도 다른 해결책을 선호하는 경우가 있습니다.

이 추가 :

라이브러리/My_Form_validation.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_Form_validation extends CI_Form_validation { 

    /* Custom function to create errors manually 
    * */ 
    function create_error($str_field, $str_message) { 

     $str_message = t($str_message, $str_line); 

     $this->_field_data[$str_field] = 
     array('error' => $str_message, 
       'is_array' => FALSE, 
       'postdata' => $this->CI->input->post($str_field), 
       'rules' => '', 
       'field' => $str_field); 

     $this->_error_array[$str_field] = $str_message; 

    } 

} 

그리고 당신이 ->run() 전에 컨트롤러에서 수동으로 실행할 수 있습니다.

는 수도 같이 쿼리를 가져 오기,이 같은 각각의 경우에 대한 경우가 있습니다

$arr_uniques = array('email', 'name', 'snn'); // whatev 
foreach($arr_uniques as $h) 
    if ($row->$h == $this->input->post($h)) 
     $this->form_validation->create_error($h, "{$h} is not unique!"); 
+0

잘 codeigniter의 유효성 검사 라이브러리를 확장하고 form_validation-> run() 성공에 내 함수를 호출하여 동일한 솔루션을 만들었습니다; –

0

데이터베이스에 대한 5 번의 호출은 그리 많지 않습니다. 첫 번째 방법은 CodeIgniter가 완벽하게 처리 할 수있는 작업을 복잡하게 만드는 대신 코드를 작성하는 것입니다.