实时更新Web系统 - Ajax,PHP,MySQL

时间:2011-04-28 02:40:41

标签: php mysql ajax

背景:我们正在举办一个由来自不同大学的学生参加的活动。 Web应用程序将实时报告注册该活动的学生人数。

基本网页布局

enter image description here

我希望所需的布局清晰。这需要每5分钟刷新一次,以便在新学生注册时显示。我已经完成了刷新部分 使用Ajax setTimeout()方法。

我有表Student。我正在使用的查询是:

  SELECT UNIV, STUDENT_NAME, STUDENT_EMAIL
      FROM STUDENT
      ORDER BY UNIV;

但是,主要问题是确定何时在表中添加新行并显示详细信息 问题1:目前,我所做的是拥有$currUniv变量,该变量指的是大学的当前值。如果$currUniv的值与当前获取的行不匹配,则创建一个新行

代码:在updater.php

function updateTable()
{
   $currUniv = "";
   while($currLine = mysql_fetch_array($results))
   {
      if (strcmp($currLine[0], $currUniv) != 0)
      {
         responseHTML .= "<tr id = \"{$currLine[0]}\">";
         responseHTML .= "<td id = \"{$GLOBALS["univ"]}\">";
         responseHTML .= "{$currLine[0]}";
         responseHTML .= "</td>";
         $currUniv = $currLine[0];
      }
         responseHTML .= "<td id = \"{$GLOBALS["studentname"]}\">";
         responseHTML .= "{$currLine[1]}";
         responseHTML .= "</td>";
         responseHTML .= "<td id = \"{$GLOBALS["studentemail"]}\">";
         responseHTML /= "{$currLine[2]}";
         responseHTML .= "</td>";
      if (strcmp($currLine[0], $currUniv) != 0)
      {
         responseHTML .= "</tr>";
      }
   }
}

首先,不显示该表。我不认为这是创建表的最佳算法。任何人都可以建议我实现同样的其他方法吗?

1 个答案:

答案 0 :(得分:1)

如果大学名称与上一行的名称相匹配,您似乎没有打开足够的tr和td标签。确保在两种情况下生成的标签数量完全相同。最好使用其他。单元格可能为空,但您必须生成它们。

您是否有任何正当理由不按一所大学的学生姓名对结果进行排序?这只是查询中的一个小变化 - ORDER BY UNIV,STUDENT_NAME。 如果没有它,你就不能依赖于mysql给你的顺序,它会让学生以任何他认为最快的顺序抛出学生,特别是当桌子变大时。

如果这是您需要更新的唯一内容,那么就没有足够的理由将您的代码更改为您必须从头开始学习的内容。