通过将用户的id传递给模态框来向用户发送消息

时间:2017-05-23 23:41:20

标签: php mysql ajax

我正在尝试通过将用户用户名/ id传递给模式进行识别来将消息表单创建为引导模式。

这是一个html / php代码,它列出了注册用户。

<div class="col-lg-4 col-md-4 col-sm-4 mb">
                            <div class="content" style="margin-bottom:5px;">
                            <ul class=" extended inbox">
                            <div class="notify-arrow notify-arrow-green"></div>
                            <li>
                                <p class="green">People you can follow</p>
                            </li>
                            <?php                
                            //Show all  users    
                             foreach ($users as $row) {
                            ?>
                            <li style="padding:3px; margin-bottom:3px; width:100%; background:#CF9;">
                                <a href="index.html#">
                                    <span class="photo" style="float:left; padding:4px;"><img alt="avatar" src="uploads/<?php echo $row['pix']; ?>" width="50" height="50"></span>
                                    <span class="subject" style="float:left;">
                                    <span class="from">
                                       <?php 
                                        echo '<a href="#">'.$row['user_lastname']. '&nbsp;'.$row['user_firstname'].'</a>';
                                        ?>  
<a class="" data-toggle="modal" data-target="#profile_pic_modal"><span class="glyphicon glyphicon-comment"></span></a>
                                       </span><br>
                                    <span class="time">
                                    <?php
                                    echo  (($row['receiver'] === $row['user_id'] && $row['sender'] === $user_id) 
                                     ? '<button class="btn follow following " rel="'.$row['user_id'].'">Following</button>'
                                     :' <button class="btn follow" rel="'.$row['user_id'].'">
                                        <i class="fa fa-user-plus alert-info"></i> Follow </button>');

                                       ?>
                                    </span>
                                    </span>

                                </a>
                            </li><br>

                            <?php
                             }
                             ?>
                            </ul>
                            </div>

当用户点击其他用户的消息图标时,他/她应该能够发送消息。有人可以告诉我如何使用php / mysqli和ajax

这样做

2 个答案:

答案 0 :(得分:0)

用户名(登录?)和已登录用户的ID等信息应由Session处理,不像您有充分的理由不这样做。当用户进入系统时,您已经加载了一堆数据以确保它是有效的,因此实际的方法是不检索登录用户的所有数据,这些数据当前正在使用您的系统,它始终是好的使用SESSIONs来处理它(想象一下大量用户使用你的系统,并且你需要将每个用户检索到系统内的每次点击和例程)。

以实际的方式,只需打开您的模态并使用已启动的会话验证您的例程,并确定用户信息。

为了澄清OTHERS用户数据(当前用户点击发送消息所列出的数据),您可以使用以下方法:

您的HTML:

    <a href="#" data-userid='<?= $row['user_id']; ?>'>
<span class="photo" style="float:left; padding:4px;"><img alt="avatar" src="uploads/<?php echo $row['pix']; ?>" width="50" height="50"></span>
<span class="subject" style="float:left;">
<span class="from">
<?php 
  echo '<a href="#">'.$row['user_lastname']. '&nbsp;'.$row['user_firstname'].'</a>';
  ?>  
<a class="" data-toggle="modal" data-target="#profile_pic_modal"><span class="glyphicon glyphicon-comment"></span></a>
</span><br>
<span class="time">
<?php
  echo  (($row['receiver'] === $row['user_id'] && $row['sender'] === $user_id) 
   ? '<button class="btn follow following " rel="'.$row['user_id'].'">Following</button>'
   :' <button class="btn follow" rel="'.$row['user_id'].'">
      <i class="fa fa-user-plus alert-info"></i> Follow </button>');

     ?>
</span>
</span>
</a>

#Modal (Assuming you're using v4)

<div class="modal hide fade" id="user-message">
     <div class="modal-header">
        <button class="close" data-dismiss="modal">×</button>
        <h3 class="hdrtitle">Hey <?= $_SESSION['login']; ?>, Send message to <span></span></h3>
     </div>
     <div class="modal-body">
         <label for='msg'>Message:</label>
         <textarea id='msg' rows="4" cols="50" name='msg'></textarea>
         <button id='send-msg'>Send Msg</button>
     </div>
</div>

然后显示:

$('a').on('click', function(){
//retrieve all other user data
$.get( "yourcode.php?userid=" + $(this).data('userid'), function( data ) {
  $('.modal h3 span').html(data.username);
  //FILL YOUR MODAL AS YOU WISH
  $('.modal').modal('toggle');
});

});

但最好的方法是在局部视图中单击并安装模态,使已安装的HTML包含您想要触发模态例程的所有信息,从而避免用户在首次访问时并不真正需要的html结构页面。

$('a').on('click', function(){
//retrieve all other user data
$.get( "partialmodal-sendmsg.php?userid=" + $(this).data('userid'), function( data ) {
   $('body').append(data);
  //FILL YOUR MODAL AS YOU WISH
  $('.modal').modal('toggle');
});

});

有些人必须阅读:

When should I use session variables instead of cookies?

http://cse.unl.edu/~riedesel/pub/cse413/Project%202/SESSION.pdf

答案 1 :(得分:0)

首先添加data-(anyName)标记,如下所示

<?php $ID = 'The persons Username'; ?>

    <a href='#' class='btn btn-warning btn-xs open-AddBookDialog' data-id='$ID' data-toggle='modal'>My Modal</a>

然后在模态正文中放入一个输入标记,其ID为example(MyID)

<input type="text" id="MyID">

然后使用下面的代码(jquery),这会将data-id的值传递给modal show上的输入标记。

$(document).on("click", ".open-AddBookDialog", function () {
     var myId = $(this).data('id');

     $(".modal-body #bMyID").val(myId);

      $('#myModal').modal('show');
});