2017-04-04 63 views
0

这很简单:我仍然有一些问题来创建好的,确凿的问题,但我尽我所能。PHP:如何创建一个故事进展“案例”?和调试

我想创建一个php代码,进步而用户提交的信息与一些单选按钮。有一个我写到目前为止的脚本示例。

每当用户点击一个单选按钮并提交代码应该进展的内容,$ count就会得到+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时,读取两个开关块。这是你想要的吗? – iguypouf

+0

首先应该使用第一个开关块,而不是同时提交第二个开关块。如果我写新的开关块,它应该继续下去。 – flightofthepenguin

+0

不是。 * break; *将关闭第一个开关实例;这意味着除了默认情况外,* $ count *等于1,第二个交换机实例将被执行。每次提交将再次将* $ 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回声“this”比$ a + 1,如果a2 =回显“那个”等等。每次点击提交按钮时,计数器应该+1,并且每+1应该出现另一个文本。 – flightofthepenguin

+0

我不完全是我想要的:我想要做的是有点不同。我也想要不是一个信息,得到的张贴,但东西inherented。 – flightofthepenguin

+0

如果每个步骤都遵循一个发布后操作,则可以发布或存储会话或查询当前步骤。您的策略取决于用户是否可以将故事放在中间或每次都必须启动它。 – iguypouf

相关问题