Hallo an alle hier, ich habe ein vielleicht kleines Problem, leider bereitet es mir aber große Sorgen.
Also dann fang ich mal an: Ich muss einen Online-Englisch-Test programmieren. Das meißte wird mit PHP realisiert, hier und da ist Javascript dabei und die Fragen, die 4 möglichen Antworten und die richtige Antwort stehen in einer Datenbank.
Folgendes Problem:
Die Fragen sind wie folgt in die Datenbank eingetragen und werden so ausgegeben:
The book was _____ amusing than the film.
Nun soll beim Klick auf eine Antwort:
a) much b) more c) many d) very
die Antwort automatisch in die Frage eingetragen sprich:
The book was much amusing than the film.
Die Fragen werden mit der folgenden Funktion in einer Tabelle ausgegeben:
Das sieht dann folgendermaßen aus:
Das automatische Eintragen der Antwort hab ich so realisiert:
Was dann auch so passiert:
Doch es gibt auch Fragen bei denen Anführungszeichen enthalten sind und dort funktioniert diese Funktion nicht. Die Frage wird dann nicht übergeben und die Variable question ist leer. Ich habe schon versucht dieses Problem so zu lösen:
Das klappt zwar mit den Appostrophen, also den einstelligen Anführungszeichen, doch das mit dem 2 stelligen Anführungszeichen funktioniert nicht.
Meine Fragen also:
Wieso wird die Frage...
nicht mit übergeben wenn sie ein Anführungszeichen enthält? Hier mal ein Beispiel für eine solche Frage:
"I'm right, _____ I?"
Wie kann ich das am besten beheben?
Ich hoffe ich konnte mein Problem genau und verständlich schildern, falls noch Unklarheiten oder Fragen bestehen bitte stellt sie mir.
Schon einmal vielen Dank.
LG mimbob
Also dann fang ich mal an: Ich muss einen Online-Englisch-Test programmieren. Das meißte wird mit PHP realisiert, hier und da ist Javascript dabei und die Fragen, die 4 möglichen Antworten und die richtige Antwort stehen in einer Datenbank.
Folgendes Problem:
Die Fragen sind wie folgt in die Datenbank eingetragen und werden so ausgegeben:
The book was _____ amusing than the film.
Nun soll beim Klick auf eine Antwort:
a) much b) more c) many d) very
die Antwort automatisch in die Frage eingetragen sprich:
The book was much amusing than the film.
Die Fragen werden mit der folgenden Funktion in einer Tabelle ausgegeben:
Code:
function show_questions($ID)
{
srand ( (double)microtime () * 1000000 );
$j = array(0,1,2,3);
$IDanz = count ($ID);
echo "<table border=2 style='width: 300; text-align: center; border: grey ridge thick; background-color: #f5f5f5;'>";
echo "<tr>";
echo "<th>$_POST[first_name] $_POST[family_name]</th><th id='Countdown'></th>";
echo "</tr>";
echo "</table>";
echo "<br><br>";
echo "<table border=2 style='border: grey ridge thick; background-color: #f5f5f5;'>";
echo "<tr>";
echo "<th style='padding: 2px;'>question</th><th style='padding: 2px;'>answers</th>";
echo "</tr>";
echo "<form action='english_test_analyse.php' onsubmit='return checkAnswers($IDanz)' name='question_form' method='post'>";
$k = 0;
for ($i = 0; $i < $IDanz; $i++)
{
$k++;
$result = mysql_query("select question from questions where ID = $ID[$i]") or die(mysql_error());
$question = mysql_fetch_row($result);
$question = searchSZ($question);
echo "<tr>";
echo "<td>".($k).". "."<span id='question$k'>".$question[0]."</span>"."<br></td>";
$result = mysql_query("select answer1 from questions where ID = $ID[$i]") or die(mysql_error());
$answer1 = mysql_fetch_row($result);
$result = mysql_query("select answer2 from questions where ID = $ID[$i]") or die(mysql_error());
$answer2 = mysql_fetch_row($result);
$result = mysql_query("select answer3 from questions where ID = $ID[$i]") or die(mysql_error());
$answer3 = mysql_fetch_row($result);
$result = mysql_query("select answer4 from questions where ID = $ID[$i]") or die(mysql_error());
$answer4 = mysql_fetch_row($result);
echo "<td>";
echo "<input type='radio' id='answer_$j[0]' name='answer$i' value='a'>a) <span id='word$j[0]$k' onclick='clickbutton($j[0], $k, \"$question[0]\")'>$answer1[0]</span><br>";
$j[0] = $j[0] + 4;
echo "<input type='radio' id='answer_$j[1]' name='answer$i' value='b'>b) <span id='word$j[1]$k' onclick='clickbutton($j[1], $k, \"$question[0]\")'>$answer2[0]</span><br>";
$j[1] = $j[1] + 4;
echo "<input type='radio' id='answer_$j[2]' name='answer$i' value='c'>c) <span id='word$j[2]$k' onclick='clickbutton($j[2], $k, \"$question[0]\")'>$answer3[0]</span><br>";
$j[2] = $j[2] + 4;
echo "<input type='radio' id='answer_$j[3]' name='answer$i' value='d'>d) <span id='word$j[3]$k' onclick='clickbutton($j[3], $k, \"$question[0]\")'>$answer4[0]</span><br>";
$j[3] = $j[3] + 4;
echo "</td>";
echo "</tr>";
$IDx = $ID[$i];
#echo "IDx: $IDx<br> k: $k<br>";
echo "<input type='hidden' name='ID$i' value ='$IDx'>";
}
echo "<input type='hidden' name='first_name' value='$_POST[first_name]'>";
echo "<input type='hidden' name='family_name' value='$_POST[family_name]'>";
echo "<input type='hidden' name='email' value='$_POST[email]'>";
echo "<input type='hidden' name='birthday' value='$_POST[birthday]'>";
echo "<input type='hidden' name='nationality' value='$_POST[nationality]'>";
echo "<input type='hidden' name='agent' value='$_POST[agent]'>";
echo "<input type='hidden' name='time' value=''>";
echo "</table>";
echo "<br>";
echo "<input type='submit' style='width: 120px; height: 30px;' value='send results'>";
echo "</form>";
}
Das sieht dann folgendermaßen aus:

