creazione test con invio risposta a una email prescelta

selvaggia

Utente Attivo
12 Giu 2013
58
1
6
Salve a tutti, ho creato un test in php su typo3, Nella pagina test ho messo tutto quello che devo chiedere essendo risposte multiple nel file di risposta che compare solo una volta cliccato grade me ho messo le risposte giuste il codice è questo
HTML:
<script>
//Enter total number of questions:
var totalquestions=20

//Enter the solutions corresponding to each question:
var correctchoices=new Array()
correctchoices[1]='a' //question 1 solution
correctchoices[2]='c' //question 2 solution, and so on.
correctchoices[3]='b'
correctchoices[4]='a'
correctchoices[5]='b'
correctchoices[6]='b'
correctchoices[7]='c'
correctchoices[8]='c'
correctchoices[9]='b'
correctchoices[10]='c'
correctchoices[11]='b'
correctchoices[12]='c'
correctchoices[13]='c'
correctchoices[14]='b'
correctchoices[15]='c'
correctchoices[16]='a'
correctchoices[17]='c'
correctchoices[18]='c'
correctchoices[19]='b'
correctchoices[20]='a'

/////Don't edit beyond here//////////////////////////

function gradeit(){
var incorrect=null
for (q=1;q<=totalquestions;q++){
	var thequestion=eval("document.myquiz.question"+q)
	for (c=0;c<thequestion.length;c++){
		if (thequestion[c].checked==true)
		actualchoices[q]=thequestion[c].value
		}
		
	if (actualchoices[q]!=correctchoices[q]){ //process an incorrect choice
		if (incorrect==null)
		incorrect=q
		else
		incorrect+="/"+q
		}
	}

if (incorrect==null)
incorrect="a/b"
document.cookie='q='+incorrect
if (document.cookie=='')
alert("Your browser does not accept cookies. Please adjust your browser settings.")
else
window.location="http://www.sprachcaffe-florence.com/altre_scuole_sprachcaffe/rispo.htm"
}


function showsolution(){
var win2=window.open("","win2","width=200,height=350, scrollbars")
win2.focus()
win2.document.open()
win2.document.write('<title>Solution</title>')
win2.document.write('<body bgcolor="#FFFFFF">')
win2.document.write('<center><h3>Solution to Quiz</h3></center>')
win2.document.write('<center><font face="Arial">')
for (i=1;i<=totalquestions;i++){
for (temp=0;temp<incorrect.length;temp++){
if (i==incorrect[temp])
wrong=1
}
if (wrong==1){
win2.document.write("Question "+i+"="+correctchoices[i].fontcolor("red")+"<br>")
wrong=0
}
else
win2.document.write("Question "+i+"="+correctchoices[i]+"<br>")
}
win2.document.write('</center></font>')
win2.document.write("<h5>Note: The solutions in red are the ones to the questions you had incorrectly answered.</h5><p align='center'><small><a href='http://www.javascriptkit.com' target='_new'>JavaScript Kit quiz script</a></small>")
win2.document.close()
}

</script>
<p align="center"><strong><font face="Verdana"> <big>Instant Quiz Results</big></font></strong></p>
<div align="center">
  <center>
    <table border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="100%">
          <form method="POST" name="result">
            <table border="0" width="100%" cellpadding="0" height="116">
              <tr>
                <td height="25"><font face="Verdana"># of questions you got right:</font></strong></td>
                <td height="25">
                  <p>
                    <input type="text" name="p" size="24">
                </td>
              </tr>
              <tr>
                <td height="17"><font face="Verdana">The questions you got wrong:</font></strong></td>
                <td height="17">
                  <p>
                    <textarea name="T2" rows="3" cols="24" wrap="virtual"></textarea>
                </td>
              </tr>
              <tr>
                <td height="25"><font face="Verdana">Grade in percentage:</font></strong></td>
                <td height="25">
                  <input type="text" name="q" size="8">
                </td>
              </tr>
            </table>
          </form>
        </td>
      </tr>
    </table>
  </center>
</div>
<form method="POST">
  <div
  align="center">
    <center>
      <p>
        <script>
var wrong=0
for (e=0;e<=2;e++)
document.result[e].value=""

