TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

dynamische Auswertungen erstellen mit pbsurvey


Autor Nachricht
Verfasst am: 04. 11. 2006 [13:17]
nicokaiser
Themenersteller
Dabei seit: 24.10.2006
Beiträge: 42
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?
ProfilICQYIM
Verfasst am: 04. 11. 2006 [14:21]
nicokaiser
Themenersteller
Dabei seit: 24.10.2006
Beiträge: 42
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 icon_smile.gif
Komplette Lösung mit Quellcode folgt...

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 04.11.2006 um 14:25.]
ProfilICQYIM
Verfasst am: 20. 04. 2007 [15:52]
StephenKing
Dabei seit: 04.08.2004
Beiträge: 91
Die Extension würde mich interessieren...
Profil
Verfasst am: 26. 06. 2007 [14:21]
nicokaiser
Themenersteller
Dabei seit: 24.10.2006
Beiträge: 42
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
ProfilICQYIM
Verfasst am: 26. 06. 2007 [14:30]
elv1s
Dabei seit: 05.10.2003
Beiträge: 494
Hallo,

wäre echt toll wenn du mir die lösung per email schicken kannst.

vielen dank im voraus.

viele grüße
Kasper
Profil
Verfasst am: 28. 06. 2007 [20:40]
ComputerAgentur
Dabei seit: 19.12.2006
Beiträge: 18
Hallo, mich wurde deine Programmierung auch interessieren. Kannst du mir Sie auch mal per E-Mail senden!

Viele Grüße

ProfilWWW
Verfasst am: 28. 06. 2007 [20:53]
nicokaiser
Themenersteller
Dabei seit: 24.10.2006
Beiträge: 42
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
<?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>&nbsp</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."&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />;
?>
ProfilICQYIM
Verfasst am: 30. 06. 2007 [23:36]
ComputerAgentur
Dabei seit: 19.12.2006
Beiträge: 18
Super gut, Vielen Dank

ProfilWWW
Verfasst am: 01. 08. 2011 [20:38]
klonkiponk
Dabei seit: 01.08.2011
Beiträge: 5
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
Profil
Verfasst am: 02. 08. 2011 [08:46]
nicokaiser
Themenersteller
Dabei seit: 24.10.2006
Beiträge: 42
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
ProfilICQYIM