2017-04-27 1 views
-2

PHP을 사용하여 온라인 퀴즈 시스템을 만들고 있는데, 질문과 옵션 및 답변을 데이터베이스의 테이블에 저장했습니다. html 페이지에서 while 루프를 통해 질문과 옵션을 인쇄합니다 (옵션은 라디오 버튼 임). 라디오 버튼 값을 PHP으로 보내는 방법을 배웠지 만, 제가 직면 한 문제는 첫 번째 질문에 대해 선택된 옵션 만 PHP으로 전송된다는 것입니다. 예를 들어 데이터베이스에 두 개의 질문을 저장하고 while 루프를 사용하여 페이지에 인쇄 한 경우 question1option2question2으로 입력하고 제출을 클릭하면 option1PHP에 게시됩니다. , 선택한 다른 단추 값은 손실됩니다. 나는이 모든 값들이 답이 맞으면 데이터베이스를 통해 확인하고 정답에 따라 점수를 표시하기를 원합니다.

여기 내 HTML 페이지의 코드입니다. 전체 코드를 게시하고 있지만, <form> 태그 만 확인하면됩니다.

<body> 

<?php 
include('connect.php'); 
$sql="Select * FROM html"; 
$record=mysql_query($sql); 
?>  
<div id="container"> 
     <div class="header"> 
      <span class="heading"><span class="C">O</span>NLINE <span 
class="C">Q</span>UIZ <span class="C">S</span>YSTEM </span> 
    <div class="logo"><img src="img/flogo.png" width="188" height="150" 
alt="logo"></div> 

    </div> 
     <div class="center"> 

     <nav> 
      <ul> 
      <li style="margin-right:180px; height:50px;width:auto"><a 
href="home.php">Username</a></li> 
      <li><a href="Shome.php">Home</a></li> 
      <li><a href="results.php">Results</a></li> 
      <li><a href="welcome.php">Sign Out</a></li> 
      </ul> 
     </nav> 
     <div id="page-wrap"> 
     <h1>HTML Quiz </h1> 
      <form action="results.php" method="post" id="quiz"> 
      <ol> 
      <li> 
      <?php 
      while($result=mysql_fetch_assoc($record)) 
      { 
      echo "<form>"; 
      echo "<h3>"; 
      echo "".$result['id'].". ".$result['question'].""; 
      echo "</h3>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
A" value="A" />'; 
      echo '<label for="question-1-answer-A">'; 
      echo "".$result['option1'].""; 
      echo "</label>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
B" value="B" />'; 
      echo '<label for="question-1-answer-B">'; 
      echo "".$result['option2'].""; 
      echo "</label>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
C" value="C" />'; 
      echo '<label for="question-1-answer-C">'; 
      echo "".$result['option3'].""; 
      echo "</label>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
D" value="D" />'; 
      echo '<label for="question-1-answer-D">'; 
      echo "".$result['option4'].""; 
      echo "</label>"; 
      echo "</form>"; 
      } 
      echo '<input type="Submit" value="Submit" name="submit" />'; 
      ?> 
      </li> 
      </ol> 
      </form> 

     </div> 
    </div> 

<div class="footer"> 
     <footer></footer> </div> 
</div> 
</body> 

그리고 results.php

<?php 
include('connect.php'); 
$sql="Select * FROM html"; 
$record=mysql_query($sql); 
$result=mysql_fetch_assoc($record); 
$total=0; 
foreach($_POST['answer'] as $check) { 
echo $check; 
} 
echo "YOUR SCORE: ".$total; 
?> 

내가 아는이는 foreach 부분이 증가합니다 이것을 합계 다음 데이터베이스에서 답에 모든 답을 확인하는 데 사용됩니다, 파일이 지금 아무것도하지 않는 결과는 지금 볼 수있는 코드는 얼마나 많은 값이 PHP으로 보내지는지 확인하는 것입니다. 내가 제출을 클릭하면 현재 내가 6 질문 및 모든 질문에 대한 옵션을 선택한 후 인쇄 한, 그것은

AYOURSCORE: 0 여기

