2012-10-12 3 views
1

이 코드를 사용하면 b c d 또는 b 답변이있는 경우 어떻게 라디오 나 체크 박스를 울릴 수 있습니까? 내 퀴즈에서 b c d와 a (true) b (false)가 될 것입니다. 내 퀴즈를 끝내려면이 작업을 끝내지 못하게하는 유일한 방법입니다. 제 질문이 그다지 중요하지 않을 수도 있지만 제가 한 짓에 가깝게 물어 보려고했습니다. 어떤 도움을 주셔서 감사합니다.이 에코를 어떻게 작동시킬 수 있습니까?

<?php 
    //retreive questions from database and put into question box 

    $query2 = "SELECT `QuestionId`, `Question`, `Opt1`, `Opt2`, `Opt3`, `Opt4`,`Answer` FROM `pf_questions`"; 

    $question2 = mysql_query($query2); 

    while($row = mysql_fetch_array($question2)){ 

     $id   = $row['QuestionId']; 
     $question = $row['Question']; 
     $opt1  = $row['Opt1']; 
     $opt2  = $row['Opt2']; 
     $opt3  = $row['Opt3']; 
     $opt4  = $row['Opt4']; 
     $answer  = $row["Answer"]; 




    ?> 
    <div id="ContainerQuestion"> 
     <span class="Question">Question <?php echo $id; ?>. <?php echo $question; ?></span> 

      <p><input type=radio name='q<?php echo $id; ?>' <?=($answer == 'a')?("checked='checked'"):(""); ?> value="a"> <?php echo $opt1; ?> </p> 
      <p><input type=radio name='q<?php echo $id; ?>' <?=($answer == 'b')?("checked='checked'"):(""); ?> value="b"> <?php echo $opt2; ?> </p> 
      <p><input type=radio name='q<?php echo $id; ?>' <?=($answer == 'c')?("checked='checked'"):(""); ?> value="c"> <?php echo $opt3; ?> </p> 

      <p><input type=radio name='q<?php echo $id; ?>' <?=($answer == 'd')?("checked='checked'"):(""); ?> value="d"> <?php echo $opt4; ?> </p> 


    </div> 
    <?php 
    } 

    ?> 
+4

