Hallo, hab ejetzt pbsurvey soweit konfiguriert, so ds es funktioniert. Nur möchte ich dem, der den Fragebogen ausfüllt, auch sein ergebnis mitteilen. Dabei müssen bestimmte Fragen ausgezählt werden. Das habe ich soweit schon alles hinbekommen. Nur scheitert es jetzt daran, das ich diese Daten grafisch darstellen möchte. Dazu hab eich mir einen Frontent mit dem namen pbsurvey_result geschrieben. Darin werden die Daten aus den Tabellen ausgelesen, wa auch funktioniert. Die dynamische Grafikgenerierung sollte über eine php Datei laufen, die aus dem übergeben URL String die Grafik generiert. Nur leider wird mir keine Grafik angezeigt. Wie muss ich diese im Template einbinden und wie kann ich das im der diagramm.php und in der class.tx_pbsurveyresult_pi1.php regeln?
dynamische Auswertungen erstellen mit pbsurvey
so habe es jetzt hinbekommen, hatte einen kleinen Schreibfehler bei mir im Script des wegen wurde der <img>-Tag nicht ausgeführt, jetzt funzt alles. Freu :-)
Komplette Lösung mit Quellcode folgt...
Die Extension würde mich interessieren...
Du kannst ein PHP-script schreiben, was die userid und die ID vom Fragencontainer übergebenbekommt. Da misst du noch im PB-Survey noch ein bissel rumfummeln, damit es dir die ID übergibt. Mit diesen ID's kannst du in der Tabelle pbsurvey_results, pbsurvey_answere und pb_survey_item die passenden Elemente herauslesen. Mit der Fragencontainer ID und mit der USER-ID kannst du dir aus der Tabelle pbsurvey_results die resultID herrauslesen. Mit dieser kannst du die Anworten des Nutzers und die Dazugehörigen Fragen auslesen.
Hast du bei den Fragen noch hinterlegt, welche richtig (Wert 1 oder so) kannst du damit auch angeben, welche Antwort richtig und welche falsch ist.
Dieses kannst du auch gerne aus Extension aufbauen, die lettendlich auch nichts anderes macht.
Wenn nicht weiterkommst, melde Dich bei mir.
Grüße Nico
Hallo,
wäre echt toll wenn du mir die lösung per email schicken kannst.
vielen dank im voraus.
viele grüße
Kasper
Hallo, mich wurde deine Programmierung auch interessieren. Kannst du mir Sie auch mal per E-Mail senden!
Viele Grüße
Hallo Leuts,
es ist glaube ich jedem geholfen, wenn ich den Quellcode im Tread poste.
Das Sript läuft folgendermaßen ab. Ihm werden drei Parameter übergeben $qpid, $qpids und $userid. Die Userid holt sich das Script aus dem TSFE. Qpid ist der Ordner, wo die Questionitems liegen und Qpids ist die Seite, die das Plugin enthält. Dies habe ich deshalb so gestaltet, da hier eine Unterscheidung zu verschiedenen Fragebögen gewährleistet ist.
Der Rest vom Script sollte eigentlich selbsterklärend sein, wer dennoch Fragen hat, kann sich gerne an mich wenden.
Bis denne
Nico
<?php
//Question container
$qpid = $_GET['qpid'];
//question startname
$qpids = $_GET['qpids'];
$userid = $GLOBALS['TSFE']->fe_user->user['uid'];
//var_dump($GLOBALS['TSFE']->fe_user->user);
$result_title = $GLOBALS['TYPO3_DB']->sql_query("SELECT title FROM pages WHERE uid=".$qpid);
$result_title = $GLOBALS['TYPO3_DB']->sql_fetch_row($result_title);
echo '<h3>'.$result_title[0].'</h3>';
$sql10 = "SELECT it.answers, it.question_subtext, it.question, ans.answer
FROM tx_pbsurvey_answers AS ans
RIGHT JOIN tx_pbsurvey_item AS it ON ans.question=it.uid
RIGHT JOIN tx_pbsurvey_results AS rus ON ans.result = rus.uid
WHERE it.pid = '".$qpids."'
AND it.deleted =0
AND it.hidden =0
AND ans.deleted = 0
AND rus.user = '".$userid."'
ORDER BY sorting";
$result = $GLOBALS['TYPO3_DB']->sql_query($sql10);
echo '<div id="center"><div id="content"><div class="tx-pbsurvey-pi1"><div id="survey_form">';
$q_count = 0;
$q_count_f = 0;
while ($datensatz = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result))
{
$q_count++;
echo '<table width="100%" cellpadding="0" cellspacing="0" border="0">';
echo '<tr>';
echo '<td width="25" rowspan="2" valign="top"><b>'.str_replace("Frage ","",$datensatz['question']).'.</b></td>';
echo '<td width="635" align="justify"><p class="bodytext">'.$datensatz['question_subtext'].'</p></td>';
echo '</tr>';
echo '<tr>';
echo '<td><br>';
$question_array = explode(chr(13).chr(10),$datensatz['answers']);
echo '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
foreach ($question_array as $key=>$value)
{
$value = explode("|",$value);
if ($datensatz['answer']==($key+1) AND $value[1]==0)
{
$aus_falsch = '<tr><td width="10%" valign="top"><font color="#ff0000"><b>FALSCH:</b></td><td>'.$value[0].'</font><br></td></tr>';
$q_count_f++;
}
elseif ($value[1]==1)
{
$aus_richtig = '<tr><td width="10%" valign="top"><b>RICHTIG:</b></td><td>'.$value[0].'</td></tr>';
}
}
echo $aus_falsch.$aus_richtig;
echo '</table>';
echo '</td>';
echo '</tr>';
echo '</table>';
echo '<p> </p>';
$aus_falsch = null;
$aus_richtig = null;
}
echo '<hr>';
$ans_corr = $q_count-$q_count_f;
if ($GLOBALS['TSFE']->fe_user->user['gender']==0)
{
$anrede = "Sehr geehrter Herr";
}
elseif ($GLOBALS['TSFE']->fe_user->user['gender']==1)
{
$anrede = "Sehr geehrte Frau";
};
if ($ans_corr>=7 && $ans_corr<10)
{
$cme = 2;
}
elseif ($ans_corr==10)
{
$cme = 3;
}
else
{
$cme = 0;
}
$en = $ans_corr==1?'':'en';
echo '<p>'.$anrede.' '.$GLOBALS['TSFE']->fe_user->user['last_name'].',</p>';
echo '<p>Sie haben bei der Leistungsfeststellung '.$result_title[0].' '.$ans_corr.' richtige Antwort'.$en.' gegeben. Dafür erhalten Sie '.$cme.' CME Punkte.</p>';
echo '</div></div></div></div>';
$GLOBALS['TYPO3_DB']->sql_query("UPDATE tx_pbsurvey_results SET correct_ans = ".$ans_corr.", cme=".$cme." WHERE pid=".$qpids." AND user=".$userid."");
?>
Super gut, Vielen Dank
Hallo nicokaiser,
ich weiß, dass es nun schon länger her ist, wo dieser thread hier aktuell war, aber könntest du vllt. kurz erklären was du mit rumfummeln im pbsurvey meinst und der übergabe der qids.
übergibts du diese dann auch so wie score und total über die url oder wie hast du das realisiert?
mfg
kevin
Hi klonkiponk,
soweit ich das noch in Erinnerung habe, muss du beim Abschluss des Fragebogens auf die Extension verweisen und dort per GET die questionID übergeben. Die ID enthält das Resultset des Nutzers, welches du dann mit den Fragen und den richtigen antworten vergleichen kannst. Ich müsste mal schauen ob ich noch die Daten habe. Ich melde mich die Woche nochmal.
Grüße
Nico
Hallo nicokaiser,
vielen Dank schonmal für deine schnelle Antwort... werde mich schonmal dransetzen uns es versuchen zu realisieren.
Benutzt du auch die Extension hi_surveystats?
ich habe diese etwas erweitert um auch die Subtexts und Presentation_items im FE anzuzeigen.
könnte ich dir auch zukommen lassen, wenn du interesse hast.
mfg
klonki
Habe mir gerade noch einmal eine andere Möglichkeit einfallen lassen:
Erweiterung der tx_pbsurvey_answers um das Feld 'user'
Anpassung der class.tx_pbsurvey_pi1.php, so dass diese in das eben generierte 'user' den FE_User gemäß der uid von fe_users einträgt.
somit kann ich dann durch eine eigene Extension eine Abfrage machen, welche Antworten dieser User gegeben hat.
Speziell kann der User dann auch sich in der Theorie einige Tage später nochmal anmelden und seine damals gegebenen Ergebnisse anzeigen lassen.
In meinem speziellen Fall ist dies auch realisierenswert, da alle umfragen eh nur mit logged-in users durchgeführt werden sollen.
was hältst du von diesem Ansatz?
erscheint es dir zu kompliziert oder unzweckmäßig?
mfg
kevin
Hallo Klonkiponk,
ich bin damals den Weg gegangen, da ich nichts passendes gefunden hatte. Habe das damals für meine Diplomarbeit verwendet und dann später bei meinen Arbeitgerber nochmals verfeinert. Ich finde auch meine Sachen leider nicht mehr. Frage ist auch, ob es seit 2007 gravierende Änderungen in der pb_survey gibt. Bin da jetzt auch zuweit draußen vom Thema und leider fehlt mir momentan die Zeit mich da wieder in die Materie einzuarbeiten.
Grüße
Nico