今天在外面买裤子,看见超市里面搞抽奖。好多人在那里啊,回寝室第一时间就做了这个抽奖的程序。呵呵,纪念下下
简单了点,这个是注册界面
简单的注册下,留下点个人信息
数据库的表设计如下
其实可以做到后台添加奖牌的,但嫌麻烦就没搞了。这些都是验证提示窗口
最后的就是现实获奖人显示的界面了
简简单单。无聊的时编程也是个消遣
如下是代码
- <?php
- $DB_HOST = "localhost"; //数据库主机位置
- $DB_LOGIN = "root"; //数据库的使用账号
- $DB_PASSWORD = "123"; //数据库的使用密码
- $DB_NAME = "elliot"; //数据库名称
- $conn = mysql_connect($DB_HOST, $DB_LOGIN, $DB_PASSWORD);
- mysql_select_db($DB_NAME);
- mysql_query("SET NAMES 'gb2312'");
- ?>
这是经典的PHP链接MYSQL代码。
这个是登录界面的代码,简单的很
- <script>
- <!------ 检查 form1 字段值的函数 BEGIN ------>
- function check()
- {
- if(document.form1.m_name.value == "")
- {
- alert("未输入姓名");
- return false;
- }
- if(document.form1.m_sid.value == "")
- {
- alert("未输入身份证号码");
- return false;
- }
- if(document.form1.m_email.value == "")
- {
- alert("未输入 E-mail");
- return false;
- }
- if(document.form1.m_phone.value == "")
- {
- alert("未输入联系电话");
- return false;
- }
- if(document.form1.m_addr.value == "")
- {
- alert("未输入奖品邮寄地址");
- return false;
- }
- document.form1.submit();
- }
- <!------ 检查 form1 字段值的函数 END ------>
- </script>
- <form name="form1" method="post" action="logon_process.php">
- <table width="750" border="1">
- <tr>
- <td colspan="4" align="center">抽奖人信息填写</td>
- </tr>
- <tr>
- <td width="101">姓名</td>
- <td width="287">
- <input type="text" name="m_name">
- </td>
- <td width="131">身份证号码</td>
- <td width="203">
- <input type="text" name="m_sid">
- </td>
- </tr>
- <tr>
- <td width="101">E-mail</td>
- <td width="287">
- <input type="text" name="m_email">
- </td>
- <td width="131">联系电话</td>
- <td width="203">
- <input type="text" name="m_phone">
- </td>
- </tr>
- <tr>
- <td width="131">奖品邮寄地址</td>
- <td colspan="3">
- <input type="text" name="m_addr" size="40">
- </td>
- </tr>
- <tr>
- <td colspan="4" align="center">
- <input type="submit" name="Submit" value="清除重填">
- <input type="button" name="Submit2" value="送出" onClick="check();">
- <br>
- <font size="3" color="#FF0000">
- (请留下您的联系信息, 务必填写正确, 让我们能联系到您。)
- </font>
- </td>
- </tr>
- </table>
- </form>
关键在这里登录处理程序
- <?
- include("db_conn.php");
- include("sidcheck.php"); // 导入身份证号码检查机制
- // 查询数据库中是否有此用户 BEGIN
- $SQLStr = "SELECT * FROM memberprize WHERE m_sid = '$m_sid'";
- $res = db_query($SQLStr);
- // 查询数据库中是否有此用户 END
- if (db_num_rows($res)>0) // 若有此用户
- {
- $message = "您已经登记过了..";
- }
- else // 若无此用户
- {
- // 将用户信息写进数据库中 BEGIN
- $SQLStr = "INSERT INTO memberprize (m_id, m_name, m_sid, m_email, m_phone, m_addr, p_id) ";
- $SQLStr .= "VALUES('', '$m_name', '$m_sid', '$m_email', '$m_phone', '$m_addr', '0')";
- db_query($SQLStr);
- echo $SQLStr;
- $message = "谢谢您的登记, 请期待抽奖日的结果";
- // 将用户信息写进数据库中 END
- }
- ?>
- <script>
- alert("<?=$message?>");
- location.href="prizelist.php";
- </script>
这里面特别是身份证检查的程序很好玩,在网上看的,不错,以前都是A123456789这些。这个处理程序还不错,呵呵。
- <?
- class CIDMaker //检查身份证号码
- {
- var $id;
- var $err;
- var $idx = array(1,1,1,1,1,1,1,1,3,1,1,2,2,2,3,2,2,2,2,2,2,2,3,3,3,3);
- var $idy = array(0,1,2,3,4,5,6,7,4,8,9,0,1,2,5,3,4,5,6,7,8,9,0,1,2,3);
- function check($id_no)
- {
- $id_no = ucfirst($id_no); //首字母转大写
- if(ereg("^[A-Z][0-9]{9}$", $id_no))
- {
- for($i = 0;$i < 10; $i++)
- $ch[$i] = substr($id_no,$i,1);
- $i = 0;
- for ($char = "A"; $char != $ch[0]; $char++)
- $i++; //字母转数字
- $id = $this->idx[$i]+$this->idy[$i]*9+$ch[1]*8+$ch[2]*7+$ch[3]*6+$ch[4]*5+$ch[5]*4+$ch[6]*3+$ch[7]*2+$ch[8]*1+$ch[9]*1;
- $id = (($id % 10) == 0) ? TRUE : FALSE;
- return $id;
- }
- else
- return 0;
- }
- }
- $cidmaker = new CIDMaker;
- $result = $cidmaker->check($m_sid);
- if($result == FALSE)
- {
- echo "<script>";
- echo "alert(/"请输入正确的身份证号码/");";
- echo "</script>";
- echo "<body onload = /"history.back();/">";
- break;
- }
- ?>
最最关键的是抽奖的程序了。
- <?
- include("db_conn.php");
- include("db_func.php");
- // 计算共有几个用户登记 BEGIN
- $SQLStr = "SELECT * FROM memberprize";
- $res = db_query($SQLStr);
- $count = db_num_rows($res);
- // 计算共有几个用户登记 END
- // 将使抽奖会员表中的 m_id (抽奖会员编号)
- // 依次置入数组中 BEGIN
- for($i=0;$i<$count;$i++)
- {
- $row = db_fetch_array($res);
- $array[] = $row[m_id];
- }
- // 将使抽奖会员表中的 m_id (抽奖会员编号)
- // 依次置入数组中 END
- shuffle($array); // 随机排列数组中的值
- // 取出奖项共分几等级 BEGIN
- $SQLStr = "SELECT * FROM prize";
- $res = db_query($SQLStr);
- $num = db_num_rows($res);
- // 取出奖项共分几等级 END
- $check = 0;
- // 取出得奖名额的会员, 并依次指定奖项 BEGIN
- for ($n=0;$n<$num;$n++)
- {
- $row = db_fetch_array($res);
- for($j=0;$j<$row['p_num'];$j++)
- {
- if ($array[$j] != '') // 奖品发完就GAMEOVER
- {
- $SQLStr = "UPDATE memberprize SET p_id = '$row[p_id]' WHERE m_id = '$array[$check]'";
- db_query($SQLStr);
- $check++;
- }
- }
- }
- // 取出得奖名额的会员, 并依次指定奖项 END
- ?>
- <script>
- alert("抽奖完毕");
- location.href="prizelist.php";
- </script>
RAR文件貌似不能传~那算了