表格覆盖多个页面 - URL应保留

时间:2010-08-03 16:25:43

标签: php forms url

不知道我的英语是否足以解释这一点: 我已经制作了一份需要4或5页的表格,直到最终提交。 在每次更改时,Post都会作为隐藏字段添加到新页面,并调用新脚本。

<form method="post" action="form4.php">

我的问题是我不希望浏览器显示新脚本的网址,理想情况下将其保留在原始网址。

我不知道在Google上搜索或在此处搜索解决方案的正确术语。也许你可以给我一个提示如何实现这个目标?

5 个答案:

答案 0 :(得分:2)

另一个选择是分阶段处理同一个脚本的表单。

<form action="formhandler.php" method="post">
<input type="hidden" name="form_stage" value="1" />
....
</form>

并在formhandler.php中:

switch($_POST['form_stage']) {
   case 5:
       // handle the stage 5 stuff here
       break;
   case 4:
       // handle stage 4 stuff here, output form for stage 5
       break;
   case 3:
       // handle stage 3 stuff here, output form for stage 4
       break;
   case 2:
      // ditto
      break;
   case 1:
   default:
      // display initial form here
}

当然,您不必使用开关。 if / else的长序列如果也能正常工作,则归结为个人偏好/代码复杂性。但是这个基本的工作流程允许你保持相同的URL并仍然显示多种不同的形式,而不必诉诸AJAX / javascript。

答案 1 :(得分:0)

如果表单的操作是form4.php,那么您无法更改表单发布到的URL。但是,您可以在将帖子数据处理到您希望用户所在的URL后立即进行重定向。

或者,您可以更改表单操作,以便它们都发布到同一页面,并允许在PHP中发布多种类型的帖子。

答案 2 :(得分:0)

您可以使用Ajax并将数据从表单传递到PHP脚本,而不是加载新表单。或者您可以将参数(隐藏或不隐藏)传递给文件:

<form action="form.php?p=1" method="post">
...
</form>

隐藏参数:

<form action="form.php" method="post">
<input type="hidden" value="4" name="p">
...
</form>

根据p值,您可以加载正确的表单并使用其余数据执行操作。

答案 3 :(得分:0)

将您的php网站加载到某个页面的iframe内。此页面的网址将始终保留。

答案 4 :(得分:0)

我认为我找到了另一种解决方案并想分享它:

使用交换机的解决方案和带有ajax的解决方案让我想到如何更轻松地解决这个问题。为什么不在一个页面上制作表格并隐藏不同的部分。在提交零件的按钮之前的等待现在是隐藏上一部分并显示下一部分的按钮。

        <script type="text/javascript">
        window.addEvent('domready', function() 
            {
            $$('.blau').set('text', 'Erkennen Sie die Heilpflanze?');
            $('page_2').slide('hide');
            $('page_3').slide('hide');
            $('page_4').slide('hide');
            $('page_5').slide('hide');
            var togglePrefix = 'toggle_', boxPrefix = 'page_', emptyPrefix = '';
            $$('.submit_box a').addEvent('click', function(e)
                {
                e.stop();
                var id = $(this.get('id').replace(togglePrefix,emptyPrefix));
                var id_new = parseInt($(this).get('id').replace(togglePrefix, emptyPrefix)) + 1; 
                var next = ('page_'+id_new);
                var id_old = $(this.get('id').replace(togglePrefix,boxPrefix));
                $(id_old).set('slide', {duration: 'long', transition: 'linear'});
                $(id_old).slide('out');
                $(next).slide('in');

                if (next == 'page_1')
                  {

                  }
                if (next == 'page_2')
                  {

                  }
                if (next == 'page_3')
                  {

                  }
                if (next == 'page_4')
                  {
                  $$('.blau').set('text', '....und die letzte ist?');
                  }
                if (next == 'page_5')
                  {
                  $$('.blau').set('text', 'Nur noch ein paar Daten:');
                  }
                });
            });
        </script>

html:

