2017-04-04 3 views
0

これはやや単純です。私はまだ良い、決定的な質問を作成するためのいくつかの問題がありますが、私はベストを尽くします。PHP:「ケース」を進行させるストーリーを作成するには?デバッグ

が進行中の一部のラジオボタンで情報を送信している間にPHPコードを作成したいとします。これまでに書いたスクリプトの例があります。

ユーザーがラジオボタンをクリックし、コードが進行し、$ countが+1になるコンテンツを送信するたびに、私は2段階の進行を作成しました。ユーザーが1つのラジオボタンを選択して送信ボタンをクリックするたびに、プログラムは選択されたラジオボタンのすべてを1ステップでエコーしています。 (私が持っていないもの)

私はそれがなぜそうであるかわかりません。 に詰めてください。コードを停止して再起動しますか?

私はこのためにCASEを使用しましたが、それは動作しないためにすべての方法であれば、それが最良の方法ではないことは確信しています。私は、ユーザーが送信ボタンをクリックするたびにプログレッションが保存される代わりにコード全体がリセットされると思います。

私は何をしなければなりませんか?クリックした情報を保存するには、アレイを使用する必要がありますか?LOOPSを使用する必要がありますか?私は両方を試しましたが、私はまだ私の問題の解決策はありません。

私が心配しているコードの最も簡単な解決策は何ですか?もう一つのステップは、私はPHPで簡単なテキストの冒険を作成したい。私はテストのためにPHPを習得しなければなりません、そして、私はコードを少し遊んで、それがどのように動作するかを理解する助けになると思います。

ここに私が書いたコードがありますが、私はそれを再配置し、他のものを使用して、それを動作させるためにケースのisteadを使用しなければならないと思います。

<html> 
<head> 
    <title>Abfrage</title> 
</head> 
<body> 
<h4> Typentest</h4> 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>"method="post"> 
<p>What would you chose?</p><br /> 

     <input type="radio" id="a1" name="weapon" value="1" checked> <label for="a1"> Dagger</label><br> 
     <input type="radio" id="a2" name="weapon" value="2"> <label for="a2"> Sword</label><br> 
     <input type="radio" id="a3" name="weapon" value="3"> <label for="a3"> Saber</label><br> 



     <input type="submit" name="gesendet" value="ok"></button> <br /> 
    </form> 


    <?php 

     if(isset($_POST['gesendet'])){ 
     // Variablen deklararien und Werte zuweisen. 
      $weapon = $_POST['weapon']; 
      $count = 0; 


     //First chosing 

      if (!empty($weapon) && $count == 0){ 

       switch($weapon){ 
        case "1": 
         echo "You chose a crude dagger "; 
         $count = $count + 1; 
         break; 
        case "2": 
         echo "You chose a crude sword"; 
         $count = $count + 1; 
         break; 
        case "3": 
         echo "you chose a crude saber"; 
         $count = $count + 1; 
         break; 


       } 

      } 
      //second chosing after second time "submit" 
      if (!empty($alter) && $count == 1){ 

       switch($alter){ 
        case "1": 
         echo "you chose a fine dagger"; 
         $count = $count + 1; 
         break; 
        case "2": 
         echo "you chose a fine sword"; 
         $count = $count + 1; 
         break; 
        case "3": 
         echo "you chose a fine saber"; 
         $count = $count + 1; 
         break; 


       } 

      } 


      else { 

       echo "Ihre Eingabe ist fehlerhaft "; 
      } 
     } 


    ?> 
</body> 

+0

$ count == 0の場合、2つのスイッチブロックが読み取られます。それはあなたが望むものですか? – iguypouf

+0

最初に最初のスイッチブロックを使用する必要があります。私は新しいスイッチブロックを書く場合、それはそうする必要があります。 – flightofthepenguin

+0

* break; *は最初のスイッチインスタンスを閉じます。デフォルトの場合を除いて* $ count *が1に等しく、2番目のスイッチインスタンスが実行されることを意味します。各submitは、* $ count *を再び0に設定します。 – iguypouf

答えて

0

いや、

私はよく理解していれば、あなたは(フォーム$ _POST [ '数']であなたの手順を登録することによって)そのような何かしたい:

$count = 0; 
if(isset($_POST['gesendet'])){ 
    // Variablen deklararien und Werte zuweisen. 
    $alter = $_POST['alter']; 
    $count = $_POST['count']; 

    if (!empty($alter) { 
     if($count == 0){ 

      switch($alter){ 
       case "1": 
        echo " a"; 
        $count = 1; 
        break; 
       case "2": 
        echo "b"; 
        $count = 1; 
        break; 
       case "3": 
        echo "c"; 
        $count = 1; 
        break; 

       default: 
        echo "whatever!<br>";//is this nescessary? 
      } 
     } 
     else 
     { 
      if($count == 1){ 

       switch($alter){ 
        case "1": 
         echo "d"; 
         $count = 2; 
         break; 
        case "2": 
         echo "e"; 
         $count = 2; 
         break; 
        case "3": 
         echo "f"; 
         $count = 2; 
         break; 

        default: 
         echo "whatever<br>"; //is this nescessary? 
       } 

      } 

     } 
    } 

しかし正直なところ、その例と、あなたのポスト値が反復的でない場合を除いて、あなたは配列でそれをとても簡単に行うことができます:

$answers = array("a","b","c"); 
$answer = "WhatEver"; 
if($alter < 4) $answer = $answers[$alter-1]; 

または

$answers = array("1" => "a","2" => "b","3" => "c"); 
$answer = "WhatEver"; 
if($answers[$alter]) $answer = $answers[$alter]; 

非常に長い時間をチェックするので、構文、PHPをしたが、ロジックがあります。

+0

ああ参照してください。私はこれを後でチェックする。私はそれが正しい方向に行くと思う。私が欲しいのはこれです:もし$ = 1が "これ"を$ a + 1よりもエコーしていれば、a2 =エコー "それ"などです。送信ボタンがクリックされるたびに、カウンタは+1になり、+1ごとに別のテキストが表示されます。 – flightofthepenguin

+0

私はまさに私が望んでいたものではありません:私がやりたいことはちょっと異なっています。また、私はcoundが投稿される情報ではなく、何か固有のものであることを望みます。 – flightofthepenguin

+0

各ステップがポスト・アクションの後に続く場合は、セッションで、または現在のステップを照会することができます。あなたの戦略は、ユーザーが途中でストーリーを取ったり、毎回それを開始しなければならないかどうかによって異なります。 – iguypouf

関連する問題