Webbserv1: Källkod
Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

webbsrvprg/projects/quiz/

quiz.php
quiz_create.php
quiz_created.php
quiz_home.php
quiz_login.php
quiz_results.php
quiz_signup.php

quiz.php

271 lines UTF-8 Windows (CRLF)
<?php
session_start
();
?>
<!doctype html>
<html>
<style>
  .red {
    accent-color: red;
  }
  .green {
    accent-color: green;
  }
</style>
<body>
<?php
  
if (!isset($_SESSION["question"])) {
    
$_SESSION["question"] = 0;
  }
include (
'../../dbconnection.php');
$message null;
    
$user $_SESSION['user'];

?>

<form method="POST" action="">
  <?php
  
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (!isset(
$_SESSION["quiz"])) {
      
$_SESSION["quiz"] = $_POST["quizChoice"];
      
$_SESSION["question_id"] = array();
      
$_SESSION["qCorrect"] = 0;
      
$quiz $_SESSION["quiz"];

      
$sql "SELECT * FROM quiz WHERE id='$quiz'";
      
$stmt $dbconn->prepare($sql);
      
$data = array();
      
$stmt->execute($data);
      
$res $stmt->fetch(PDO::FETCH_ASSOC);
      
$_SESSION["qAmount"] = htmlentities($res['quizAmount']);

      
$sql "SELECT * FROM questions WHERE quizid='$quiz'
              ORDER BY id ASC"
;
      
$stmt $dbconn->prepare($sql);
      
$data = array();
      
$stmt->execute($data);
      while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
        
$_SESSION["question_id"][] = htmlentities($res['id']);
      }

      
$sql "SELECT * FROM answers WHERE quizid='$quiz'
              ORDER BY id ASC"
;
      
$stmt $dbconn->prepare($sql);
      
$data = array();
      
$stmt->execute($data);
      while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
        
$_SESSION["answer_id"][] = htmlentities($res['id']);
      }


    }
    else {
      if (isset(
$_SESSION["question"]) && isset($_POST["question"])) {

        
$questionId $_SESSION["questionC"];
        
$_SESSION["qAnswer".$_SESSION["question"]] = $_POST["question"];

        
$sql "SELECT * FROM answers WHERE questionId='$questionId' AND correct='1'";
        
$stmt $dbconn->prepare($sql);
          
        
$data = array();  
        
$stmt->execute($data);
        
$res $stmt->fetch(PDO::FETCH_ASSOC);
        
$hej htmlentities($res["id"]);
        if (
$hej%== $_POST["question"]) {
          
$_SESSION["qCorrect"] += 1;
        }
    }

    }
    
$answers = array();
    
$_SESSION["question"] += 1;

    if (
$_SESSION["question"] >= $_SESSION["qAmount"]+1) {
      echo 
"Du hade ".$_SESSION["qCorrect"]." rätt: <a href='quiz_home.php'>Tillbaka till startsidan</a><br><br>";

      
$correctAmount $_SESSION["qCorrect"];
      
$user $_SESSION["user"];
      
$sql "SELECT * FROM quizusers WHERE user ='$user'";
      
$stmt $dbconn->prepare($sql);
      
$data = array();
      
$stmt->execute($data);

      
$res $stmt->fetch(PDO::FETCH_ASSOC);

      
$userId htmlentities($res["id"]);
      
$quizId $_SESSION["quiz"];

      
$sql "SELECT * FROM results WHERE userId ='$userId' AND quizId = '$quizId'";
      
$stmt $dbconn->prepare($sql);
      
$stmt->execute();
      
$count $stmt->fetchColumn();

      if (
$count 0) {
        
$sql "SELECT * FROM results WHERE userId ='$userId' AND quizId = '$quizId'";
        
$stmt $dbconn->prepare($sql);
        
$stmt->execute();
        
$res $stmt->fetch(PDO::FETCH_ASSOC);
        if (
htmlentities($res["correctAmount"]) < $_SESSION["qCorrect"]) {
          
$sql "UPDATE results SET correctAmount=?
          WHERE userId=?"
;
          
$stmt $dbconn->prepare($sql);
          
$data = array($correctAmount$userId);
          
$stmt->execute($data);
            
          
$message .= "<br />Record updated successfully.<br />";
        }
      } else {
        
$sql "INSERT INTO results (userId, quizId, correctAmount) 
        VALUES (?, ?, ?)"
;
        
$stmt $dbconn->prepare($sql);
        
$data = array($userId$_SESSION["quiz"], $_SESSION["qCorrect"]);
        
$stmt->execute($data);
      }

      
$sql "SELECT results.*, quizusers.user 
              FROM results 
              INNER JOIN quizusers ON results.userId = quizusers.id 
              WHERE results.quizId = '
$quizId
              ORDER BY results.correctAmount DESC"
;
      
$stmt $dbconn->prepare($sql);
  
      
$data = array();  
      
$stmt->execute($data);
      
$output "<table><caption>Resultat</caption><td>Spelare</td>".
      
"<td>Antal rätt</td>";
      while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
          
$output .= "<tr>".
              
"<td>".htmlentities($res['user'])."</td>".
              
"<td>".htmlentities($res['correctAmount'])."</td>".
          
"</tr>";
      }
  
      
