PHP以模态加载数据

时间:2013-11-18 15:02:02

标签: php mysql modal-dialog

我需要使用发送到模态窗口的ID从数据库表加载数据。

基本上,当网格加载时,有多列。其中两个特别称为CON​​TAINER_ID和WORKFLOW。

无论为WORKFLOW返回什么,都会打开一个名为#mySVCModal的MODAL弹出窗口。以下是示例代码:

 while(($Row = mysql_fetch_assoc($QueryResult)) !== FALSE)
 {
   echo "<tr";
   echo "<td style=\"width: 50px;\">{$Row[CONTAINER_ID]}</td>";
   echo "<td style=\"width: 50px;\"><a class=\"open-container\" 
             data-toggle=\"modal\" href="#mySVCModal\" 
             data-cont=\"{$Row[CONTAINER_ID]}\">{$Row[WORKFLOW]}</a></td>";
   echo "</tr>";
 }

当用户点击{$ Row [WORKFLOW]}时,会打开一个模态窗口,其中包含来自同一行的CONTAINER_ID。

以下是实现这一目标的JavaScript:

 echo "<script type=\"text/javascript\">
          $(document).on(\"click\", \".open-Container\", function() {
          var myContainer = $(this).data('cont');
          $(\".modal-body #containerID\").val( myContainer );
          });
       </script>";

此时,模态窗口打开,我可以显示CONTAINER_ID。以下是显示CONTAINER_ID的代码:

 <div id="mySVCModal">
   <form action="" method="POST">
     <input type="text" name="containerID" id="containerID" class="containerID" />
   *** more code here ***
   </form>
 </div>

所以没问题。 CONTAINER_ID显示在名为“containerID”的INPUT字段中。

现在我需要做的是当模态窗口打开时,“containerID”被发送到PHP变量,该变量将从名为WORKFLOW_TABLE的数据库表中检索WORKFLOW信息。

当我尝试将containerID转换为PHP变量并将其回显时,不会显示任何内容:

 <?php
 $containerID = $_POST['containerID'];
 echo "this is containerID " . $containerID;  // only displays the text, not the $containerID
 ?>

我知道一旦我可以直接获取上面的代码以在ECHO中显示containerID,我就可以运行它的查询。

所以基本上,我需要做的是当模态窗口打开时,PHP将采用containerID并运行“SELECT * FROM WORKFLOW_TABLE,其中CONTAINER_ID ='containerID'”;

WORKFLOW_TABLE中的内容应自动显示在各种INPUT字段中。我现在只使用INPUT字段。那就是重点。

总而言之,我需要使用containerID显示使用WORKFLOW_TABLE显示内容的模式。

我希望我能清楚地说明这一点。

请帮忙。

2 个答案:

答案 0 :(得分:0)

听起来你需要一个AJAX查询。

<script>
function loadData()
{
  var xmlhttp;
  if (window.XMLHttpRequest)
  {
    xmlhttp = new XMLHttpRequest();
  }
  else
  {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange = function()
  {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
      document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET", "db_query.php?containerID = " + document.getElementById('containerID').getAttribute('value'), true);
  xmlhttp.send();
}
window.onload = loadData;
</script>

<div id="myDiv"></div>

对于任何可能的缺陷提前抱歉,我实际上并没有这样做。

答案 1 :(得分:0)

当您正在加载模式时,您似乎并未真正将表单提交到服务器。

由于您可能不想重新加载整个页面以显示模式,因此您应该使用异步请求按需请求模态内容。由于您的示例代码使用了jQuery,我在这里使用了相同的代码。 (see the jQuery.load() documentation for more info

echo "<script type=\"text/javascript\">
          $(document).on(\"click\", \".open-Container\", function() {
              var myContainer = $(this).data('cont');
              $(\".modal-body #containerID\").val( myContainer );
              $('.modal-body').load(
                  'yourPHPscript.php', 
                  { containerID: $('#containerID').val()}
              );
          });
       </script>";

然后您的PHP脚本应该类似于此(注意从POST到GET的更改):

<?php
 $containerID = $_GET['containerID'];
 echo "this is containerID " . $containerID;
 ?>