Ankündigung

Einklappen
Keine Ankündigung bisher.

Wenn ... dann PHP Script

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wenn ... dann PHP Script

    Hi Leute,

    ich möchte, dass wenn du Antwort der Frage richtig beantwortet wird die XP Punkte in der Datenbank +1 gerechnet werden. Aber mit dem jetzigen Code wird schon beim laden der Seite die Punkte +1 gerechnet.
    Wie kann ich das umsetzten, dass erst wenn man auf den Button drückt, die Antworten überprüft werden und die Antwort richtig ist die XP Punkte hochgerechnet werden?

    Mein jetziger Code:


    PHP-Code:
    <?php
      session_start
    ();
      if(!isset(
    $_SESSION["email"])){
        
    header("Location: ../../noLogin.php");
        exit;
      }
      if(
    $_SESSION["job"] != "T"){
        
    header("Location: ../../Dashboard.php");
        exit;
      }
      if(
    $_SESSION["tecvid"] != "true"){
        
    header("Location: ../../Dashboard.php");
        exit;
      }
      require(
    "../../mysql.php");
    ?>

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="description" content="">
        <meta name="author" content="">
        <!-- Favicon-->
        <link rel="icon" type="image/x-icon" href="../../img/Logo_icon.ico" />
        <title>Talebe Ders</title>
        <!-- Bootstrap core CSS -->
        <link href="../../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <!-- Custom styles for this template -->
        <link href="../../css/full-width-pics.css" rel="stylesheet">
      </head>
      <body>
        <!-- Navigation -->
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
          <div class="container">
            <a class="navbar-brand" href="../../index.php">Talebe Ders</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarResponsive">
              <ul class="navbar-nav ml-auto">
                <li class="nav-item active">
                  <a class="nav-link" href="../../Dashboard.php">Dashboard
                    <span class="sr-only">(current)</span>
                  </a>
                </li>
                <li class="nav-item">
                  <a class="nav-link" href="../../about.html">About</a>
                </li>
                <li class="nav-item">
                  <a class="nav-link btn btn-danger" href="../../logout.php">Oturumu Kapat</a>
                </li>
              </ul>
            </div>
          </div>
        </nav>
        <!-- Content section -->
        <section class="py-5">
            <div class="container">
                <h1>Med Bahsı</h1>
            </div>
        </section>



        <?php
          $stmt 
    $mysql->prepare("SELECT * FROM t_med ORDER BY RAND()");
          
    $stmt->execute();
          
    $count $stmt->rowCount();
          
    $row $stmt->fetch();
          
    $sorular = array();
          while(
    $row $stmt->fetch()){
            
    array_push($sorular$row["FRAGE"], $row["ANTWORT1"], $row["ANTWORT2"], $row["ANTWORT3"], $row["ANTWORT4"]);
          }
          
    //shuffle ($sorular[1]);
          //print_r($sorular);
          
    $i 0;
          
    $a1 $i 1;
          
    $a2 $i 2;
          
    $a3 $i 3;
          
    $a4 $i 4;
          
    /*print_r($a1);
          print_r($a2);
          print_r($a3);
          print_r($a4); */
          
    $answer_options = array($sorular[$a1], $sorular[$a2], $sorular[$a3], $sorular[$a4]);
          
    shuffle($answer_options);

          
    /*
          //random answers
          $answer_options = array("ANTWORT1", "ANTWORT2", "ANTWORT3", "ANTWORT4");
          shuffle ($answer_options);

          for($i = 0; $arrayDBQuestions[$i] = $stmt->fetch(); $i++);
          print_r($arrayDBQuestions);*/

          //echo $i . " - " . $a1 . " - " . $a2 . " - " . $a3  . " - " . $a4;


        
    ?>

        <div class="container alert alert-primary" role="alert">
          <h4 class="alert-heading">Soru</h4>
          <hr>
          <div class="shadow p-3 mb-5 bg-white rounded" id="answercolour">
            <p id="FRAGE" class="mb-0 p-question"> <?php print_r($sorular[$i]); ?></p>
          </div>

          <form class="form-check">
            <div class="form-check">
              <input class="form-check-input" type="radio" name="selectedRadios" id="radio1" value="option1">
              <label class="form-check-label" for="exampleRadios1" id="answer1">
              <?php print_r($answer_options[0]); ?>
              </label>
            </div>
            <div class="form-check">
              <input class="form-check-input" type="radio" name="selectedRadios" id="radio2" value="option1">
              <label class="form-check-label" for="exampleRadios1" id="answer2">
              <?php print_r($answer_options[1]); ?>
              </label>
            </div>
            <div class="form-check">
              <input class="form-check-input" type="radio" name="selectedRadios" id="radio3" value="option1">
              <label class="form-check-label" for="exampleRadios1" id="answer3">
              <?php print_r($answer_options[2]); ?>
              </label>
            </div>
            <div class="form-check">
              <input class="form-check-input" type="radio" name="selectedRadios" id="radio4" value="option1">
              <label class="form-check-label" for="exampleRadios1" id="answer4">
              <?php print_r($answer_options[3]); ?>
              </label>
            </div>
            <div class="rightDIV">
              <button type="button" class="btn btn-primary rightButton" onclick="checkAnswer()">Devam ➔</button>
            </div>
          </form>
        </div>


        <!-- Bootstrap core JavaScript -->
        <script src="../../vendor/jquery/jquery.min.js"></script>
        <script src="../../vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

        <script type="text/javascript">
          let answercolour0js = document.getElementById("answercolour");
          let answercolour1js = document.getElementById("answer1");
          let answercolour2js = document.getElementById("answer2");
          let answercolour3js = document.getElementById("answer3");
          let answercolour4js = document.getElementById("answer4");
          //radio def
          let radio1 = document.getElementById("radio1");
          let radio2 = document.getElementById("radio2");
          let radio3 = document.getElementById("radio3");
          let radio4 = document.getElementById("radio4");
          //answer def
          let answer1 = document.getElementById("answer1");
          let answer2 = document.getElementById("answer2");
          let answer3 = document.getElementById("answer3");
          let answer4 = document.getElementById("answer4");
          var rowANTWORT1 = <?php echo json_encode($sorular[$a1]); ?>;

          var checked = 0;
          var ansOk = false;
          function checkAnswer() {
            if(checked == 0){
              checked = 1;

              console.log ("Checked auf 1 gesetzt!");
              if(radio1.checked == true){
                if(answer1.innerText == rowANTWORT1){
                  answercolour0js.classList.add("green-background");
                  answercolour1js.classList.add("green-background");
                  learnPoint();
                }else{
                  answercolour0js.classList.add("red-background");
                  answercolour1js.classList.add("red-background");
                  if(answer2.innerText == rowANTWORT1){
                    answercolour2js.classList.add("green-background");
                  }else if(answer3.innerText == rowANTWORT1){
                    answercolour3js.classList.add("green-background");
                  }else if(answer4.innerText == rowANTWORT1){
                    answercolour4js.classList.add("green-background");
                  }
                }
              }else if(radio2.checked == true){
                if(answer2.innerText == rowANTWORT1){
                  answercolour0js.classList.add("green-background");
                  answercolour2js.classList.add("green-background");
                  learnPoint();
                }else{
                  answercolour0js.classList.add("red-background");
                  answercolour2js.classList.add("red-background");
                  if(answer1.innerText == rowANTWORT1){
                    answercolour1js.classList.add("green-background");
                  }else if(answer3.innerText == rowANTWORT1){
                    answercolour3js.classList.add("green-background");
                  }else if(answer4.innerText == rowANTWORT1){
                    answercolour4js.classList.add("green-background");
                  }
                }
              }else if(radio3.checked == true){
                if(answer3.innerText == rowANTWORT1){
                  answercolour0js.classList.add("green-background");
                  answercolour3js.classList.add("green-background");
                  learnPoint();
                }else{
                  answercolour0js.classList.add("red-background");
                  answercolour3js.classList.add("red-background");
                  if(answer1.innerText == rowANTWORT1){
                    answercolour1js.classList.add("green-background");
                  }else if(answer2.innerText == rowANTWORT1){
                    answercolour2js.classList.add("green-background");
                  }else if(answer4.innerText == rowANTWORT1){
                    answercolour4js.classList.add("green-background");
                  }
                }
              }else if(radio4.checked == true){
                if(answer4.innerText == rowANTWORT1){
                  answercolour0js.classList.add("green-background");
                  answercolour4js.classList.add("green-background");
                  learnPoint();
                }else{
                  answercolour0js.classList.add("red-background");
                  answercolour4js.classList.add("red-background");
                  if(answer1.innerText == rowANTWORT1){
                    answercolour1js.classList.add("green-background");
                  }else if(answer2.innerText == rowANTWORT1){
                    answercolour2js.classList.add("green-background");
                  }else if(answer3.innerText == rowANTWORT1){
                    answercolour3js.classList.add("green-background");
                  }
                }
              } else {
                alert("Cevaplardan birini seç!");
                checked = 0;
                console.log ("No answer, checked new 0!");
              }
            }else if(checked == 1){
              console.log ("Answer is there, checked is on 1!");
              //questions color del
              answercolour0js.classList.remove("green-background");
              answercolour0js.classList.remove("red-background");
              //answer color del
              answercolour1js.classList.remove("green-background");
              answercolour1js.classList.remove("red-background");
              answercolour2js.classList.remove("green-background");
              answercolour2js.classList.remove("red-background");
              answercolour3js.classList.remove("green-background");
              answercolour3js.classList.remove("red-background");
              answercolour4js.classList.remove("green-background");
              answercolour4js.classList.remove("red-background");
              /*
              radio1.checked = false;
              radio2.checked = false;
              radio3.checked = false;
              radio4.checked = false;*/

              location.reload();
              //changeText();

              //checked = 0;
              //console.log ("Checked auf 0 gesetzt! 000");
            }
          }
          function learnPoint(){
            <?php
            $_SESSION
    ["xp"]++;

            require(
    "../../mysql.php");
            
    $xpUpdate $mysql->prepare("UPDATE account SET XP = :xp WHERE P_ID = :p_id");
            
    $xpUpdate->bindParam(":p_id"$_SESSION["p_id"]);
            
    $xpUpdate->bindParam(":xp"$_SESSION["xp"]);
            
    $xpUpdate->execute();
            
    ?>
          }
          function answerWasCorrect(){

          }
          function changeText(){

            <?php
              $i 
    += 5;
              
    $a1 += 5;
              
    $a2 += 5;
              
    $a3 += 5;
              
    $a4 += 5;
              
    $answer_options = array($sorular[$a1], $sorular[$a2], $sorular[$a3], $sorular[$a4]);
              
    shuffle($answer_options); ?>
            let frage = document.getElementById("FRAGE");
            frage.innerHTML = "<?php print_r($sorular[$i] . "   "); echo $i;?>";
            answer1.innerHTML = "<?php print_r($sorular[$i += 1] . "   "); echo $a1?>";
            answer2.innerHTML = "<?php print_r($sorular[$i += 1] . "   "); echo $a2?>";
            answer3.innerHTML = "<?php print_r($sorular[$i += 1] . "   "); echo $a3?>";
            answer4.innerHTML = "<?php print_r($sorular[$i += 1] . "   "); echo $a4?>";

            rowANTWORT1 = <?php echo json_encode($sorular[$a1]); ?>;
            console.log(rowANTWORT1);

          }
        </script>
      </body>
      <!-- Footer -->
      <footer class="py-5 bg-dark">
        <div class="container">
          <p class="m-0 text-center text-white">&copy; 2021 Talebe Ders</p>
        </div>
        <!-- /.container -->
      </footer>
    </html>

    Danke, im Voraus!

  • #2
    Du hast hier ein grundlegendes Verständnisproblem.

    PHP läuft auf dem Server, JavaScript im Browser. Das heisst wenn du auf Dein Script zugreifst wird aller PHP-Code abgearbeitet und an Deinen Browser geschickt. Deshalb wird auch bereits die Punkte hochgerechnet wenn du die Seite aufrufst.

    Was du tun musst:
    - PHP und JavaScript nicht mischen. Mit PHP generierst du die Seite, JavaScript kommt in eine separate Datei.
    - Wenn du etwas speichern willst machst du per JavaScript einen Request an ein PHP-Script welches dann die Datenbank updated. Stichwort dazu ist AJAX. Oder die Fetch-API.

    Kommentar


    • #3
      Sehr vielen, Dank für deine schnelle Antwort!
      Ich werden mir dann AJAX anschauen!

      Kommentar

      Lädt...
      X