【问题标题】:How can I show a variable in Bootstrap modal in PHP?如何在 PHP 的 Bootstrap 模式中显示变量?
【发布时间】:2016-04-20 02:44:14
【问题描述】:

我有一个form 进行计算,进入数据库并通过警报返回值。 我想将这个alert 替换为modal

HTML

<form method="post" action="#">
<input type="text" name="alt" id="altura" required><br><br>
<input type="text" name="peso" id="peso" required><br><br> 

<button type="submit" id="Send">Send</button>
 </form>

PHP

function calcularIMC($altura,$peso){
 $imc = 0;
   if($altura >0 && $peso >0){
     $imc = $peso / ($altura * $altura);
   }

 echo '<script>';
 echo 'alert("'.$imc.'");';
 echo '</script>';
}

我尝试如下:
- 在标签&lt;/html&gt;代码后添加php
- 增加了负责计算的变量:$imc
- 我将按钮 Sendmodal 链接。

<form method="post" action="#">
   <input type="hidden" name="acao" id="acao" value="cadastrar"/>

   <input type="text" name="alt" id="altura" required><br><br>
   <input type="text" name="peso" id="peso" required><br><br>
   <button type="submit" id="Enviar" data-toggle="modal" data-target="#myModal">Enviar</button>
   </form>

   <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
     <div class="modal-dialog" role="document">
       <div class="modal-content">            
      <div class="modal-body">
          <?php echo'.$imc.';?>
         </div>
       <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>                   
       </div>
      </div>
     </div>
   </div>
  </body>
</html>

PHP

<?php
      function calcularIMC($altura,$peso){
    $imc = 0;
    if($altura >0 && $peso >0){
        $imc = $peso / ($altura * $altura);
     }   
    return $imc;
    }
 ?>

因此,当我单击Send 按钮(带有所有空字段)时,它会打开模式并将'.$imc.' 显示为字符串。 当我插入数据并单击按钮Send 时,一个暗淡的窗口(模态的早期效果)并迅速恢复正常。我相信 modal 正在被调用,但有些拉伸它会产生错误并关闭。

我该如何解决这个问题?

AJAX,代码顶部:

<?php
$imc = false;

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$imc = calcularImc($_POST['altura'], $_POST['peso']);
}
?>

body结束

<?php
  if ($imc !== false){
    echo "<script>$('#myModal').modal('show');</script>";
  }
?>

会是这个吗?我尝试添加此代码,但给出了相同的结果。通过提交表单,窗口变暗并迅速恢复正常。

---------------------------------更新/我设法做到了我想要的----- --------------------------

<form method="post" action="#">
<input type="text" name="alt" id="altura" required><br><br>
<input type="text" name="peso" id="peso" required><br><br> 

<button type="submit" id="Send" data-toggle="modal" data-target="#myModal">Send</button>
</form>

<?php

$imc = false;

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$imc = calcularImc($_POST['altura'], $_POST['peso']);
}
?>


<?php
  if ($imc !== false){
    echo '<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>';
    echo '<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>';
    echo "<script>$('#myModal').modal('show');</script>";
  }
?>
</body>
</html>

function calcularIMC($altura,$peso){

 $imc = 0;
     if($altura >0 && $peso >0){
      $imc = $peso / ($altura * $altura);
     }

echo '<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
      <div class="modal-content">
      <div class="modal-body">';

echo $imc;     // RESULT OF CALC MODAL INSIDE        

echo '</div>
      <div class="modal-footer">
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
      </div>
      </div>
      </div>';
} 
?>

【问题讨论】:

  • 你在哪里调用calcularIMC,你在哪里设置$imc?你的语法不正确。如果你想打印一个变量,只需使用&lt;?php echo $imc; ?&gt;
  • 我想在modal 中调用calcularIMC。 $imc 在calcularIMC 中声明。由于我的语法错误,我该如何解决?你能帮我吗?
  • 你不能在已经渲染的页面上调用 php 代码。因此,您要么必须提交表单并在页面上检查表单是否已提交并自动打开模型,要么您必须向服务器发出 AJAX 请求以执行您的 PHP 代码。如果您不想刷新页面,请查找 AJAX。
  • @Laurens 我加了一个Ajax代码,请看一下,告诉我是多还是少这种代码?当我提交表单时,窗口变暗并迅速恢复正常。
  • 它不是AJAX,因为你只是刷新页面,所以它是一个普通的post表单,这也很好。我稍后会检查你的代码是否有错误

标签: php html twitter-bootstrap bootstrap-modal


【解决方案1】:

POST方法:

<?php
function calcularIMC($altura,$peso){
   $imc = 0;
   if($altura >0 && $peso >0){
     $imc = $peso / ($altura * $altura);
   }
   return $imc;
}
$imc = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $imc = calcularImc($_POST['alt'], $_POST['peso']);
    ?>
    <script type="text/javascript">
    $(window).load(function(){
        $('#myModal').modal('show');
    });
    </script>
<?php
}
?>
<form method="post" action="#">
   <input type="hidden" name="acao" id="acao" value="cadastrar"/>

   <input type="text" name="alt" id="altura" required><br><br>
   <input type="text" name="peso" id="peso" required><br><br>
   <button type="submit" id="Send">Send</button>
   </form>

   <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
     <div class="modal-dialog" role="document">
       <div class="modal-content">            
      <div class="modal-body">
          <?php echo $imc;?>
         </div>
       <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>                   
       </div>
      </div>
     </div>
   </div>
  </body>
</html>

你犯的错误:

  • 将 altura 添加为 $_POST['altura'] 而不是 $_POST['alt'](因为它的 name 属性是 alt)
  • 您在页面加载之前启动了 modal.show 脚本。所以模态可能还不存在。将其包裹在$(window).load(function(){})
  • 以错误的方式打印变量:echo'.$imc.' 应该是 echo $imc;

使用 AJAX 会更好。然后您不必刷新页面。如果您想这样做,请查找 AJAX。您也可以避免使用 PHP。 @AceWebDesign Answer 很好地解释了如何在没有 PHP 的情况下做到这一点。

【讨论】:

  • 我使用的结构与您的类似,但您的回答“让我明白了”。谢谢!正如我所说,我希望答案显示在modal 中。和以前一样,即使所有字段都是空白的,我也可以完美地打开modal。我把模态代码放在php里面解决了。
【解决方案2】:

您可以为此使用 jQuery。 而不是

 echo '<script>';
 echo 'alert("'.$imc.'");';
 echo '</script>';

您可以在页面上使用它。它可能需要一些调整,因为它又快又粗糙,而且模态有点生锈。

<html lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>


<body>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<form method="post" action="#">
    <input type="hidden" name="acao" id="acao" value="cadastrar"/>

    <input type="text" name="alt" id="altura" required><br><br>
    <input type="text" name="peso" id="peso" required><br><br>
    <button type="submit" id="Enviar" data-toggle="modal" data-target="#myModal">Enviar</button>
</form>

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-body">

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

<script>
    $(document).ready(function() {
        $(document).off("click", ".btn-default").on( "click", ".btn-default", function(e) {
            var altura = $('#altura').val();
            var peso = $('#peso').val();
            var imc =0;
            if (altura > 0 )
            {
                var imc = peso / (altura * altura);
            }
            $(".modal-body").html(imc);
            $('#myModal').modal('show');
        });
        return false;
    });
</script>
</body>
</html>

【讨论】:

  • 代码有其他功能和问题代码集成我会用php做。但是,是我将来可以使用的代码。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
相关资源
最近更新 更多