2011-08-24 2 views
0

다음은 데이터베이스 설계 http://www.flickr.com/photos/michaelstitt/6077647604/in/photostream/입니다 (the help from my previous post on Stack Overflow 사용).PHP 및 MySQL을 사용하여 퀴즈 웹 응용 프로그램 양식 채우기

PHP와 MySQL을 사용하여 퀴즈 웹 응용 프로그램을 만들려고합니다. HTML 폼을 만들고 'question'과 'question_choices'를 손으로 코딩하는 것이 훨씬 쉬워 보입니다. 그러나, 내 데이터베이스의 데이터를 사용하여 양식을 채우고 싶습니다.

내 질문은 어떻게 내 테이블에서 'question'또는 'question_choices'테이블의 데이터를 가져 와서 HTML 양식을 채울 것을 제안합니까?

하는 HTML 형태는 다음과 같이 표시됩니다

<form method="post" action="quiz1.php"> 

    <b>What was the make/model of my first car?</b> 
    <br> 
    <input type="radio" value="0" name="q_1"> 
    Toyota Camry <br /> 
    <input type="radio" value="1" name="q_1"> 
    Honda Accord <br /> 
    <input type="radio" value="0" name="q_1"> 
    Ford Explorer <br /> 
    <input type="radio" value="0" name="q_1"> 
    Plymouth Voyager <br /> 

혼다 어코드는 테이블 question_choices의 '선택'열에서 파생됩니다. value = "1"은 'is_right_choice'열에 의해 결정되고 user_question_answer 테이블의 'is_right'열에 채워집니다. 이것이 좋은 생각 인 것 같습니까?

다른 조언이 있으면 크게 환영 할 것입니다. 미리 감사드립니다.

+0

나는 그렇게 생각하지 않는다. 그러면 사용자는 올바른 선택에 대한 힌트를 얻을 수 있습니다. 아니면 내가 잘못 알았 니? – glglgl

답변

1

HTML 소스를 보는 사람이라면 어느 것이 옳은 대답인지 파악할 수있는 좋은 생각이 아닙니다. 다른 한편으로는이 서버 측에서 스키마에있는 모든 정보를 가지고 있습니다 (그리고 응답을 보호하십시오).

질문 시간

내가 (당신이 말을하지 않습니다) 한 페이지에 모든 퀴즈 질문을 표시하려는 같은데요. 양식을 기본 quiz.php 페이지로 다시 게시하고 싶습니다. (<form method="post" action="quiz.php" />)

quiz.php은 퀴즈를 처리 할 수 ​​있으므로 양식에 퀴즈 ID를 삽입해야하므로 결과를 처리 할 때 어떤 퀴즈가 응답하는지 확인할 수 있습니다. <input type="hidden" name="quizid" value="1" /> (퀴즈 # 1이라고 가정)을 시도하십시오.

또한 ID에서 주문으로 전환 할 때 데이터베이스에서 질문을 가져 오는 순서에 대해 명시해야합니다. 따라서 퀴즈가 10 개일 경우 첫 번째 ID가 11, 마지막 ID 21은 1-10 번 질문이 될 것입니다.) 이것은 SQL 문에서 order by id에 의해 쉽게 처리됩니다.

질문의 출력은 괜찮습니다, 무전기 은 모든 값이 고유해야합니다 .. question_choices에서 선택의 ID해야하며 정답입니다 코드에서 명확하지 않다. 처리 할 때 실제로 질문 (대답하지 않음)을 얻는 답일 때 a_<#>으로 요소의 이름을 바꾸는 것이 좋습니다. fieldset (가독성을 위해)에 질문 + 선택 사항을 둘러 볼 수 있습니다.

<fieldset> 
    <b>What was the make/model of my first car?</b><br /> 
    <input type="radio" value="214" name="a_1">Toyota Camry <br /> 
    <input type="radio" value="215" name="a_1">Honda Accord <br /> 
    <input type="radio" value="216" name="a_1">Ford Explorer <br /> 
    <input type="radio" value="217" name="a_1">Plymouth Voyager <br /> 
</fieldset> 

제출시 모든 질문에 대해 적어도 하나의 옵션이 선택되어 있는지 확인합니다 (답변이 답변이 아닌 경우 제외) ... 사용자가 실수로 반 기입 된 양식을 제출할 수 없습니다. enter를 누르거나 질문을 놓 쳤기 때문에).

응답 시간 quiz.php에서

그래서 우선 $_POST["quizid"]를 잡아 데이터베이스에서 관련 질문과 question_choices를로드하는 것입니다.

다음으로 각 답변 (1 -> n, n은 질문의 수)을 반복하고 이들을 question.ID 값으로 매핑합니다.

$_POST["a_#"] (# = 1-n)의 값을 비교하여 사용자가 선택한 question_choice ID를 확인하십시오. user_question_answer에 직접 삽입 할 수 있습니다.

당신은 또한 해당 테이블에 is_right를 저장하려는 경우 당신은 이후 user_question_answer에서 is_right을 제거하여 더 정상화 수 is_right_choice은 실제로 두 번이 데이터를 저장하고 {설정되어 있는지 question_choice에 대해 이러한 ID를 확인해야합니다 이미 답변 (choice_id에)을 question_choices에 매핑하고 올바른 답변인지 확인하십시오.

이제 끝났습니다.

+0

와우! 자세한 답변을 주셔서 감사합니다. 정말 고맙습니다! 나는 아직 PHP/SQL에 대한 탐험의 시작 단계에 있으며 네 가지 대답 선택에서 '이름 = a_1'의 기능을 이해하는데 어려움을 겪고있다. 요소의 이름을 a_ <#>으로 바꿀 것을 제안하셨습니까? 어떤 요소를 참고 하시겠습니까? 다시 한번 고마워요! 나는 질문 섹션을 이해하고 여전히 대답 섹션 주위에 내 머리를 잡으려고 ... – Abundnce10

관련 문제