dynamische Auswertungen erstellen mit pbsurvey [Gelöst]

  • nicokaiser nicokaise...
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    04. 11. 2006, 13:17

    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?


  • nicokaiser nicokaise...
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    04. 11. 2006, 14:21

    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...

  • 0 x
    91 Beiträge
    0 Hilfreiche Beiträge
    20. 04. 2007, 15:52

    Die Extension würde mich interessieren...

  • nicokaiser nicokaise...
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    26. 06. 2007, 14:21

    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

  • elv1s elv1s
    Jedi-Meister
    0 x
    494 Beiträge
    0 Hilfreiche Beiträge
    26. 06. 2007, 14:30

    Hallo,

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

    vielen dank im voraus.

    viele grüße
    Kasper

  • 0 x
    18 Beiträge
    0 Hilfreiche Beiträge
    28. 06. 2007, 20:40

    Hallo, mich wurde deine Programmierung auch interessieren. Kannst du mir Sie auch mal per E-Mail senden!

    Viele Grüße

  • nicokaiser nicokaise...
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    28. 06. 2007, 20:53

    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

    1. <?php
    2.  
    3. //Question container
    4. $qpid = $_GET['qpid'];
    5. //question startname
    6. $qpids = $_GET['qpids'];
    7. $userid = $GLOBALS['TSFE']->fe_user->user['uid'];
    8. //var_dump($GLOBALS['TSFE']->fe_user->user);
    9. $result_title = $GLOBALS['TYPO3_DB']->sql_query("SELECT title FROM pages WHERE uid=".$qpid);
    10. $result_title = $GLOBALS['TYPO3_DB']->sql_fetch_row($result_title);
    11. echo '<h3>'.$result_title[0].'</h3>';
    12.  
    13. $sql10 = "SELECT it.answers, it.question_subtext, it.question, ans.answer
    14. FROM tx_pbsurvey_answers AS ans
    15. RIGHT JOIN tx_pbsurvey_item AS it ON ans.question=it.uid
    16. RIGHT JOIN tx_pbsurvey_results AS rus ON ans.result = rus.uid
    17. WHERE it.pid = '".$qpids."'
    18. AND it.deleted =0
    19. AND it.hidden =0
    20. AND ans.deleted = 0
    21. AND rus.user = '".$userid."'
    22. ORDER BY sorting";
    23.  
    24. $result = $GLOBALS['TYPO3_DB']->sql_query($sql10);
    25.  
    26. echo '<div id="center"><div id="content"><div class="tx-pbsurvey-pi1"><div id="survey_form">';
    27.  
    28. $q_count = 0;
    29. $q_count_f = 0;
    30. while ($datensatz = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result))
    31. {
    32. $q_count++;
    33. echo '<table width="100%" cellpadding="0" cellspacing="0" border="0">';
    34. echo '<tr>';
    35. echo '<td width="25" rowspan="2" valign="top"><b>'.str_replace("Frage ","",$datensatz['question']).'.</b></td>';
    36. echo '<td width="635" align="justify"><p class="bodytext">'.$datensatz['question_subtext'].'</p></td>';
    37. echo '</tr>';
    38. echo '<tr>';
    39. echo '<td><br>';
    40. $question_array = explode(chr(13).chr(10),$datensatz['answers']);
    41. echo '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
    42. foreach ($question_array as $key=>$value)
    43. {
    44. $value = explode("|",$value);
    45. if ($datensatz['answer']==($key+1) AND $value[1]==0)
    46. {
    47. $aus_falsch = '<tr><td width="10%" valign="top"><font color="#ff0000"><b>FALSCH:</b></td><td>'.$value[0].'</font><br></td></tr>';
    48. $q_count_f++;
    49. }
    50. elseif ($value[1]==1)
    51. {
    52. $aus_richtig = '<tr><td width="10%" valign="top"><b>RICHTIG:</b></td><td>'.$value[0].'</td></tr>';
    53. }
    54.  
    55. }
    56.  
    57. echo $aus_falsch.$aus_richtig;
    58. echo '</table>';
    59. echo '</td>';
    60. echo '</tr>';
    61. echo '</table>';
    62. echo '<p>&nbsp</p>';
    63.  
    64. $aus_falsch = null;
    65. $aus_richtig = null;
    66. }
    67. echo '<hr>';
    68. $ans_corr = $q_count-$q_count_f;
    69. if ($GLOBALS['TSFE']->fe_user->user['gender']==0)
    70. {
    71. $anrede = "Sehr geehrter Herr";
    72. }
    73. elseif ($GLOBALS['TSFE']->fe_user->user['gender']==1)
    74. {
    75. $anrede = "Sehr geehrte Frau";
    76. };
    77. if ($ans_corr>=7 && $ans_corr<10)
    78. {
    79. $cme = 2;
    80. }
    81. elseif ($ans_corr==10)
    82. {
    83. $cme = 3;
    84. }
    85. else
    86. {
    87. $cme = 0;
    88. }
    89. $en = $ans_corr==1?'':'en';
    90. echo '<p>'.$anrede.' '.$GLOBALS['TSFE']->fe_user->user['last_name'].',</p>';
    91.  
    92. echo '<p>Sie haben bei der Leistungsfeststellung '.$result_title[0].' '.$ans_corr.' richtige Antwort'.$en.' gegeben. Dafür erhalten Sie '.$cme.' CME Punkte.</p>';
    93. echo '</div></div></div></div>';
    94.  
    95.  
    96. $GLOBALS['TYPO3_DB']->sql_query("UPDATE tx_pbsurvey_results SET correct_ans = ".$ans_corr.", cme=".$cme." WHERE pid=".$qpids." AND user=".$userid."");
    97. ?>

  • 0 x
    18 Beiträge
    0 Hilfreiche Beiträge
    30. 06. 2007, 23:36

    Super gut, Vielen Dank

  • klonkiponk klonkipon...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    01. 08. 2011, 20:38

    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

  • nicokaiser nicokaise...
    Padawan
    0 x
    42 Beiträge
    0 Hilfreiche Beiträge
    02. 08. 2011, 08:46

    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

  • klonkiponk klonkipon...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    02. 08. 2011, 09:52

    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