2012-09-18 4 views
1

저는 PHP를 처음 사용 했으므로 도움이 필요합니다. 나는 학생에게 맞는 점수를 줄 수없는 것 같습니다.올바른 점수 가져 오기 (PHP)

시나리오 :

  • 입력 학생 대답이 시험
  • 에 해당하는 포인트 시험에 대한

    • 입력 응답 (응답 키) 학생의 총 점수를 얻을.

    내 PHP 코드 :

    for ($count = 1; $count <= $num_ans; $count++) 
    { 
        $answer = $_POST['answer'][($count + 1) - 1]; 
        $sqlB = "SELECT * FROM paper WHERE id=$count and test_name = '$test_name' and subject='$subject'"; 
        $qryB = mysql_query($sqlB); 
        $rowB = mysql_fetch_array($qryB); 
        $anskey = $rowB['answer']; 
    } 
    if ($answer = $anskey) 
    { 
        $sqlA = "SELECT points FROM paper WHERE test_name = '$test_name' and subject='$subject' and answer='$answer'"; 
        $qryA = mysql_query($sqlA); 
        while ($rowA = mysql_fetch_array($qryA)) 
        { 
         $correctAns += $rowA['points']; 
        } 
    } 
    
  • +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). –

    +0

    조언을 주셔서 감사합니다. –

    +0

    @GrazielleLeotero, 간단한 PDO 예제가 필요하면 [my class] (https://github.com/Xeoncross/DByte)를 사용할 수 있습니다. – Xeoncross

    답변

    0

    내가 어떤 일을 데이터베이스 쿼리에없는 생각

    for ($count=1; $count<=$num_ans; $count++) {    
         $answer = $_POST['answer'][$count]; 
         $sqlB = "SELECT answer FROM paper WHERE id=$count and test_name = '$test_name' and subject='$subject'"; 
         $qryB = mysql_query($sqlB); 
         $rowB = mysql_fetch_array($qryB); 
         $anskey = $rowB['answer']; 
    
         if ($answer == $anskey) { 
         $sqlA = "SELECT points FROM paper WHERE test_name = '$test_name' and subject='$subject' and answer='$answer'"; 
         $qryA = mysql_query($sqlA); 
         //considering each unique answer would have specific points, while-loop is not required 
         //while($rowA = mysql_fetch_array($qryA)) { 
         $correctAns += $rowA['points']; 
         // } 
         } 
    } //end of for-loop 
    
    +0

    대답은 여전히 ​​0입니다. –

    +0

    여전히 동일한 결과입니다. 그것은 합쳐지지 않을 것입니다. 내가 얻은 점수는 여전히 0입니다. –

    +0

    '$ rowA [ 'points']'의 값은 무엇입니까? 어떤 오류가 있습니까? –

    0

    을 시도합니다.

    $query = "SELECT points FROM paper WHERE test_name = '$test_name' and subject='$subject' and answer='$answer'"; 
    $qryA = mysql_query($query); 
    while($rowA = mysql_fetch_array($qryA)) { 
        $correctAns += $rowA['points']; 
    } 
    

    확인하십시오 :

    $rowA['points'] = ??// if any value return from db or not. 
    

    SQL 쿼리 때문에, 대답 질문 아이디/(행의 독특한 무언가를) 통과하십시오 =이 실제 값을 백업 할 수 없습니다 그래서 '$의 대답은'중복 될 수 있습니다.

    희망하시는 분.

    +0

    $ rowA [ 'points']는 0을 반환합니다. –

    +0

    $ rowA [ 'points']는 데이터베이스 테이블 'paper'에있는 항목 당 주어진 지점의 열에 해당합니다. –