Цикл PHP while не работает внутри модального режима Bootstrap

В приведенном ниже коде показаны последние сообщения пользователя из базы данных и кнопка удаления, если пользователь просматривает сообщение.

<div class="span12">
                    <?php
                        // get current user ID
                        $userid = $row['0'];

                        // get posts
                        $sql_posts = "SELECT * FROM posts WHERE ownerid='$userid' ORDER BY id DESC LIMIT 0,5";
                        $result_posts = mysql_query($sql_posts);

                        // for each post, show le post.
                        while($row_posts = mysql_fetch_assoc($result_posts)) {
                    ?>
                    <div class="well">
                        <span class="label"><?php echo date('F j Y',strtotime($row_posts['time']));?></span>
                        at
                        <span class="label"><?php echo date('g:i a',strtotime($row_posts['time']));?></span>
                        <?php
                            if($player==$_SESSION['username']) {
                        ?>
                            <a href="#deletepost" data-toggle="modal">
                                <span class="label label-important">Delete post</span>
                            </a>
                            <!-- delete post modal -->
                            <div id="deletepost" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                <div class="modal-header">
                                    <button type="button" class="close delete" data-dismiss="modal" aria-hidden="true">&times;</button>
                                    <h3 id="myModalLabel">Delete post</h3>
                                </div>
                                <div class="modal-body">
                                    Are you want to delete post #<?php echo $row_posts['id'];?>?
                                    <p class="muted">
                                        "<i><?php echo $row_posts['contents'];?></i>"
                                    </p>
                                </div>
                                <div class="modal-footer">
                                    <form class="pull-right form-inline" method="post" action="post_delete.php">
                                        <input type="hidden" value="<?php echo $row_posts['id'];?>" name="postid">
                                        <input type="hidden" value="<?php $filepath = $_SERVER["SCRIPT_NAME"]; echo basename($filepath);?>" name="currentpage">
                                        <button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Keep the post</button>
                                        <button type="submit" class="btn btn-danger">I am sure. Delete the post!</button>
                                    </form>
                                </div>
                            </div>
                            <!-- end modal -->
                        <?php
                            } // end delete post button
                        ?>
                        <hr width="250px">
                        <img src="profilepic.php?player=<?php echo $player;?>&size=32" />
                        <?php echo $row_posts['contents'];?>
                    </div>
                    <?php
                        } // end post foreach
                    ?>
                </div>

По какой-то причине, когда пользователь нажимает на модальное окно, он каждый раз показывает один и тот же пост. Например, если пользователь нажал «Удалить» в первом сообщении, а содержание сообщения было hello, в модальном окне отобразится приветствие. Однако для всех остальных сообщений в цикле, если вы нажмете «Удалить», будет отображаться первое сообщение в каждом отдельном модальном окне.


person Community    schedule 26.04.2013    source источник
comment
У тебя тут много плохого происходит. Во-первых, чтобы ответить на ваш вопрос, посмотрите на модальное окно удаления сообщения. Каждый раз, когда вы зацикливаетесь, вы создаете новый div с тем же идентификатором удаления. Вероятно, поэтому вы всегда открываете первое модальное окно. Идентификаторы всегда должны быть уникальными. Кроме того, обратите внимание на использование усовершенствованного расширения MySQL.   -  person jon__o    schedule 27.04.2013


Ответы (2)


Ваш href для ссылки на удаление — #deletepost, а ваш модальный идентификатор всегда один и тот же.

Измените его, чтобы он не использовал идентификаторы, или сделайте каждый идентификатор другим.

Попробуй это,

<div class="span12">
                    <?php
                        // get current user ID
                        $userid = $row['0'];

                        // get posts
                        $sql_posts = "SELECT * FROM posts WHERE ownerid='$userid' ORDER BY id DESC LIMIT 0,5";
                        $result_posts = mysql_query($sql_posts);

                        // for each post, show le post.
                        while($row_posts = mysql_fetch_assoc($result_posts)) {
                    ?>
                    <div class="well">
                        <span class="label"><?php echo date('F j Y',strtotime($row_posts['time']));?></span>
                        at
                        <span class="label"><?php echo date('g:i a',strtotime($row_posts['time']));?></span>
                        <?php
                            if($player==$_SESSION['username']) {
                        ?>
                            <a href="#deletepost-<?php echo $row_posts['id'];?>" data-toggle="modal">
                                <span class="label label-important">Delete post</span>
                            </a>
                            <!-- delete post modal -->
                            <div id="deletepost-<?php echo $row_posts['id'];?>" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                <div class="modal-header">
                                    <button type="button" class="close delete" data-dismiss="modal" aria-hidden="true">&times;</button>
                                    <h3 id="myModalLabel">Delete post</h3>
                                </div>
                                <div class="modal-body">
                                    Are you want to delete post #<?php echo $row_posts['id'];?>?
                                    <p class="muted">
                                        "<i><?php echo $row_posts['contents'];?></i>"
                                    </p>
                                </div>
                                <div class="modal-footer">
                                    <form class="pull-right form-inline" method="post" action="post_delete.php">
                                        <input type="hidden" value="<?php echo $row_posts['id'];?>" name="postid">
                                        <input type="hidden" value="<?php $filepath = $_SERVER["SCRIPT_NAME"]; echo basename($filepath);?>" name="currentpage">
                                        <button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Keep the post</button>
                                        <button type="submit" class="btn btn-danger">I am sure. Delete the post!</button>
                                    </form>
                                </div>
                            </div>
                            <!-- end modal -->
                        <?php
                            } // end delete post button
                        ?>
                        <hr width="250px">
                        <img src="profilepic.php?player=<?php echo $player;?>&size=32" />
                        <?php echo $row_posts['contents'];?>
                    </div>
                    <?php
                        } // end post foreach
                    ?>
                </div>
person Adrian    schedule 26.04.2013

Используйте разные идентификаторы модели каждый раз, когда вы вызываете модель,

<div class="modal fade" id="<?php echo $id; ?>" role="dialog">
                    <div class="modal-dialog modal-sm">
                        <div class="modal-content">
                        <div class="modal-header">
                          <button type="button" class="close" data-dismiss="modal">&times;</button>
                          <h4 class="modal-title">Delete Product</h4>
                        </div>
                        <div class="modal-body">
                          <p>Are you sure, want to delete this?</p>
                        </div>
                        <div class="modal-footer">
                          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                        <a href="delete.php?pro=<?php echo $id; ?>"><span  class="btn btn-danger" >Delete</span></a>
                        </div>
                        </div>
                    </div>
                </div>
person Samithe Adhikari    schedule 27.10.2017