'A' "질문 1"에서 선택한 옵션의 가치, 값을 표시합니다 다른 질문은 사라집니다. 내가 직면 한 주요 쟁점은 무엇인가.

이 프로젝트를 2 일 안에 제출해야하므로 도움을 주시면 대단히 감사하겠습니다. 감사합니다.

P.S. 나는 PHP에 익숙하지 않으며 자바 스크립트에 대한 지식이 거의 없거나 전혀 없다.

+0

데이터베이스 및 데이터베이스의 구조에 삽입하는 코드를 표시하는 데 도움이됩니다. – Vladut

+1

*** [mysql_ * 함수 사용을 중단하십시오] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) *** [이 확장 기능 ] (http://php.net/manual/en/migration70.removed-exts-sapis.php)가 PHP 7에서 삭제되었습니다. [prepared] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 알아보십시오.) [PDO] (http://php.net/manual/en/pdo.prepared-statements.php)와 [MySQLi] (http : // php.net/manual/en/mysqli.quickstart.prepared-statements.php) PDO를 사용하는 것을 고려해보십시오. [매우 쉽습니다] (http://jayblanchard.net/demystifying_php_pdo.html). –

답변

0

두 가지 형식을 사용하고 있다고 생각합니다. 내부에서 하나의 양식을 여러 번 반복하지만 자식 양식에서는 action = ""을 제공하지 않습니다. 또는 루프 내부에서 양식을 제거하십시오.

<body> 

<?php 
include('connect.php'); 
$sql="Select * FROM html"; 
$record=mysql_query($sql); 
?>  
<div id="container"> 
     <div class="header"> 
      <span class="heading"><span class="C">O</span>NLINE <span 
class="C">Q</span>UIZ <span class="C">S</span>YSTEM </span> 
    <div class="logo"><img src="img/flogo.png" width="188" height="150" 
alt="logo"></div> 

    </div> 
     <div class="center"> 

     <nav> 
      <ul> 
      <li style="margin-right:180px; height:50px;width:auto"><a 
href="home.php">Username</a></li> 
      <li><a href="Shome.php">Home</a></li> 
      <li><a href="results.php">Results</a></li> 
      <li><a href="welcome.php">Sign Out</a></li> 
      </ul> 
     </nav> 
     <div id="page-wrap"> 
     <h1>HTML Quiz </h1> 
      <form action="results.php" method="post" id="quiz"> 
      <ol> 
      <li> 
      <?php 
      while($result=mysql_fetch_assoc($record)) 
      { 
      echo "<h3>"; 
      echo "".$result['id'].". ".$result['question'].""; 
      echo "</h3>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
A" value="A" />'; 
      echo '<label for="question-1-answer-A">'; 
      echo "".$result['option1'].""; 
      echo "</label>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
B" value="B" />'; 
      echo '<label for="question-1-answer-B">'; 
      echo "".$result['option2'].""; 
      echo "</label>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
C" value="C" />'; 
      echo '<label for="question-1-answer-C">'; 
      echo "".$result['option3'].""; 
      echo "</label>"; 
      echo '<input type="radio" name="answer[]" id="question-1-answer- 
D" value="D" />'; 
      echo '<label for="question-1-answer-D">'; 
      echo "".$result['option4'].""; 
      echo "</label>"; 
      } 
      echo '<input type="Submit" value="Submit" name="submit" />'; 
      ?> 
      </li> 
      </ol> 
      </form> 

     </div> 
    </div> 

<div class="footer"> 
     <footer></footer> </div> 
</div> 
</body> 
0

제가 생각하기에 문제는 입력 이름 인 name="answer[]"입니다. 모든 라디오 버튼에 대해 동일한 이름입니다. 모든 질문에 대해 동일합니다. 나는 괄호에 인덱스를 추가하는 것은 질문이

등등에 대한 질문 하나

name="answer[2]"에 대한

name="answer[1]" 도움이 될 것으로 생각합니다. w3schools TryIt Editor을 사용하면 입력 내용을 재생할 수 있습니다.

관련 문제