2017-08-11 10 views
0

基本的に私はdbからデータがロードされる受信ボックスを作成しています。しかし、私はモーダルを起動するのに苦労している、私は検索したが、何も私の問題に一致しません。私がinputを隠してクリックされた行のIDをチェックしているので、トリガーするボタンは<form method="post">の内側にあります。
Btw、私のボタンはモーダルを起動し、2つのmysqliクエリも実行します。 は、ここに私のコードです:
ブートストラップモーダルが1秒間消えて表示されます

<form method="post"> 
<input type="hidden" name="key" value="'.$value->id.'"> 
<button data-toggle="modal" data-target="#myModal" title="View" class="btn btn-primary btn-xs" name="inbox_view"> 
<span class="glyphicon glyphicon-list"></span></button> 
<button title="Trash" class="btn btn-danger btn-xs" name="inbox_del"> 
<span class="glyphicon glyphicon-trash"></span></button> 
</form> 

私のクエリを実行するためのコード:

if(isset($_POST['inbox_view'])){ 
    $id = filter($_POST['key']); 
    $type = '1'; 
    $stmt = $dbcon->query("SELECT * FROM messages WHERE id='$id' AND type='1'") or die(mysqli_error()); 
    $stmt2 = $dbcon->prepare("UPDATE messages SET seen='0' WHERE id=?") or die(mysqli_error()); 
    $stmt2->bind_param('s',$id); 
    $stmt2->execute(); 
    while($row = mysqli_fetch_array($stmt)){ 
    $sender=$row['sender']; 
    $msg=$row['msg']; 
    $mdate=$row['mdate']; 
    } 
} 

モーダル:

<div class="modal fade-in" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
     <h4 class="modal-title" id="myModalLabel"><?php echo $value->sender; ?></h4> 
     </div> 
     <div class="modal-body"> 
     <!-- Description--> 
     <div class="row"> 
      <div class="col-md-12"> 
      <p class="wrap"><?php echo $value->msg?></p> 
      </div> 
     </div> 
     <!-- End Description--> 
     </div> 
     <div class="modal-footer"> 
     Received: <?php echo $value->mdate ?> 
     </div> 
    </div> 
    </div> 
</div> 


私が間違っているのか?私はこの仕事をするために何が必要ですか?
PS:更新クエリは、メールがお使いのブラウザは、ボタンのクリックでフォームを送信している
未読メッセージ=太字
読むメッセージ=通常

+1

ブートストラップはバックエンドを気にしません。 JSを私に提供するのがより適切です。私の推測では、XHRレスポンスを取得した後にモーダルを誤って閉じるか、またはXHRをまったく使用せず、モーダルが閉じずにブラウザが通常のPOSTリクエストを送信してページがリロードされます。 –

+0

私はブートストラップに慣れていません。しかし、私は何かを欠いている。どこにフォームを送っていますか?私は、ボタンのクリックや何かを聞いてポストを起動する入力サブミットまたはJavaScript関数を期待しています。 – Gerard

+0

@ジェラード「あなたはどこにフォームを送信していますか?私は ''の値を取得するために '

'を使い、それを私の選択クエリに使用しています。 – ronstoppable

答えて

1

を読んでいるかどうかを確認することです。これは、モーダルが閉じられているように見える理由です。実際には、フォームが送信された後に新しい(ただし同じ)ページが表示されます。ナビゲートせずにデータを送信するためのXHRリクエストを作成する必要があります。

詳細はhttps://api.jquery.com/jquery.post/を参照してください。

+0

私はAJAX tbhに慣れていませんが、実際に私がこれを行う方法について教えてくれますか? – ronstoppable

+0

AJAXは、リクエストが非同期で(ドキュメント要求に関連して)行われることを意味します。簡単な言葉では、Xを要求しますが、現在のページを保持します。私はjquery.comの例で必要なものすべてを提供する必要があると思う:https://api.jquery.com/jquery.post/#example-7 –

+0

私はAJAXでどうやってそれをするのか本当に分からないが、私の質問に答える時間を節約して、私は実際にしようとしていることを分析しようとしています。 – ronstoppable

関連する問題