<form id="gewinnspiel" name="gewinnspiel" method="post" action="<?=$_SERVER[PHP_SELF]; ?>">
<div id="page_1"> 
    <div class="inhalt-gewinn">
      <div class="gewinn_bild"></div>
      <div class="gewinn_form">
              <div class="input_box">
                  <div><input type="radio" name="frage1" value="Kamille" /><span>Kamille</span></div>
                  <div><input type="radio" name="frage1" value="Kaktus" /><span>Kaktus</span></div>
                  <div><input type="radio" name="frage1" value="Krokus" /><span>Krokus</span></div>
              </div>
              <div class="submit_box"><a id="toggle_1" class="frage">nächste Frage...</a></div>
      </div>
      <div class="gewinn_werbung"></div>
    </div>
</div>

<div id="page_2">
    <div class="inhalt-gewinn">
      <div class="gewinn_bild"></div>
      <div class="gewinn_form">
          <div class="input_box">
              <div><input type="radio" name="frage2" value="Ringelblume" /><span>Ringelblume</span></div>
              <div><input type="radio" name="frage2" value="Rotklee" /><span>Rotklee</span></div>
              <div><input type="radio" name="frage2" value="Ringelkraut" /><span>Ringelkraut</span></div>
              </div>
              <div class="submit_box"><a id="toggle_2" class="frage">nächste Frage...</a></div>
      </div>
      <div class="gewinn_werbung"></div>
    </div>
</div>

<div id="page_3">
    <div class="inhalt-gewinn">
      <div class="gewinn_bild"></div>
      <div class="gewinn_form">
          <div class="input_box">
                <div><input type="radio" name="frage3" value="Enzian" /><span>Enzian</span></div>
                <div><input type="radio" name="frage3" value="Eisenkraut" /><span>Eisenkraut</span></div>
                <div><input type="radio" name="frage3" value="Eiche" /><span>Eiche</span></div>  
              </div>
              <div class="submit_box"><a id="toggle_3" class="frage">nächste Frage...</a></div>
      </div>
      <div class="gewinn_werbung"></div>
    </div>
</div>

<div id="page_4">
    <div class="inhalt-gewinn">
        <div class="gewinn_bild"></div>
        <div class="gewinn_form">
            <div class="input_box">
                  <div><input type="radio" name="frage4" value="Wollblume" /><span>Wollblume</span></div>
                  <div><input type="radio" name="frage4" value="Tulpe" /><span>Tulpe</span></div>
                  <div><input type="radio" name="frage4" value="Rose" /><span>Rose</span></div>
              </div>
              <div class="submit_box"><a id="toggle_4" class="frage">nächste Frage...</a></div>
      </div>
      <div class="gewinn_werbung"></div>
    </div>
</div>

<div id="page_5">
    <div class="inhalt-gewinn">
        <div class="gewinn_bild"></div>
        <div class="gewinn_form">
            <div class="input_box_ende">     
                <?php echo '<input name="date" type="hidden" value="', time(), '" />'; ?>
                <div class="nosee">eMail:<input name="email" type="text" id="email" value="<?=$_POST['email']; ?>" size="30" /></div>
                <div><span>Vorname:</span><input type="text" name="vorname" value="<?=$_POST['vorname']; ?>"/></div>
                <div><span>Nachname:</span><input type="text" name="nachname" value="<?=$_POST['nachname']; ?>"/></div>
                <div><span>Strasse:</span><input type="text" name="strasse" value="<?=$_POST['strasse']; ?>"/></div>
                <div><span>Ort:</span><input type="text" name="ort" value="<?=$_POST['ort']; ?>"/></div>
                <div><span>PLZ:</span><input type="text" name="plz" value="<?=$_POST['plz']; ?>"/></div>
                <div><span>eMail:</span><input type="text" name="imehl" value="<?=$_POST['imehl']; ?>"/></div>
            </div>
            <div class="submit_box"><input id="submit" name="senden" type="submit" value="Senden" /></div>
          </form>
        </div>
    </div>
</div>
一切正常!感谢你的灵感!