Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP- Psychotest, Multiple Choice, Quiz

Einklappen

Neue Werbung 2019

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

  • PHP- Psychotest, Multiple Choice, Quiz

    Benötige Hilfe bei der Anpassung eines superkleinen Quiz-Scripts. Folgende Funktionen sollen ergänzt werden:
    1.) Rückmeldung, falls der User eine Frage ausgelassen hat.
    2.) Berechnung des Wertes nach dieser Formel: Zwischenwert (32 - B),
    Summe (A + Zwischenwert), Wert (Summe : 21)
    Woraus hervorgeht, dass es Fragen in zwei Kategorien gibt (A und B), die unterschiedlich gewichtet werden.

    Hier das anzupassende Script (die Auswertung):
    PHP-Code:
    <?
    // This script determines the results of the quiz
    // and displays them to the user


    $quiz = $_GET['quiz'];
    $quizfile = $quiz.".qz";

    include($quizfile);


    // Add up each question's answers
    for ($i=1; $i<=$questions; $i+=1)
    {
        $qvar = "q_$i";
        tally ($_POST[$qvar]);
    }

    // Determine the dominant answer type
    $dominant = 1;
    $domval = $nowval[1];
    for ($i=2; $i<=$types; $i+=1)
    {
        if ($domval < $nowval[$i])
        {
            $dominant = $i;
            $domval = $nowval[$i];
        }
    }

    // 
    function tally ($question)
    {    
        global $nowval;
        $nowval[$question]++;
    }
    ?>
    <h2>Ihr errechneter Wert:</h2>
    <?
    echo $type[$dominant-1];
    Hier wird das Formular gezeigt:
    PHP-Code:
    <?
    // This script displays the quiz selected



    $quiz = $_GET['quiz'];
    $quizfile = $quiz.".qz";

    include($quizfile);

    ?>

    <form action="quizresults.php?quiz=<? echo $quiz ?>" method=post>
    <table border=0 width="100%">
    <?

    // Show all the questions and allow the user to select answers
    for ($i=0; $i<$questions; $i+=1)
    {
    ?>
        <tr>
          <td colspan=2 bgcolor="#999999"><font color="#000000"><? echo $question[$i]; ?></font></td>
        </tr>
    <?
        for ($j=0; $j<$types; $j+=1)
        {
    ?>
            <tr>
                <td valign=top width=1><input type="radio" name="q_<? echo $i+1; ?>" value="<? echo $j+1; ?>">
                <td><? echo $answer[$i][$j]; ?></td>
            </td></tr>
    <?
        }
    }
    ?>
    </TABLE>
    <BR><BR>
    <input type="submit" value="Give me my results!"></center>
    </form>
    <?
    Die zugehörigen Fragen .qz
    PHP-Code:
    <?
    $title="burnout";

    $types="7";
    $questions="3";

    $type[0] = "Ihr errechneter Wert liegt zwischen 2 und 3. Es geht es Ihnen gut. Work-Life-Balancing bietet Ihnen interessante Anregung zur Gesundheitsvorsorge.";
    $type[1] = "Ihr errechneter Wert liegt 3 und 4. Erleben Sie Ausbrennen und Überdruss und müssen unbedingt etwas dagegen unternehmen. Work-Life-Balancing ist das passgenaue Angebot für Ihre Burnout-Prävention.";
    $type[2] = "Ihr errechneter Wert liegt höher als 5. Ihre Krise ist akut und Sie benötigen dringend Hilfe. Work-Life-Balancing wird für Sie möglicherweise nur eingeschränkt von Nutzen sein. Rufen Sie uns für ein persönliches Gespräch diesbezüglich gerne an.";


    $question[0] = "Ich bin m&uuml;de";
    $answer[0][0] = "niemals";
    $answer[0][1] = "fast niemals";
    $answer[0][2] = "selten";
    $answer[0][3] = "manchmal";
    $answer[0][4] = "oft";
    $answer[0][5] = "meistens";
    $answer[0][6] = "immer";

    $question[1] = "Ich habe einen guten Tag";
    $answer[1][0] = "niemals";
    $answer[1][1] = "fast niemals";
    $answer[1][2] = "selten";
    $answer[1][3] = "manchmal";
    $answer[1][4] = "oft";
    $answer[1][5] = "meistens";
    $answer[1][6] = "immer";

    $question[2] = "Ich bin bla bla";
    $answer[2][0] = "niemals";
    $answer[2][1] = "fast niemals";
    $answer[2][2] = "selten";
    $answer[2][3] = "manchmal";
    $answer[2][4] = "oft";
    $answer[2][5] = "meistens";
    $answer[2][6] = "immer";

    ?>
    ...und Results .rsl
    PHP-Code:
    0|1|2

    Hilfsangebote sind willkommen

  • #2
    Sind meine Fragen unverständlich?

    Kommentar


    • #3
      zu 1: Da musst du eben alle Fragen durchgehen und überprüfen ob sie beantwortet sind, wenn nicht -> Fehler ausgeben!

      PHP-Code:
      <?php
      $fehler 
      false;
      foreach (
      $fragen as $frage) {
          if (...) { 
      // wenn Frage NICHT beantwortet wurde
              
      $fehler true;
          }
      }

      if (
      $fehler === true) {
          
      // User hat eine oder mehrere Fragen ausgelassen
      }

      zu 2: Das ist doch nicht so schwer eine Formel zu berechnen, ich mach es hier mal als Funktion:
      PHP-Code:
      <?php
      function calc_result($a$b) {
          return ((
      32 B) / 21);
      }

      Kommentar

      Lädt...
      X