$output .= "</table>";
      echo 
$output;
      
?>
      <br><br>
      <h3>Dina svar</h3>
      <input type="radio" class="green" checked> = Rätt svar
      <input type="radio" class="red" checked> = Fel svar
      <?php
      $sql 
"SELECT * FROM questions WHERE quizId='$quizId'";
      
$stmt $dbconn->prepare($sql);
      
$stmt->execute();
      
$questions $stmt->fetchAll(PDO::FETCH_ASSOC);

      for (
$u 1$u <= $_SESSION["qAmount"]; $u++){

        
$question $questions[$u 1]; 
        
$questionId htmlentities($question["id"]);
        
          echo 
"<p>".htmlentities($question["question"])."</p>";
          
$answers = array();
          
$correct = array();

          
$sql "SELECT * FROM answers WHERE questionId='$questionId'";
          
$stmt $dbconn->prepare($sql);
  
          
$data = array();
          
$stmt->execute($data);

          while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
            
$answers[] = htmlentities($res["answer"]);
            
$correct[] = htmlentities($res["correct"]);
          }
          
?>
          <input type="radio" id="1" value="1" <?php 
          
if ($correct[0] == 1) {
            echo 
"class='green' checked";
          }
          elseif (
$_SESSION["qAnswer".$u] == 1) {
            echo 
"class='red' checked";
          }
?>>
          <label for="1"><?php echo $answers[0?></label><br><br>
          <input type="radio" id="1" value="2" <?php 
          
if ($correct[1] == 1) {
            echo 
"class='green' checked";
          }
          elseif (
$_SESSION["qAnswer".$u] == 2) {
            echo 
"class='red' checked";
          }
?>>
          <label for="2"><?php echo $answers[1?></label><br><br>
          <input type="radio" id="1" value="0" <?php 
          
if ($correct[2] == 1) {
            echo 
"class='green' checked";
          }
          elseif (
$_SESSION["qAnswer".$u] == 0) {
            echo 
"class='red' checked";
          }
?>>
          <label for="3"><?php echo $answers[2?></label><br><br>    
          <?php 
    
}}
    else {
    
    
?>
    <p><?php
        
global $questionId;
        
$questionId $_SESSION["question_id"][$_SESSION["question"]-1];
        
$_SESSION["questionC"] = $questionId;
        
$sql "SELECT * FROM questions WHERE id='$questionId'";
        
$stmt $dbconn->prepare($sql);
        
        
$stmt->execute();
        
        
$res $stmt->fetch(PDO::FETCH_ASSOC); echo htmlentities($res['question']);?></p>
    
    <?php 
        $sql 
"SELECT * FROM answers WHERE questionId='$questionId'
                ORDER BY id ASC"
;
        
$stmt $dbconn->prepare($sql);
        
        
$data = array();
        
$stmt->execute($data);

        while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
          
$answers[] = htmlentities($res["answer"]);
        }
    
?>
   <input type="radio" id="1" value="1" name="question" required>
    <label for="1"><?php echo $answers[0?></label><br><br>
   <input type="radio" id="1" value="2" name="question">
    <label for="2"><?php echo $answers[1?></label><br><br>
   <input type="radio" id="1" value="0" name="question">
    <label for="3"><?php echo $answers[2?></label><br><br>

    <?php
    
}
  }
  if (!isset(
$_SESSION["quiz"])) {
    
?>
    Välj quiz: 
    <select name="quizChoice">
      <?php
        $sql 
"SELECT * FROM quiz";
        
$stmt $dbconn->prepare($sql);
  
        
$stmt->execute();
  
        while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
          
?>
          <option value="<?php echo htmlentities($res['id']);?>"><?php echo htmlentities($res['quizName']);?></option>
          <?php
        
}
      
?>
    </select>
    <?php
  
}
      
      if (!isset(
$_SESSION["quiz"]) || $_SESSION["question"] < $_SESSION["qAmount"]+1) {
    
?>
    <input type="submit" value="Nästa">

    <?php
    
}
    
?>
</form>
<?php 

?>

</body>
</html>