2012-02-27 132 views
1

我試圖找出如何檢查,如果在文本框中輸入的值 數據庫現有的或沒有儘快進入,或在使用CakePHP和JavaScript的標籤事件。我是新人,請有人幫忙嗎? 謝謝,蛋糕PHP數據庫查詢

+1

這是你想要做什麼? http://bakery.cakephp.org/articles/instatutorial/2011/08/14/check_username_availability_in_cakephp_using_jquery – blueberryfields 2012-02-27 03:35:14

+0

Yaa是這樣的。我想要的是,當我在文本框中輸入文本時,應該使用數據庫中特定列的值檢查輸入的文本,並且如果該值存在,則只是回顯該值存在。 你提供的鏈接似乎很有用,讓我試試它,並會告訴你它是否有效。 謝謝, – 2012-02-27 03:45:41

回答

1

創建的領域獨特的驗證。它會在保存之前檢查該字段的值。如果存在,它會告訴用戶該值已經存在。

+0

這就是我不希望它是唯一的。所以,即使值存在,用戶也應該能夠添加內容,但應該通知該值存在。 – 2012-02-27 16:58:20

+0

我不明白。如果該值已經存在,並且您警告用戶,會發生什麼情況。他們仍然可以再次添加該值嗎? – 2012-02-28 02:34:35

+0

是的,他們應該能夠添加。即使價值存在。只是它會告訴他們價值已經存在。 – 2012-02-28 05:01:03

0

假設: 表:帖子 型號:帖子 控制器:帖子 和領域有關,你需要前生的通知是POST_TITLE

現在做這樣的事情

鑑於:

設置post_title的文本字段的ID爲PostPostTitle

$('#PostPostTitle').bind({ 
    blur:function(){ 
     var newTitle = $(this).val(); 
     if(newTitle){ 
      $.ajax({ 
       url:'Posts/checkTitle/', 
       type:'POST', 
       data:{title:newValue}, 
       dataType:'JSON', 
       success:function(data){ 
        if(data.ok==1){ 
         //dont show any error and let the user submit 
        }else { 
         //show error notification in desired format 
        } 
       } 
      }) 
     } 
    } 
}); 
在您的控制器

現在做與名字checkTitle動作

控制器代碼會是這樣

public function checkTitle(){ 
    //fetch the vlaue of title from appropriate key of the controller class 
    //variable $this->params (in cake v<2) or from $this->reuest (cake v2.x+) 
    $this->layout = 'ajax';//or json or null what ever you prefer 
    $this->autoRender = false; 
    //assumig that you have fetched value of newTitle in $newTitle from requestVar 
    //make a database query to post table 
    $response = array('ok'=>0); 
    $data = $this->Post->find('count',array('conditions'=>array('post_title'=>$newTitle))); 
    if($data==0) { 
     $response['ok']=1; 
    } 
    echo json_encode($response); 
    exit; 


}