当前位置:首页> PHP教程> php进阶
关键字
文章内容
实现一个基于Ajax的调查程序
 
 
修改时间:[2008/07/31 20:33]    阅读次数:[1373]    发表者:[起缘]
 
<html>
<
head>
<
title>投票</title>
<
META http-equiv=Content-Language content=zh-cn>
<
META http-equiv=Content-Type content="text/html; charset=gb2312">
<
style type="text/CSS">
<!--
.
poll {font-size10pt;display:block}
.
pollresult {font-size12pt;display:none}
-->
</
style>
<?
php
 
include_once("server1.server.php"); #servidor para XAJAX
 
$xajax->printjavascript();
?>

</
head>
<
body>

<
script language=javascript>
    function 
back() { 
      
document.getElementById('poll').style.display 'block';
      
document.getElementById('pollresult').style.display 'none';
      
document.getElementById('pollresult').innerHTML '';
    } 
</
script>  
<
div id=pollresult class=pollresult>

</
div>


<?
php


global $db;

$poll $db->getRow("select * from TBL_POLL order by poll_id desc limit 1");
$poll_id $poll["poll_id"];
$pollitems $db->getAll("select * from TBL_POLLITEM where poll_id=$poll_id");
?>
<
div id=poll class=poll>
<
form id="pollForm" action="javascript:void(null);" onsubmit="onSubmit();"
   <?
php echo $poll["title"]; ?><br>
   <?
php for ($i 0$count count($pollitems); $i $count$i++) { ?>
  <
input type="radio" style="background-color : #CCCCCC;" name="pollitem" value="<?php echo $pollitems[$i]['pollitem_id'] ?>"><?php echo $pollitems[$i]['content'] ?><br>
  <?
php } ?> 
  <
input type="hidden" name="poll_id" value="<?php echo $poll_id; ?>">
  <
input type="submit" value="enter">
</
form
<
script language=javascript>
    function 
onSubmit() { 
      
xajax_poll(xajax.getFormValues("pollForm")); 
      
document.getElementById('poll').style.display 'none';
      
document.getElementById('pollresult').style.display 'block';
    } 
</
script
</
div>

</
body>
</
html

(非常全面的一个php技术网站, 有相当丰富的文章和源代码.)
服务器端
function poll($formData){
  global 
$db;
  
$tmp="";
  
$objResponse = new xajaxResponse();
  
  
$poll_id $formData['poll_id'];
  
$pollitem_id $formData['pollitem'];
  
  if(
$pollitem_id && $poll_id 0) { 
   
$db->query("update ".TBL_POLLITEM." set count=count+1 where pollitem_id = $pollitem_id");                  
  }
  
  
$poll $db->getRow("select * from TBL_POLL where poll_id = $poll_id");
  
$pollitems $db->getAll("select * from TBL_POLLITEM where poll_id=$poll_id");
  
  
  
$tmp .="<div align=center>".$poll["title"]."</div><br>";
    for (
$i 0$count count($pollitems); $i $count$i++) {
      
$tmp .="<div align=left>".$pollitems[$i]['content'].": ".$pollitems[$i]['count']."</div>";
    }
  
$tmp .="<div align=center>"."<input type=\"button\"  value=\"返回\" onclick=\"back();\">"."</div>";
  
  
$objResponse->addAssign("pollresult","innerHTML",$tmp);
  return 
$objResponse->getXML();


(非常全面的一个php技术网站, 有相当丰富的文章和源代码.)
数据库的表如下
CREATE TABLE TBL_POLL (
  poll_id int(11) unsigned NOT NULL default '0',
  title varchar(100) NOT NULL default '',
  created_date bigint(20) unsigned NOT NULL default '0',
  user_id int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (poll_id)
) TYPE=MyISAM;

CREATE TABLE TBL_POLLITEM (
  pollitem_id int(11) unsigned NOT NULL default '0',
  poll_id int(11) unsigned NOT NULL default '0',
  content varchar(100) NOT NULL default '',
  count int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (pollitem_id)
) TYPE=MyISAM;
这个例子中,调查的选项只在页面装载时读出,投票后在原地显示最新的投票信息。不需要弹出窗口