Das automatische Eintragen der Antwort hab ich so realisiert:
Code:
var replacepoint = "_____";
function clickbutton(radio_ID, number, question)
{
document.question_form.elements["answer_"+radio_ID].click();
strWord = document.getElementById("word"+radio_ID+number).innerHTML
strHtml = "<b style=\"color: darkblue;\"><i>"+strWord+"</i></b>";
newQuestion = question.replace(replacepoint, strHtml);
document.getElementById("question"+number).innerHTML = newQuestion;
}
Was dann auch so passiert:

Doch es gibt auch Fragen bei denen Anführungszeichen enthalten sind und dort funktioniert diese Funktion nicht. Die Frage wird dann nicht übergeben und die Variable question ist leer. Ich habe schon versucht dieses Problem so zu lösen:
Code:
function searchSZ($string)
{
$sign = array ("'","\"");
$replace = array ("'",""");
for ($i = 0; $i < count($sign); $i++)
{
$string = str_replace($sign[$i],$replace[$i], $string);
}
return $string;
}
Das klappt zwar mit den Appostrophen, also den einstelligen Anführungszeichen, doch das mit dem 2 stelligen Anführungszeichen funktioniert nicht.
Meine Fragen also:
Wieso wird die Frage...
Code:
onclick='clickbutton($j[0], $k, \"[B]$question[0][/B]\")
nicht mit übergeben wenn sie ein Anführungszeichen enthält? Hier mal ein Beispiel für eine solche Frage:
"I'm right, _____ I?"
Wie kann ich das am besten beheben?
Ich hoffe ich konnte mein Problem genau und verständlich schildern, falls noch Unklarheiten oder Fragen bestehen bitte stellt sie mir.
Schon einmal vielen Dank.
LG mimbob