겨울방학 동안 회사에서 인턴 생활을 하면서 작은 일을 했는데요. 처음에는 PHP를 이용해 온라인 질의응답 프로젝트를 구현했는데, 스위치를 활용해서 하는 일이 많았습니다. 나중에 페이지가 너무 크고 자격이 부족하다고 느꼈습니다. 현재 페이지는 자체 루프를 만들고 타이밍을 위해 js를 사용하고 있지만 전체에 여전히 특정 문제가 있음을 발견했습니다. js에서는 점프와 폼 작업이 분리되어 있어 올바른 질문이 한 번 덜 판단된다는 의미입니다. 결국 두 개의 인터페이스를 사용하여 결과를 별도로 표시할 수 있습니다. 앞으로는 이 부분이 개선되길 바랍니다.
connetvar.php
<?php // Define database connection constants define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASSWORD', ''); define('DB_NAME', 'test'); ?>
index.php
<?php session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>问答</title> </head> <body> <script type="text/javascript"> window.onload=function(){ setInterval(function(){ var text=document.getElementById("text"); var value=text.value;//innerHTML if(value>0){ value-=1; text.value=value; }else{ location.href="show_js.php"; return false; } },1000); } </script> <?php require_once('connectvars.php'); $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); mysqli_set_charset($dbc,'utf8'); if(isset($_POST['index'])){ $index= $_POST['index']; $choice=$_POST['choice']; //check $arr = $_SESSION['arr']; //$arrconut = $_SESSION['conut($arr)']; $query = "SELECT * FROM question where id=$arr[$index]"; $results = mysqli_query($dbc, $query); $row = mysqli_fetch_row($results); $answer=$row['5']; $_SESSION['index'] = $index; if ($choice == $answer) { echo"<script type='text/javascript'>alert('答对了,下一题');</script>";//location='index1.php'; } else { echo"<script type='text/javascript'>alert('你答错了,游戏结束');location='show.php';</script>"; } if($index == count($arr)-1) { $index=$index+1; $_SESSION['index'] = $index; echo"<script type='text/javascript'>alert('题都给你答完了');location='show.php';</script>";exit; } else { $index++; //var_dump($index); //var_dump($_SESSION['index']); //var_dump(count($arr)); } } else { $arr = range(1, 5); shuffle($arr); $_SESSION['arr'] = $arr; $index = 0; } ?> <?php $query = "SELECT * FROM question where id=$arr[$index]"; $results = mysqli_query($dbc, $query); $row = mysqli_fetch_row($results); ?> <form method="post" action="index.php"> <?php echo $index+1 ?> <?php echo $row['0']?><br /> <input type="radio" name="choice" value="A" />A.<?php echo $row['1']?><br /> <input type="radio" name="choice" value="B" />B.<?php echo $row['2']?><br /> <input type="radio" name="choice" value="C" />C.<?php echo $row['3']?><br /> <input type="radio" name="choice" value="D" />D.<?php echo $row['4']?><br /> <input type="submit" value="决定是你了" /> <input type="reset" value="让我再想想" /> <input type="hidden" name="index" value="<?php echo $index ?>" /><br /> 您还有<input type="text" name="clock" size="2" value="10" id="text" />秒的答题时间 </form> </body> </html>
show.php
<?php session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Guitar Wars - High Scores</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <?php $id = $_SESSION['index'] ; echo '你一共答对了'.$id.'题'; //var_dump($id); switch ($id) { case 0 : echo '你的折扣为9.5折';//用户自行修改case和相应的折扣参数 break; case 1 : echo '你的折扣为9折'; break; case 2 : echo '你的折扣为8.5折'; break; case 3 : echo '你的折扣为8折'; break; case 4 : echo '你的折扣为7.5折'; break; case 5 : echo '你的折扣为7折'; break; } ?> <hr /> </body> </html> <?php unset($_SESSION['index']); ?>
show_js.php
<?php session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Guitar Wars - High Scores</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <?php $id = $_SESSION['index']+1 ; echo '你一共答对了'.$id.'题'; //var_dump($id); switch ($id) { case 0 : echo '你的折扣为9.5折';//用户自行修改case和相应的参数 break; case 1 : echo '你的折扣为9折'; break; case 2 : echo '你的折扣为8.5折'; break; case 3 : echo '你的折扣为8折'; break; case 4 : echo '你的折扣为7.5折'; break; case 5 : echo '你的折扣为7折'; break; } ?> <hr /> </body> </html> <?php unset($_SESSION['index']); ?>
이상은 관련 내용을 포함하여 php+mysql의 온라인 답변을 소개하고 있으니, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.