首页 > 解决方案 > 如何在 Bootstrap Modal 中传递 GET 变量?

问题描述

我的代码有问题。我想将 PHP 变量传递给引导模式。

这是我的代码:

我打开模式的链接:

<td><a class="btn btn-primary btn-xs" data-toggle="modal" data-target="#modal-user" href="userDetails.php?id_user=<?= $rel['id_user'] ;?>"><?= $rel['id_user'] ;?></a></td>

我的模态代码:

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-user" aria-hidden="true" id="modal-user">
    <div class="modal-dialog modal-lg">

        <?php
            include('userDetails.php');
        ?>

    </div>
</div>

和 userDetails.php 代码:

<?php

require 'connect.php';

if (isset($_GET['id_user']) && !empty($_GET['id_user'])) {
    $idUser = $_GET['id_user'];
}


$sql = "SELECT * FROM users WHERE id_user=" .$bdd->quote($idUser);
$query = $bdd->query($sql);
$userDetails = $query->fetchAll(PDO::FETCH_ASSOC);


?>

        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Infos</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
            </div>
            <div class="modal-body">
                <?php
                    foreach($userDetails as $details) {
                ?>
                    <p><?= $details['name'] ?></p>
                    <p><?= $details['firstname'] ?></p>
                <?php
                    }
                ?>
            </div>
        </div>

另外,我有这个 jQuery 代码:

<script>
$( document ).ready(function() {
    $('#modal-user').on('hidden.bs.modal', function () {
          $(this).removeData('bs.modal');
    });
});
</script>

我在看其他帖子,正常情况下,一切都应该没问题,但我有一个错误,我仍然不知道为什么......

注意:未定义变量:第 10 行 /Applications/MAMP/htdocs/directory/userDetails.php 中的 idUser

你能帮我吗 ?

标签: phphtmlmysqltwitter-bootstrapmodal-dialog

解决方案


当您单击时,引导模式href不会调用您的页面。当您include userDetails.php. 因此,您可以在之前定义 getinclude或通过GET变量传递用户 ID。

所以:

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-user" aria-hidden="true" id="modal-user">
    <div class="modal-dialog modal-lg">

        <?php
            $_GET['id_user'] = $rel['id_user'];
            include('userDetails.php');
        ?>

    </div>
</div>

在一个循环中

如果您有一个循环并想通过它动态地执行它,jQuery您可以执行以下操作:

从您的链接中删除引导调用,并添加一个触发器类modal-btn并使其如下所示:

<a 
    class="btn btn-primary modal-btn btn-xs"
    href="userDetails.php?id_user=<?= $rel['id_user'] ;?>"><?= $rel['id_user'] ;?>
</a>

更新您的模态结构并删除include()

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-user" aria-hidden="true" id="modal-user"> 
  <div class="modal-dialog modal-lg">   
    <div class="modal-content"></div>    
  </div> 
</div>

jQuery 应该获取href链接的属性并调用bootstrap模态函数load并强制模态show

$(".modal-btn").on('click',function(e){ //trigger when link clicked
   e.preventDefault(); 
   $('#modal-user').modal('show'); //force modal to show
   $('.modal-content').load( $(this).attr('href')); //load content from link's href
});

因此,您的页面userDetails.php将被加载到模式中,您需要从中删除<div class="modal-content">...</div>以避免重复...


推荐阅读