새 코드를 작성하는 데 mysql_ * 함수를 사용하지 마십시오. 더 이상 유지 관리되지 않으며 커뮤니티가 [지원 중단 프로세스] (http://goo.gl/KJveJ)를 시작했습니다. * [빨간색 상자] (http://goo.gl/GPmFd) *를 참조하십시오. 대신 [prepared statements] (http://goo.gl/vn8zQ)에 대해 알아야하고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용해야합니다. mysqli). 어떤 것을 결정할 수 없다면 [이 기사] (http://goo.gl/3gqF9)가 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 가이드입니다] (http://goo.gl/vFWnC). [PHP에서 mysql_ * 함수를 사용해야하는 이유는 무엇입니까?] (http://stackoverflow.com/q/12859942/871050) –

+0

Opt3와 Opt4가있는 경우 두 개의 라디오 버튼 만 표시하려고합니까? 필드가 비어 있습니까? – jedwards

+0

@jedwards 예 질문에 a b c d가있는 경우 네 개의 선택 사항과 함께 질문을 표시하고 질문에 b가 있으면 c d가 나타나야합니다. 그래서 Opt3 & Opt4 필드에 대한 질문에 yes가 비어 있습니다. –

답변

0

나는 당신이 무엇을 요구하고 있는지 이해하고 있다고 생각합니다. "if"절에 각 행을 래핑하려고합니다. 예를 들어 :

<?php if(isset ($opt3)) { ?> 

<p><input type=radio name='q<?php echo $id; ?>' <?=($answer == 'c')?("checked='checked'"):(""); ?> value="c"> <?php echo $opt3; ?> </p> 

<?php } 
     if(isset ($opt4)) { ?> 

<p><input type=radio name='q<?php echo $id; ?>' <?=($answer == 'd')?("checked='checked'"):(""); ?> value="d"> <?php echo $opt4; ?> </p> 

<?php } ?> 

다소 추한 해킹은했지만 작동해야하며, 당신은 아이디어를 얻을.

+0

빈 문자열은 null이 아니며'isset()'에 전달 될 때'TRUE'를 반환해야합니다. – jedwards

+0

나는 데이터베이스에서 NULL 필드가 자신이 가지고있는 것임을 가정했다. 그렇지 않으면 if 문 안에'&& ($ opt3)'를 추가하여 공백이 아닌지 확인하십시오. –

+0

@user16081 나는 또한 내 게시물에 대한 귀하의 의견을 보내 주신 모든 분들께 감사 드리고 싶습니다. –

0

나는 아마 다음과 같은 (테스트되지 않은) 같은 것을 사용하여 while 루프를 대체 할 것 :

$answerFields = array('Opt1'=>'a', 'Opt2'=>'b', 'Opt3'=>'c', 'Opt4'=>'d'); 

while($row = mysql_fetch_array($question2)){ 
    $id   = $row['QuestionId']; 
    $question = $row['Question']; 

    // Print Question 
    printf('<div id="ContainerQuestion">'); 
    printf('<span class="Question">Question %s. %s</span>', $id, $question); 

    // Print Answers 
    foreach($answerFields as $field=>$ans) 
    { 
     if(array_key_exists($field, $row) && $row[$field]) 
     { 
      $checked = ($row["Answer"] == $ans) ? 'checked' : ''; 
      printf('<p><input type="radio" name="%s" %s value="%s">%s</p>', 
       $id, $checked, $ans, $row[$field]); 
     } 
    } 
} 
데이터베이스 (등 OPT1, 수신 거부 등)에 대한 응답 필드가 설정되어 있지 않은 경우

, 또는 빈 응답이 포함 된 <p>은 인쇄되지 않아야합니다.

이 솔루션을 사용하면 3/4 응답이 채워지고 1/4이 비어있는 경우까지 응용 프로그램을 확장 할 수 있습니다. 또한 인라인 PHP와 HTML 사이에서 호핑하는 대신 printf 문을 사용하여 코드를 약간 정리합니다.

마지막으로, 준비된 진술에 대한 중요한 주석을 지적하는 의무 사항.

+0

도움을 주셔서 감사합니다. 또한 제출할 때 어떻게 만들 수 있습니까? 그것은 질문과 대답 및 옳은 대답으로 내 이메일에 결과를 보냅니다. 예 : 조 Doe 퀴즈 결과 1. 질문 - 답변 : A. 참 또는 C. 코딩 사람 - 정답 : B. 거짓 또는 C : 코딩 사람. 어쩌면 당신은 10 분의 20 권리가 있어요. 내가 무슨 뜻인지 안다면. –

+0

오, 그 사람은 완전히 별개의 질문입니다. 이 방법이 효과가 있었다면 저희에게 알려 주시고 ['mail()'] (http : // php.net/manual/en/function.mail.php) 함수를 사용하고 문제가 생기면 여기에서 별도의 질문을 만듭니다. – jedwards

+0

도움을 사용하여 도와 주셔서 감사합니다. 올바르게 작동합니다. 다시 감사드립니다. 나는이 에이지에 대해 물어보기 전에 뭔가를 시험해 보겠습니다. "또한 제출할 때 어떻게 만들 수 있는가? 질문과 대답 및 올바른 대답으로 내 이메일에 결과를 전송합니다. 예 : Joe Doe quiz results 1. 질문 - 답변 : A. 참 또는 C. 코딩하는 사람 - 맞음 응답 : B. 거짓 또는 C : 코딩하는 사람. 아마도 10/20 오른쪽을 가졌을 것입니다. . " –

관련 문제