Reputation: 27
I'm coding a question script with using two php files. One of them is storing my questions answers and one integer value of question. Program is working like that.
For example
$kelime[5]["question"] = "Mavi";
$kelime[5]["answer"] = "blue";
$kelime[5]["number"] = 0;
Question is 'Mavi' and answer is 'blue'
When it asked me if I give true answer number must increase 1 if number >= 10 don't ask me this question again. But number value never increase it is always same after submit where I am making wrong?
questions.php
<?php
$kelime[0]["tr"] = "Sarı";
$kelime[0]["en"] = "yellow";
$kelime[0]["nr"] = 0;
$kelime[1]["tr"] = "Kırmızı";
$kelime[1]["en"] = "red";
$kelime[1]["nr"] = 0;
$kelime[2]["tr"] = "Yeşil";
$kelime[2]["en"] = "green";
$kelime[2]["nr"] = 0;
$kelime[3]["tr"] = "Siyah";
$kelime[3]["en"] = "black";
$kelime[3]["nr"] = 0;
$kelime[4]["tr"] = "Beyaz";
$kelime[4]["en"] = "white";
$kelime[4]["nr"] = 0;
$kelime[5]["tr"] = "Mavi";
$kelime[5]["en"] = "blue";
$kelime[5]["nr"] = 0;
$kelime[6]["tr"] = "Turuncu";
$kelime[6]["en"] = "orange";
$kelime[6]["nr"] = 0;
$kelime[7]["tr"] = "Gri";
$kelime[7]["en"] = "grey";
$kelime[7]["nr"] = 0;
$kelime[8]["tr"] = "Mor";
$kelime[8]["en"] = "purple";
$kelime[8]["nr"] = 0;
$kelime[9]["tr"] = "Pembe";
$kelime[9]["en"] = "pink";
$kelime[9]["nr"] = 0;
$kelime[10]["tr"] = "Altın";
$kelime[10]["en"] = "gold";
$kelime[10]["nr"] = 0;
$sayi = array(0,1,2,3,4,5,6,7,8,9,10);
?>
asking.php
<?php
session_start();
require "kelimeler.php";
$_SESSION['sayi'] = $sayi;
$_SESSION['kelime'] = $kelime;
$i = rand(0,4);
print_r($_SESSION['kelime']);
setcookie("soru", $_SESSION['kelime'][$_SESSION['sayi'][$i]]["tr"]);
setcookie("cevap", $_SESSION['kelime'][$_SESSION['sayi'][$i]]["en"]);
?>
<html>
<body>
<div class="content">
<div class="kelime"><?php echo $_SESSION['kelime'][$_SESSION['sayi'] [$i]]["tr"] ?></div>
<form method="post" action="">
<input id="cvp" type="text" name="kelime" placeholder="die Antwort">
<input type="submit" name="gonder" value="SENDEN !"/>
</form>
</div>
<?php
if (isset($_POST["kelime"])) {
if ($_POST["kelime"] == $_COOKIE['cevap']) {
echo '<div class="bildirim">You are right ✔</div>';
$_SESSION['kelime'][$i]["nr"] = +1;
if ($kelime[$i]["nr"] >= 10) {
unset($_SESSION['sayi'][$i]);
}
} else {
echo '<div class="bildirim">'.$_COOKIE['soru'].' = '.$_COOKIE['cevap'].'</div>';
}
}
?>
</body>
</html>
Thanks to all from now :)
Upvotes: 1
Views: 822
Reputation: 41810
I think the main problem is at the beginning of the script:
session_start();
require "kelimeler.php";
$_SESSION['sayi'] = $sayi; // <<<--here
$_SESSION['kelime'] = $kelime; // <<<--and here
It appears you are resetting these session values to the original arrays every time the page loads. You should only initialize them if they are not already set.
session_start();
require "kelimeler.php";
if (!isset($_SESSION['sayi'])) {
$_SESSION['sayi'] = $sayi;
}
if (!isset($_SESSION['kelime'])) {
$_SESSION['kelime'] = $kelime;
}
Then, as the other answer pointed out, $_SESSION['kelime'][$i]["nr"] = +1;
will not increment the value. Maybe you meant to use $_SESSION['kelime'][$i]["nr"] += 1;
?
Upvotes: 1
Reputation: 1015
It's easy. Instead
$_SESSION['kelime'][$i]["nr"] = +1;
You should
$_SESSION['kelime'][$i]["nr"]++;
// or $_SESSION['kelime'][$i]["nr"] += 1;
The problem here is = +1
which sets the value to 1 and do not increment.
Upvotes: 0