1

我有一个弹出表单,用于选择表格中的项目。按顺序,每一行的表数据是:(用于选择的复选框)、模式名称和表名称。

这是用于获取数据列表的查询:

select table_schema, table_name
from information_schema.tables
order by table_schema, table_name

我如何创建表格清单:

<?php
   $db = new mssql($_SESSION['serv'],$_POST['database'],$_SESSION['usr_n'],$_SESSION['pa    ss']);

   $db->query("
      select table_name, table_schema
      from information_schema.tables
      order by table_schema, table_name
   ");

   $tables = $db->getArray();

   foreach($tables as $table)
   {
      print "<tr>";
      print "<td><input type='checkbox' name='$table[TABLE_NAME]' class='checkbox' /></td>"; //Print Checkbox
      print "<td style='padding: 5px; text-align: center;'>$table[TABLE_SCHEMA]</td>"; //Print Table Schema
      print "<td>$table[TABLE_NAME]</td>"; //Print Table Name
      print "<td><input type='hidden' name='$table[TABLE_NAME]_schema' value='$table[TABLE_SCHEMA]'></td>";
      print "</tr>";
   }
?>

我正在尝试添加过滤器。我想放置从上面的查询返回的所有不同模式的下拉列表。我已经使用以下方法完成了此操作:

<option value="%" selected>All Schemas</option>
<?php
   $db = new mssql($_SESSION['serv'], $_POST['database'], $_SESSION['usr_n'],$_SESSION['pass']);
   $db->query("
      select distinct table_schema
      from information_schema.tables
      order by table_schema
   ");
   $schemas = $db->getArray();
   foreach($schemas as $schema) {
      ?>
         <option value="<?php echo $schema['TABLE_SCHEMA'];?>"><?php echo $schema['TABLE_SCHEMA']?></option>
      <?php
   }
?>

这工作正常,当我访问 Javascript 中的下拉菜单时,我会在显示警报时获得正确的值。

我需要发生的是当用户从列表中选择不同的模式(onchange)时,表将更新,仅显示具有指定模式的表。我一直在尝试利用我对 Javascript 和 PHP 的有限知识来解决这个问题,但是在搜索了几个相关的问题之后,我了解到我需要使用 AJAX。我对此知之甚少,并且在网上找不到很有帮助的教程。

所以我目前坚持的是将下拉列表的值发送到 PHP 文件,取回一个数组,然后将其返回给 Javascript。然后我将从显示表中删除所有行,并从传入的数组中添加新值。

这是我到目前为止所得到的:

function updateList() {
   var sch = document.getElementById("schList");
   var xmlhttp;
   if(window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
   } else {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function() {
      if(xmlhttp.readyState==4 && xmlhttp.status==200) {
         var table = xmlhttp.response
      }
   }
}

从这里我不知道。我读过一些叫做 JSON 的东西,你可以返回对象和数组。如何将模式名称发送到文件,以及如何从文件中返回数组?

谢谢您的帮助!

4

1 回答 1

0

如果您对该主题不那么了解,请不要尝试通过 ajax 进行此操作。只需使用告诉页面要加载的内容的 url var 重新加载页面即可。table.php?id=用户

一旦这一切在没有 ajax 的情况下正常工作,您可以在必要时添加该功能。

如果您想知道重新加载的 js,请参阅:http ://webdesign.about.com/od/examples/l/blfaqddredirect.htm

于 2013-07-11T14:24:14.650 回答