2012-01-10 14 views
0

私の問題を解決する方法を教えてもらえますか?他のフィールドの後にデータベース情報をテキストボックスに入力する方法lostfocus

私は4つのテキストボックスフィールド:number,key,firstnameおよびnameを持っています。

私はそれを記入した後に番号フィールドから表を作成するとき、私はこの番号が存在するかどうか私のデータベースをチェックインしたいと思います。

もしそうなら、私のアプリケーションは、(私のデータベース内の)番号にリンクされた名前とファーストネームを選択し、他のフィールド名とファーストネームを記入し、これらのフィールドを無効にする必要があります。

私はajaxを使うべきだと思うが、私はそれを達成するためにajaxとZendの使い方を知らない。

私はウェブを検索しましたが、私は理解していないチュートリアルを見つけました。

私はそれを行うためにステップバイステップを与えることができますか?

おかげ

+0

ページを表示するときにフォームに入力しますか?あなたの現在のコードで質問してください。私たちはあなたを助けることができます。 –

答えて

1

ただ、一般的なブラシストローク:

  1. Zend_Formを使用して標準的な方法であなたのフォームを生成します。
  2. (jQueryなどを使用して)クライアント側で、numberフィールドにonchangeハンドラを追加します。
  3. onchangeハンドラは、dbルックアップを実行するcheckNumberExistsAction()のようなアクションにAJAX呼び出しを行います。チェック結果を含むJSON形式の情報を返します。
  4. AJAXコールの成功関数は、戻り値をチェックし、他の要素を設定し、無効にします。

覚えておくべきこと:無効にされたフィールドの送信を防ぐためにこのクライアント側の処理のみに依存しないでください。ユーザーはクライアント側でスクリプトを無効にすることができるため、サーバー側での検証も適切に行う必要があります。私は完全なアプローチを@デビッドすると、このスケルトンコードと同じ、ポストを記念することに同意するものとし

0

sampleview.phtml

echo '<div id="a">'.$this->form.'</div>'; 

<?php $this->jQuery()->onLoadCaptureStart(); ?> 
jQuery('#category').change(checkNumberExistsAction); 
<?php $this->jQuery()->onLoadCaptureEnd(); ?> 


<script type="text/javascript"> 
    function checkNumberExistsAction(){   
    var p = $("#idOfNumberField").val(); 
    var response = $.ajax({ 
     url: "<?php echo $this->url(array('controller'=>'index', 
'action'=>'sampleview')) ?>", 
     type: "GET",  
     data: {number: p}, //where number is number columnName in database 
     cache: false, 
     success: function(text){ 
      response = text; 
      $("#name").val($(text).find("input[name='name']").val()); //where name is id of name field 
      $("#name").attr("disabled", "disabled"); 
      $("#firstName").val($(text).find("input[name='firstName']").val()); //where firstName is id of first name field 
      $("#firstName").attr("disabled", "disabled");    
}, 
error: function(){ alert('Something went wrong.'); } 
    }); 
} 
</script> 

IndexController.php

public function sampleviewAction(){ 
    if ($this->getRequest()->isXmlHttpRequest()){ 
     $id = $this->_getParam('number', 0); 
     if ($id > 0){ 
     $albums = new Application_Model_DbTable_Albums(); 
     $form->populate($albums->getAlbum($id));}  
     } 
} 

Modelsampleview.php

public function getAlbum($id){ 
    $id = (int)$id; 
    $row = $this->fetchRow('e_recNo = ' . $id); 
    if (!$row){ 
    throw new Exception("Could not find row $id"); 
    } 
    return $row->toArray(); 
} 
関連する問題