2016-03-25 14 views
1

Ich kodiere ein Frage-Skript mit zwei PHP-Dateien. Einer von ihnen speichert meine Fragen Antworten und einen ganzzahligen Wert der Frage. Das Programm funktioniert so.Wie wird der Wert des Sitzungsarrays nach dem Senden des Formulars beibehalten?

Zum Beispiel

$kelime[5]["question"] = "Mavi"; 
$kelime[5]["answer"] = "blue"; 
$kelime[5]["number"] = 0; 

Frage ist ‚Mavi‘ und Antwort ‚blau‘

Wenn es mich gefragt, ob ich die richtige Antwort geben Nummer 1 erhöhen müssen, wenn Anzahl> = 10 nicht fragen Ich habe diese Frage erneut. Aber der Zahlenwert steigt nie, es ist immer gleich nach dem, wo ich falsch mache?

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 &#10004</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> 

Vielen Dank an alle von jetzt :)

Antwort

1

denke ich, das Hauptproblem am Anfang des Skripts ist:

session_start(); 
require "kelimeler.php"; 
$_SESSION['sayi'] = $sayi;  // <<<--here 
$_SESSION['kelime'] = $kelime; // <<<--and here 

Es scheint, dass Sie diese Sitzungswerte zu den ursprünglichen Arrays jedes Mal die Seite geladen werden zurückgesetzt wird. Sie sollten sie nur initialisieren, wenn sie nicht bereits festgelegt sind.

session_start(); 
require "kelimeler.php"; 
if (!isset($_SESSION['sayi'])) { 
    $_SESSION['sayi'] = $sayi; 
} 
if (!isset($_SESSION['kelime'])) { 
    $_SESSION['kelime'] = $kelime; 
} 

Dann wird, wie die andere Antwort darauf hingewiesen, $_SESSION['kelime'][$i]["nr"] = +1; nicht den Wert erhöhen. Vielleicht wollten Sie $_SESSION['kelime'][$i]["nr"] += 1; verwenden?

0

Es ist einfach. Statt

$_SESSION['kelime'][$i]["nr"] = +1; 

Sie sollten

$_SESSION['kelime'][$i]["nr"]++; 
// or $_SESSION['kelime'][$i]["nr"] += 1; 

Das Problem hier ist = +1, die den Wert auf 1 gesetzt und erhöhen nicht.

+0

Entschuldigung. Es hat nicht funktioniert: / – Brown

Verwandte Themen