2011-08-09 53 views
0

データを挿入するたびに例外を除いてデータベースにデータを挿入するモデル関数を実行するコントローラクラスを呼び出すコマンドがWebページにあります1回ではなく3回挿入されます。mysqlは1つのクエリで複数の挿入を行います

function run_no_submenu_job($job_name,$client_name,$server_id) 
{ 
    $this->Jobmodel->insert_client_history($userID,$firstname,$lastname,$clientname,$data['time']); 
} 

とモデル関数は次のようになります。

$query=$this->db->query("INSERT INTO clientaccesshistory (jobid, clientid, firstname, lastname, clientname, menu, submenu, starttime) VALUES ('$time','$userID','$firstname','$lastname','$clientname','Monitor/Verify', '$this->job_name',current_timestamp())"); 

私は情報を3回追加されているデータベースで見てみると。タイムスタンプが1秒間隔で表示されることもあります。ときどきこの動作が起こらず、予想通り一度だけ挿入されることがあります。これが私のローカルPC上のmysqlとの接続であるかどうかはわかりません。

おかげ

+1

投稿したコードでは3回の挿入は発生しません。より多くのコード、特にループを含む関連部分を投稿することを検討してください。 –

+0

これは、私が使用しているすべてのコードです。メニューオプションのリストを表示するビューには唯一のループがあります(mysql関数呼び出しとは何も関係ありません) – triq

答えて

0

あなたはボタンの押しをデバウンスしていますか?つまり、「ボタンダウン」または「ボタンクリック」で関数が呼び出されていますか?

違いは、「クリック」は1回だけ発生しますが、ボタンをクリックするのにかかる時間に応じて、複数の更新サイクルで「ダウン」として登録され、挿入を複数回呼び出します。マウスクリックイベントにアクセスできない場合は、ボタンの値が上から下に変化したときにのみ関数を呼び出してみてください。

上記の場合ならば、HTMLは

<input type="button" onClick=run_no_submenu_job> 

だろうただし、関数にこのように引数を提供することはできません。私はJavascriptを使用して以来、長い間あなたの問題を解決する方法がわかりません。うまくいけば、他の誰かがこの問題を拡張することができます。

+2

あなたによれば、マウスボタンが押された時間によって、多くのインサートが起こらなければならない。その場合、毎回インサートの数が異なる必要があり、常に正確に3つではありません。 – Vinay

+0

はい、これは問題だと思います。あなたはjavascriptでこれを行うためのソリューションを提供できますか?私はちょうど拾い読みへのリンクを返すcodeigniterアンカー関数を使用しています: – triq

関連する問題