• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formularz php - test

Object Storage Arubacloud
0 głosów
859 wizyt
pytanie zadane 2 listopada 2016 w PHP przez ManiaQ Nowicjusz (210 p.)

Witam,

piszę dla siebie stronę, na której będzie można rozwiązać test z bazy X pytań.

Polega to na tym, że na początku testu tworzymy tablice o Y elementach z bazy danych o indeksach od 0 do Y-1.

Odpowiedzi umieściłem w formularzu, przy kliknięciu "Następne pytanie" zmienia wartość cookies aby załadować kolejne pytanie, a poprawne/błędne odpowiedzi zapisuje do innego cookies.

Część Kodu:

<div id="page" class="container">
		<div class="col-md-9">
			<div id="img"><img src="img/<?php echo $img[$nr]; ?>.png" height=50% width=100% /></div>
			<div id="task" class="pg-top-small pg-bot-small"><?php echo $task[$nr]; ?></div>
			<form action="" method="post">
				<?php
				if($liczba1<11 && $liczba1>0)
				{
				
					echo '<div class="col-md-12 pg-mini"><label class="btn ', $btn_true1 ,' col-md-9 btn-lg"><input type="radio" name="answer" value="',$true1[$nr],'" id="poprawna" class="pull-left" >', $true1[$nr], '</label></div>';
			
				}
				?>
				<div class="col-md-12 pg-mini"><label class="btn <?php echo $btn_false1; ?> col-md-9 btn-lg"><input type="radio" name="answer" autocomplete="off" value="<?php $false3[$nr];?>" class="pull-left" > <?php echo $false1[$nr]; ?></label></div>
				<?php
				if($liczba1<21 && $liczba1>10)
				{
					echo '<div class="col-md-12 pg-mini""><label class="btn ', $btn_true1 ,' col-md-9 btn-lg"><input type="radio" name="answer" value="',$true1[$nr],'" id="poprawna"  class="pull-left">', $true1[$nr], '</label></div>';
				}
				?>
				<div class="col-md-12 pg-mini""><label class="btn <?php echo $btn_false1; ?> col-md-9 btn-lg"><input type="radio" name="answer" value="<?php $false3[$nr];?>" class="pull-left"> <?php echo $false2[$nr]; ?></label></div>
				<?php
				if($liczba1<31 && $liczba1>20)
				{
					echo '<div class="col-md-12 pg-mini""><label class="btn ' ,$btn_true1 ,' col-md-9 btn-lg"><input type="radio" name="answer" value="',$true1[$nr],'" id="poprawna" class="pull-left">', $true1[$nr], '</label></div>';
				}
				?>
				<div class="col-md-12 pg-mini""><label class="btn <?php echo $btn_false1; ?> col-md-9 btn-lg"><input type="radio" name="answer" value="<?php $false3[$nr];?>" class="pull-left"><?php echo $false3[$nr]; ?></label></div>
				<?php
				if($liczba1<41 && $liczba1>30)
				{
					echo '<div class="col-md-12 pg-mini""><label class="btn ', $btn_true1 ,' col-md-9 btn-lg"><input type="radio" name="answer"  class="pull-left" value="',$true1[$nr],'" id="poprawna">', $true1[$nr], '</label></div>';
				}
				?>
				<input type="hidden" value="ukryty" name="ukryty" />
		</div>
		<div class="col-md-3 text-center">
			<h1>Numer pytania:</h1><h2><?php echo $nr;?></h2>
				<br><br><br><br>
				<?php
					echo '<button type="button" class="btn btn-info btn-large"><input type="submit" style="background:none; border:none;" value="Następne pytanie" name="next" /></button>';
				?>
			</form>
		</div>
			
	</div>

 

function set_cookies()
{
	setcookie('nr_ask', 1);
	setcookie('true', 0);
}

Pytania wyświetlają się dobrze, tylko mam jeden problem - gdy rozpoczynam test i zaznaczam odpowiedź przy pierwszym pytaniu i naciskam button "następne pytanie" aktualizuje cookies jednak nie zmienia na kolejne pytanie. Dopiero przy drugim lub trzecim kliknięciu buttona zmienia się pytanie na nr 2.

Już wiele kodu usuwałem, edytowałem i nadal nie wiem co może być przyczyną. Jeżeli to nie wystarczy wrzucę skrypt na serwer.

Oczywiście przed całym kodem definiuję zmienną $nr.

$nr=$_COOKIE['nr_ask'];

Pozdrawiam.

komentarz 2 listopada 2016 przez Michał Kazula Pasjonat (19,540 p.)
W jakim celu wyświetlanie buttona masz w kodzie php? To jakiś świadomy, celowy zabieg?

Nie widzę kawałka kodu odpowiedzialnego za obsługę kliknięcia guzika.

Nie widzę kawałka kodu odpowiedzialnego za zmianę wartości zmiennej $nr.
komentarz 2 listopada 2016 przez ManiaQ Nowicjusz (210 p.)

W jakim celu wyświetlanie buttona masz w kodzie php? To jakiś świadomy, celowy zabieg?

Aktualnie jest to celowe, było mi teraz wygodniej.

Nie widzę kawałka kodu odpowiedzialnego za obsługę kliknięcia guzika. 

A no zapomniałem dodać na forum. Operowałem już na name przypisanym do submita oraz inpucie typu hidden, a efekty te same.

<?php
	if(isset($_POST['ukryty']))
	{
			$nr+=1
			setcookie('nr_ask', $nr);
			
	}		
	?>	

Było tu więcej kodu np. odpowiedzialnego za zapisywanie poprawnych odpowiedzi etc. ale usuwałem części kodu aby znaleźć gdzie tkwi problem. 

komentarz 3 listopada 2016 przez Michał Kazula Pasjonat (19,540 p.)

Zapomniałeś średnika na koniec linii:

$nr+=1; // u Ciebie jest $nr+=1

Czy cały kod masz w jednym pliku? Podeślij.

Oddziel kod HTML od PHP wszędzie tam gdzie to możliwe! Strasznie namieszane to u Ciebie.

Pierwsze wnioski jakie mi się nasuwają to trzyma ci zmienna $nr poprzednią wartość z nr pytania. Daj preinkrementację:

++$nr;

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
3 odpowiedzi 1,740 wizyt
0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 16 października 2018 w PHP przez niezalogowany
+1 głos
0 odpowiedzi 145 wizyt
pytanie zadane 16 listopada 2018 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...