var results=document.cookie.split(";")
for (n=0;n<=results.length-1;n++){
if (results[n].charAt(1)=='q')
parse=n

}

var incorrect=results[parse].split("=")
incorrect=incorrect[1].split("/")
if (incorrect[incorrect.length-1]=='b')
incorrect=""
document.result[0].value=totalquestions-incorrect.length+" out of "+totalquestions
document.result[2].value=(totalquestions-incorrect.length)/totalquestions*100+"%"
for (temp=0;temp<incorrect.length;temp++)
document.result[1].value+=incorrect[temp]+", "


</script>
        <input type="button" value="Take the quiz again" name="B1"
  onClick="history.go(-1)">
        <input type="button" value="View solution" name="B2"
  onClick="showsolution()">
      </p>
    </center>
  </div>
</form>
ho due problemi:
1 vorrei che quando una persona clicca grade me mandi il risultato del test a un email scelta da me quindi che il risultato non rimanga solo a video della persona che lo fà ma che arrivi pure a me;
2 una volta compilato il test e avuto il risultato può essere scritto sopra al risultato come posso fare che vengo mostrato a video senza che si possa cmbiare o scrivere sopra
 
in questo modo fai si che una determinato form venga inviata a una determinata email
HTML:
<form method="POST" action="mailto:[email protected]" enctype="text/plain">

poi se vuoi usare l'evento onclick esiste il metodo submit() che fà al caso tuo...
 
Ciao quindi nella pagina del test non in quella che ho postato metto il form che include tutto il test? Non ho capito dove inserirlo. . . l'altra pagina è la pagina che contiene le domande del test e questa le risposte
 
1 vorrei che quando una persona clicca grade me mandi il risultato del test a un email scelta da me quindi che il risultato non rimanga solo a video della persona che lo fà ma che arrivi pure a me;
tu hai scritto questo se vuoi che ti arrivi le risposte via email in html devi scrivere come action mailto:tua email..quindi il form deve essere :

HTML:
<form method="POST" action="mailto:[email protected]" enctype="text/plain">
qui aggiungi gli input che vuoi che ti arrivino via email cosa usi per 

validare le risposte le risposte? Es.
<input type="radio" name="risp1" value="1">1<br>
<input type="radio" name="rispo2" value="2">2<br>
per l'invio solitamente si usa<br>
 <input type="submit" value="invio grade me"> 
</form>
se invece l'invio lo vuoi tramite javascript usi il metodo submit() poi e l'evento onclick lo evochi su grande me

spero di aver risposto alla domanda 1 anche se non ho capito bene ,per la 2 due non ho capito cosa vuoi fare...
 
Ultima modifica:
ciao, se capisco bene il tuo secondo punto, vuoi bloccare la modifica delle risposte inserite,
per le mie necessità ho definito due funzioni, lock e unlock che agiscono su testo, checkbox e radio button,
richiamo queste funzioni prima di visualizzare il form in modo che il form stesso ne tenga conto.
ti allego anche 3 righe che chiariscono l'uso.
per il radio button, l'unica soluzione per bloccare la modifica è quella di disabilitare l'attivazione, per i non selezionati, ma funziona bene
PHP:
function unlock() {
  global $readonly,$CBs,$CBu,$RBs,$RBu;

  $readonly = "";

  $CBs = "checked";
  $CBu = "unchecked";

  $RBs = "checked";
  $RBu = "unchecked";
}

function lock() {
  global $readonly,$CBs,$CBu,$RBs,$RBu;

  $readonly = " readonly ";

  $CBs = 'checked onclick="this.checked=true"';
  $CBu = 'unchecked onclick="this.checked=false"';

  $RBs = 'checked onclick="this.checked=true"';
  $RBu = 'disabled';
}

$frm = "<input type='text' name='TXname'".$readonly.$TXname." />";

$frm = "<input type='checkbox' name='CBname' value='X' ".($CBname == 'X' ? $CBs : $CBu)." />CBlabel<br />";

$frm = "<input type='radio' name='Rname' value='V' ".($Rname == 'V' ? $RBs : $RBu)." /> Rlabel";

ciao
marino
 

Discussioni simili