robię stronę z testami psychologicznymi na własny użytek. Dodaję kolejny test. W teście jest 567 pyt. Kod wygląda tak:
CODE
<?php
@session_start();
require_once "connect.php";
ob_start();
if (!isset($_SESSION['zalogowany']))
{
header('Location: index.php');
exit;
}
if (isset($_SESSION['nowymmpi']))
{
$_SESSION['plec']=$_POST['plec'];
$_SESSION['wiek']=$_POST['wiek'];
$polaczenie= new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0)
{
echo "Error: ".$polaczenie->connect_errno;
}
else
{
$data=date('Y-m-d');
$plec=$_SESSION['plec'];
$wiek=$_SESSION['wiek']=$_POST['wiek'];
$id=$_SESSION['id'];
$test_id = rand(1,1000);
$_SESSION['data']=$data;
$_SESSION['testid']=$test_id;
$polaczenie->query("INSERT INTO mmpi_skale (id, user_id, test_id, data, plec, wiek) VALUE ('', '$id', '$test_id', '$data', '$plec', '$wiek')");
$polaczenie->close();
}
unset($_SESSION['nowymmpi']);
}
/*********** zapisywanie pytań do bazy ***********/
if (isset($_POST['odp']))
{
$odp=$_POST['odp'];
$nr_pyt=$_SESSION['nr'];
$id=$_SESSION['id'];
$test_id=$_SESSION['testid'];
$data=$_SESSION['data'];
$polaczenie= @new mysqli($host, $db_user, $db_password, $db_name);
$polaczenie->query("INSERT INTO mmpi (id, user_id, test_id, data, nr_pyt, odp) VALUE ('', '$id', '$test_id', '$data', '$nr_pyt', '$odp')");
$polaczenie->close();
}
/************* koniec zapisywania pytań do bazy ***********/
include_once("mmpipyt.php");
if (isset ($_POST['odp']))
{
$_SESSION['nr']=++$_SESSION['nr'];
}
@session_start();
require_once "connect.php";
ob_start();
if (!isset($_SESSION['zalogowany']))
{
header('Location: index.php');
exit;
}
if (isset($_SESSION['nowymmpi']))
{
$_SESSION['plec']=$_POST['plec'];
$_SESSION['wiek']=$_POST['wiek'];
$polaczenie= new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0)
{
echo "Error: ".$polaczenie->connect_errno;
}
else
{
$data=date('Y-m-d');
$plec=$_SESSION['plec'];
$wiek=$_SESSION['wiek']=$_POST['wiek'];
$id=$_SESSION['id'];
$test_id = rand(1,1000);
$_SESSION['data']=$data;
$_SESSION['testid']=$test_id;
$polaczenie->query("INSERT INTO mmpi_skale (id, user_id, test_id, data, plec, wiek) VALUE ('', '$id', '$test_id', '$data', '$plec', '$wiek')");
$polaczenie->close();
}
unset($_SESSION['nowymmpi']);
}
/*********** zapisywanie pytań do bazy ***********/
if (isset($_POST['odp']))
{
$odp=$_POST['odp'];
$nr_pyt=$_SESSION['nr'];
$id=$_SESSION['id'];
$test_id=$_SESSION['testid'];
$data=$_SESSION['data'];
$polaczenie= @new mysqli($host, $db_user, $db_password, $db_name);
$polaczenie->query("INSERT INTO mmpi (id, user_id, test_id, data, nr_pyt, odp) VALUE ('', '$id', '$test_id', '$data', '$nr_pyt', '$odp')");
$polaczenie->close();
}
/************* koniec zapisywania pytań do bazy ***********/
include_once("mmpipyt.php");
if (isset ($_POST['odp']))
{
$_SESSION['nr']=++$_SESSION['nr'];
}
[/HTML] else { $_SESSION['nr']=1; } $nr=$_SESSION['nr']; $pytanie=$pyt[$nr]; if ($nr>567) { $polaczenie= new mysqli($host, $db_user, $db_password, $db_name); $polaczenie->query("UPDATE mmpi_skale SET zal='1' WHERE test_id='$test_id' AND data='$data' AND user_id='$id'"); $wynik=$polaczenie->query("SELECT nr_pyt, odp FROM mmpi WHERE test_id='$test_id' AND data='$data' AND user_id='$id' ORDER BY nr_pyt ASC"); while($w=$wynik->fetch_assoc()) { $pyt=$w['nr_pyt']; $odp=$w['odp']; $_SESSION[$pyt]=$odp; } include_once("mmpi_wyniki.php"); } ?> <div class="mmpi_h"> <?php echo 'pytanie '.$_SESSION['nr'].'. z 567' ; ?> </div> <div class="mmpi_pyt"> <?php echo $pytanie; ?><br /> </div> <div class="mmpi_sub"> <form action="index.php" method="POST" class="mmpi_form_sub"> <input type="hidden" name="odp" value="1"> <input type="submit" value="TAK" class="mmpi_form_sub"> </form> <form action="index.php" method="POST" class="mmpi_form_sub"> <input type="hidden" name="odp" value="0"> <input type="submit" value="NIE" class="mmpi_form_sub"> </form> </div> ?>- [HTML]
W formularzu (na samym dole) wyświetla się treść pytania i należy wybrać odpowiedź "tak" lub "nie". Strona się przeładowuje i z każdym przeładowaniem zwiększa się o 1 $_SESSION ['nr'], dzięki czemu wyświetla się kolejne pytanie, a wcześniej właściwe pytanie (odpowiedź) zapisuje się do bazy.
Pogrubiony if ma się włączyć po przeklikaniu wszystkich pytań. Po kliknięciu na ostatnie - 567. strona się przeładowuje i $_SESSION['nr'] powinno zwiększyć się do 568. Wtedy if ($nr>20) ($nr=$_SESSION['nr']) powinien zareagować i wykonać instrukcje.
Kiedy w ifie dla przetestowania daję if($nr>10), wszystko jest ok. To samo z większymi numerami. Kiedy daję if($nr>200) - lub więcej niż 200, po przekroczeniu 200 if nie wykonuje instrukcji, a formularz wraca do pierwszego pytania. Jak zrobię takie kółko, w kodzie mogę np. przy 5. pyt. zmienić if na if($nr>10), ale wtedy nawet z taka małą liczbą nie zareaguje - po przekroczeniu 10. pytania, wraca do pierwszego.
W sytuacji, kiedy if nie reaguje - np. przy if($nr>200), kiedy kliknę na 200. pytanie - formularz nie wysyła $_POST. Echo nie wyświetla jego zawartości, var_dump też nic nie pokazuje. Po powrocie do pierwszego pytania, kiedy zatoczę kółko, echo $_POST['odp'] wywala błąd. Kiedy po takim kółku kliknę na odpowiedź na pierwsze pytanie (formularz wyświetla się prawidłowo), $_POST znów się wysyła.
Czy ktoś ma pomysł, na czym polega problem i jak zrobić, żeby if zaskakiwał?