Mam stronę lekcja1.php . Fragment jej treści zamieniany jest po naciśnieciu przycisku na to, co znajduje się na podstronie odpowiedz.php. Czyli poprostu zmienia treść strony lekcja1.php.
W tym fragmencie z odpowiedz.php mam formularz (tworzy on quiz), który przesyła odpowiedź użytkownika do funkcji napisanej w js na stronie lekcja1.php (ta ocenia czy odp. użytkownika jest poprawna jeśli tak, wysyła na tą samą stronę odpowiedni komunikat). I tu działa wszystko ale odpowiedź użytkownika ma zostać też wysłana do bazy SQL, a wcześniej odpowiednio sprawdzona przez kod napisany w php. Czy da się zrobić tak aby odpowiedź użytkownika została wysłana także do skryptu php za pomocą tego samego formularza? Jeśli nie to czy istnieje jakaś opcja aby ta funkcja js wysyłała do mojego skryptu php zmienną dzięki której dałoby się ocenić jaką odpowiedź wybrał uzytkownik? A może wystarczy tylko jakaś linijka w funkcji js, która "popchnie" formularz na kolejna stronę(trochę jak przy walidacji formularza)?
Moja wersja, która niestety nie działa ( skrypt twierdzi, że użytkownik nic nie wybrał choć pole formularza jest zaznaczone).
strona: odpowiedz.php Fragment z formularzem
Kod
<form action="lekcja2.php" method="POST" onSubmit="tester(this); return false;" >
<input type=radio name=No1 value="a"/>tresc a
<input type=radio name=No1 value="b"/>tresc b
<input type=radio name=No1 value="c"/>tresc c
<input type=radio name=No1 value="d"/>tresc d
<input type=Submit value="Sprawdź">
</form>
<input type=radio name=No1 value="a"/>tresc a
<input type=radio name=No1 value="b"/>tresc b
<input type=radio name=No1 value="c"/>tresc c
<input type=radio name=No1 value="d"/>tresc d
<input type=Submit value="Sprawdź">
</form>
funkcja w js zawarta na stronie lekcja2.php
Kod
<script>
function tester(form) {
var percent;
var correct = 0;
if (form[1].checked == true)
{
form[1].parentNode.style.backgroundColor = 'green'
correct++;
} else {
form[1].parentNode.style.backgroundColor = 'red'
}
console.log(form[0])
percent = (correct / 1) * 100;
if (percent == 100) alert("Odpowiedź poprawna! Brawo! ")
if (percent < 100) alert("Niestety odpowiedź nie jest poprawna. Dobra odpowiedź została oznaczona kolorem.");
}
</script>
function tester(form) {
var percent;
var correct = 0;
if (form[1].checked == true)
{
form[1].parentNode.style.backgroundColor = 'green'
correct++;
} else {
form[1].parentNode.style.backgroundColor = 'red'
}
console.log(form[0])
percent = (correct / 1) * 100;
if (percent == 100) alert("Odpowiedź poprawna! Brawo! ")
if (percent < 100) alert("Niestety odpowiedź nie jest poprawna. Dobra odpowiedź została oznaczona kolorem.");
}
</script>
i na koniec lekcja2.php a w niej funkcja php, która póki co tylko sprawdza tylko, czy coś zostało wysłane
Kod
if(empty($_POST['No1']))
{echo'pusta';}
{echo'pusta';}
Gdyby ktoś był zainteresownay tematem to udało mi się już znaleźć rozwiązanie- nie jest idealne ale ujdzie.
Mianowicie do funkcji js doszły nowe linijki, które popychają formularz na kolejną stronę. Teraz funkcja wygląda tak:
Kod
function tester(form) {
var percent;
var correct = 0;
if (form[1].checked == true)
{
form[1].parentNode.style.backgroundColor = 'green'
correct++;
} else {
form[1].parentNode.style.backgroundColor = 'orange'
}
console.log(form[0])
percent = (correct / 1) * 100;
if (percent == 100) alert("Odpowiedź poprawna! Brawo! ")
if (percent < 100) alert("Niestety odpowiedź nie jest poprawna. ");
[b]var form = document.getElementById("formularz");
form.submit();[/b]
var percent;
var correct = 0;
if (form[1].checked == true)
{
form[1].parentNode.style.backgroundColor = 'green'
correct++;
} else {
form[1].parentNode.style.backgroundColor = 'orange'
}
console.log(form[0])
percent = (correct / 1) * 100;
if (percent == 100) alert("Odpowiedź poprawna! Brawo! ")
if (percent < 100) alert("Niestety odpowiedź nie jest poprawna. ");
[b]var form = document.getElementById("formularz");
form.submit();[/b]
Temat zakończony