---
title: "pbsurvey mit anonymer Auswertung"
url: "https://www.typo3.net/d/80817-pbsurvey-mit-anonymer-auswertung"
source: "typo3.net"
tags: ["Extensions","Tipp"]
created: "2008-08-19"
last_reply: "2011-08-04"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# pbsurvey mit anonymer Auswertung

Extensions · 3 Antworten · gestartet 2008-08-19

## Eröffnungsbeitrag

**udohmen** · 2008-08-19 · [Beitrag #1](https://www.typo3.net/d/80817-pbsurvey-mit-anonymer-auswertung/1)

Hallo,

nachdem ich nun schon einige Dinge aus diesem Forum nutzen konnte, will ich auch selber etwas hergeben.

Ich habe ein Projekt realisiert, bei dem es darum ging, dass man einen Prüfbogen online ausfüllen kann, der von der Funktion ähnlich einem Führerscheinprüfbogen ist - der einzige Unterschied: es gibt ausschließlich multiple Choice Fragen.

Zunächst hatte ich überlegt, was eigenes in PHP zu schreiben, nach ein wenig Recherche bin ich aber auf pbsurvey gestossen, dass ich dann sofort auch nutzte.

Das Erstellen und Ausfüllen der Fragen ging relativ problemlos. Nachdem (fast) alles fertig war, fiel uns aber auf, dass wir gar keine richtige Auswertung hatten. Man konnte zwar per Scoring auf entsprechende Seiten umleiten, aber man konnte nicht angeben, ob der Nutzer eine Frage (und vor allem WELCHE) falsch beantwortet hat oder nicht. Und zusätzlich sollten dann noch die richtigen Antworten ausgegeben werden.

Dank dem Thread von nicokaiser: [/d/52798-dynamische-auswertungen-erstellen-mit-pbsurvey](https://www.typo3.net/d/52798-dynamische-auswertungen-erstellen-mit-pbsurvey) hatte ich zumindest schon mal eine Idee, wie ich das anpacken konnte. Seine Realisierung funktioniert aber nur mit echten Frontend-Usern (und bei mir aus irgendeinem Grund noch nicht mal damit).
Wie auch immer, ich habe dann folgendes PHP-Skript geschrieben und in eine Seite eingebunden, die ich als Auswertungs-Seite (Abschluss-Aktion: Weiterleitung zur Seite) im entsprechenden pbsurvey-plugin angegeben habe. Nun zeigt er mir nach dem Abschließen des Prüfbogens an, wieviele Punkte man hat und welche Fragen falsch beantwortet wurden.
Hier der Code:

```php
<?php
//Question container
$qpid = $_GET['qpid'];

//question startname
$qpids = $_GET['qpids'];

$this->arrSessionData = $GLOBALS['TSFE']->fe_user->getKey('ses','surveyData');
$userid = $this->arrSessionData['rid'];

$falsche = 0;
$buffer = "";
$m = 0;
echo "<div><span class="bodytext">";
if(!isset($userid)){
  $buffer .= "<br />Sitzung abgelaufen, bitte Fragebogen neu starten!</span>";
  echo $buffer;
} 
else {
  $conn=mysql_connect("localhost","<user>","<password>")
  OR die("Kann SQL-Server nicht erreichen");
  mysql_select_db("<typo3-db>") OR die("DB nicht erreichbar");

  $sql0 = "select * from tx_pbsurvey_item where pid = $qpid AND question_type='1' order by sorting ASC";
  $result0 = mysql_query($sql0);
  $anz0 = mysql_num_rows($result0);
  $punkte = $anz0;
  while($row0=mysql_fetch_assoc($result0)){
      $m++;
          
      $teile = explode("\r\n", $row0['answers']);
      $anzahlAntw = count($teile);
      for($i=0;$i<=$anzahlAntw;$i++){
        $Erg[$i]=substr(strstr($teile[$i], "|"), 1);
        $Antwort[$i]=str_replace("|".$Erg[$i], "", $teile[$i]);
        
        if($Erg[$i] == '1'){
          $num = $i+1;
          $query1 = "select * from tx_pbsurvey_answers where result ='$userid' AND pid ='$qpid' AND question =".$row0['uid']." AND answer ='$num'";
          $result1 = mysql_query($query1);
          $anz1 = mysql_num_rows($result1);
          if($anz1 == 0){
              if($m > $k){
               $buffer .= "<br /><b>Frage ".$m." </b>:<br />";
               $falsche++;
              }
              $buffer .= "Die Antwort <b>'".$Antwort[$i]."'</b> fehlt!<br />";
              $punkte--;
              $k = $m;
          } else {
              // Antwort korrekt beantwortet
          }
        } else {
          $num = $i+1;
          $query1 = "select * from tx_pbsurvey_answers where result = ".$userid." AND pid =".$qpid." AND question =".$row0['uid']." AND answer ='$num'";
          $result1 = mysql_query($query1);
          $anz1 = mysql_num_rows($result1);
          if($anz1 == 1){
              if($m > $k){
               $buffer .= "<br /><b>Frage ".$m." </b>:<br />";
               $falsche++;
              }
              $buffer .= "Die Antwort <b>'".$Antwort[$i]."'</b> ist falsch!<br />";
              $punkte--;
              $k = $m; 
          } else {
              // Antwort korrekt beantwortet 
          }
        }
      }
      
  }
  $fehlerpunkte = $anz0 - $punkte;
  echo "<span style="font-family: Arial, Helvetica, sans-serif; font-weight: bold;	color: #2B5580;	font-size: 11pt;"><br />Auswertung</span><br /><br />";
  if($punkte < 19){
   $AuswertungBuff = "Du hast <b>".$falsche." Fragen</b> falsch beantwortet. Wenn Du wirklich Interesse an dem Beruf hast, informier Dich weiter und absolvier am besten ein Praktikum.<br /><br /><b>Fehler: $fehlerpunkte </b><br />";
  } elseif($punkte > 19 AND $punkte < 23){
   $AuswertungBuff = "Du hast <b>".$falsche." Fragen</b> falsch beantwortet. Mittelprächtig. Ein wenig solltest Du Dich schon noch vorbereiten, falls es wirklich Dein Favorit ist. Der Beruf hat sehr viel mehr zu bieten, als Du momentan vielleicht denkst.<br /><br /><b>Fehler: $fehlerpunkte </b><br />";
  } elseif($punkte > 23 AND $punkte < 28-){
   $AuswertungBuff = "Gut gemacht. Nur <b>".$falsche." Fragen </b> falsch beantwortet. Du hast Dich bereits informiert und weißt, was Dich in der Ausbildung erwartet. Die letzten Unsicherheiten bekommst Du am besten in den Griff indem Du Dich mit Berufsvertretern unterhältst und Dir dafür ein paar konkrete Fragen überlegst.<br /><br /><b>Fehler: $fehlerpunkte </b><br />";
  } else {
   $AuswertungBuff = "Glückwunsch, Du weißt eine Menge über den Beruf und was Dich in der Ausbildung erwartet. Eine gute Ausgangsbasis für eine Bewerbung. Alles Gute - die bisherige Vorbereitung hat gepasst.<br /><br /><b>Fehler: $fehlerpunkte </b><br />";
  }

  echo $AuswertungBuff."<br />_______<br />";
     
  echo $buffer."</span></div>";
}
?>
```

Vielleicht kann ja jemand was damit anfangen.

Hier übrigens der Link zum fertigen Projekt:
www.handwerksführerschein.de

gruß
Uli

## Antworten

### [#2](https://www.typo3.net/d/80817-pbsurvey-mit-anonymer-auswertung/2) · klonkiponk · 2011-08-01

Hallo udohmen...

erst mal vielen dank für Code.
ich habe jedoch noch eine Frage. wie hast du denn die übergabe der qid... etc. realisiert? im pbsurvey rumgeschrieben, oder?

mfg
kevin

### [#3](https://www.typo3.net/d/80817-pbsurvey-mit-anonymer-auswertung/3) · udohmen · 2011-08-02

Hi,

da das schon was länger her ist, kann ich mich nicht mehr ganz dran erinnern.

Es müsste sich eigentlich beim pbsurvey um folgende Zeilen in der **pi1/class.tx_pbsurvey_pi1.php** handeln:

```php
    /**
	 * Set page header when jumping to other page
	 *
	 * @param	string		String according to configuration to set page link
	 * @return   void        
     */
    function callHeader($strInput) {
      header('Location: '.t3lib_div::locationHeaderUrl($this->pi_getPageLink($this->arrConfig[$strInput])).'&qpid='.$this->arrConfig['pid'].'&qpids='.$GLOBALS['TSFE']->id);
        exit;
    }
```

Hier werden in dem Aufruf zur Auswertungsseite einfach die entsprechenden IDs per GET mitgegeben.
Das Skript auf der Auswertungsseite aus meinem alten Post "empfängt" diese Variablen.

Gruß
Uli

### [#4](https://www.typo3.net/d/80817-pbsurvey-mit-anonymer-auswertung/4) · klonkiponk · 2011-08-04

Hallo Uli,

vielen Dank für deine Antwort - hat mir meine Suche stark erleichtert :D

mfg

---

Quelle: „pbsurvey mit anonymer Auswertung“, typo3.net, https://www.typo3.net/d/80817-pbsurvey-mit-anonymer-auswertung
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
