0

我正在编写一个对数据库进行一些报告的页面。为简单起见,我所包含的所有内容仅使用一个字段。一旦我了解了我必须做什么的概念,我就可以将它应用到完整版本,这是一个更大的数据库。

这是我的结构的一个想法,以及我希望它能够做什么。我有 results.php,它有一个表单,用户可以在其中输入名称并单击提交。当他们单击提交时,我希望它弹出一个带有“请稍候”消息的弹出窗口(尝试 BlockUI,但对建议开放)。而在后台getstuff.php 正在抓取输入的名称并检查该名称的数据库。一旦找到(或未找到),blockUI 消息就会消失,并在 results.php 中的表单下现在显示一个表格,其中包含来自 getstuff.php 的结果

代码:结果.php:

<form action="getstuff.php" method="post" enctype="multipart/form-data" id="aplas" name="aplas" class="cmxform">
    <table cellpadding="0" cellspacing="3" id="reportTable">
      <tr>
        <td><label for="name">Name: </label></td>
      </tr>
      <tr>
        <td><input type="text" name="name" id="name" maxlength="3" size="10" /></td>
      </tr>
      <tr>
        <td colspan="9" align="right"><input type="submit" name="submit" value="Find" id="find"></td>
      </tr>
    </table>
  </form>
  <div id="content"> </div>

getstuff.php:

require_once('includes/DbDetails.php');
$name = $_POST['name'];
@mysqli_select_db($DBConnect, "DATABASE")
    Or die("<p><b>Unable to select the database.</b></p>" . "<p>Error Code ".mysqli_errno($DBConnect).": ".mysqli_error($DBConnect))."</p>";
$SQLquery = "SELECT * FROM users WHERE name='".$name."'";    
$QueryResult = @mysqli_query($DBConnect, $SQLquery) 
    Or die("<p>Unable to execute the query.</p>"."<p>Error Code ".mysqli_errno($DBConnect).": ".mysqli_error($DBConnect))."</p>"; 
$row = mysqli_fetch_row($QueryResult);
$tableString = "<table><tr><th>Name:</th></tr><tr><td>{$row[0]}</td></tr></table>";
mysqli_close($DBConnect);
echo $tableString;

results.php 中的 Javascript:

$(document).ready(function(){
    $('#find').click(function(){
        $.blockUI;
        $.post("getstuff.php", $("#aplas").serialize(), function(data) {
            $('#content').html(data);
            $.unblockUI;
        });
    });
});

这是我以前没有做过的 blockUI 和额外文件 (getstuff.php) 部分。最初,results.php 表单操作是针对自身的,并且全部包含在一个文件中,但是当查询运行时,页面似乎什么都不做,这对用户来说不是很友好。

一旦查询完成,我正在尝试找出我需要做的事情,以便$tableString从 results.php 中的 getstuff.php显示。<div id="content">

非常感谢任何有关我出错的地方及其外观的帮助。

谢谢。

4

3 回答 3

0

您只需要回显 tableString,这是getstuff.php 中唯一缺少的东西

如果你想发送整个表单 $.post("getstuff.php", $("#aplas").serialize(), function(data) {});

于 2012-09-20T00:18:21.953 回答
0

既然你得到了.html(),请检查这是否对你有用

require_once('includes/DbDetails.php');
$name = $_POST['name'];
@mysqli_select_db($DBConnect, "DATABASE")
    Or die("<p><b>Unable to select the database.</b></p>" . "<p>Error Code ".mysqli_errno($DBConnect).": ".mysqli_error($DBConnect))."</p>";
$SQLquery = "SELECT * FROM users WHERE name='".$name."'";    
$QueryResult = @mysqli_query($DBConnect, $SQLquery) 
    Or die("<p>Unable to execute the query.</p>"."<p>Error Code ".mysqli_errno($DBConnect).": ".mysqli_error($DBConnect))."</p>"; 
$row = mysqli_fetch_row($QueryResult);?>
<table><tr><th>Name:</th></tr><tr><td>{<?php echo $row[0]?>}</td></tr></table>
<?php 
mysqli_close($DBConnect);
exit();
?>
于 2012-09-20T11:26:14.607 回答
0

好的,在将问题缩小到 jquery 之后,我开始阅读有关表单、.post 等的各种 API,并尝试了一些东西,然后是 BAM!它开始工作了。

将 results.php 头中的 jquery 更改为:

$(document).ready(function() {
    $("#aplas").submit(function(event) {
        $.blockUI();
        event.preventDefault();
        $.post("getstuff.php", $("#aplas").serialize(), function(data) {
            $('#content').html(data);
            $.unblockUI();
        });
    });
});

主要的变化是从

$('#find').click(function(){

$("#aplas").submit(function(event) {

谢谢你的帮助。

于 2012-09-20T22:06:01.663 回答