【问题标题】:PHP: connect drop-down list with submit button and if/else statementPHP:使用提交按钮和 if/else 语句连接下拉列表
【发布时间】:2016-01-09 11:12:22
【问题描述】:

所以,解释一下我的问题。我在 Web 服务器上有四个 .php 代码,并且我在 php 代码中也有下拉列表(它包括服务器上所有四个 php 文件的名称)。我也有提交按钮。

我应该执行以下操作:用户从下拉列表中选择一个名称,单击提交按钮,然后应该调用该 php 文件并显示在网页上。

问题是,我不知道热连接这三个部分的php代码。

<p>
  What Genre you want?
<select name="Ganre">
  <option value="">Select...</option>
  <option value="FPS">FPS</option>
  <option value="JRPG">JRPG</option>
  <option value="RPG">RPG</option>
  <option value="Sports">Sports</option>
</select>
<input type="submit" value="Submit" />

<if (Genre == "FPS") { ?>
<form method="get" action="FPS.php"}>
  <else if (Genre == "JRPG") { ?>
  <form method="get" action="JRPG.php"}>
    <else if (Genre == "RPG") { ?>
    <form method="get" action="RPG.php"}>
      <else if (Genre == "Sports") { ?>
      <form method="get" action="Sports.php"}>
</p>

【问题讨论】:

    标签: php if-statement button drop-down-menu submit


    【解决方案1】:

    您提供的代码有几个问题:

    • 对于那些关闭 ?&gt; 的人,您没有打开 &lt;?php
    • 你有很多无效的语法,比如If (Genre == "FPS") {(什么是流派?)或类似 &lt;else if
    • 您有两种“流派”(Ganre)拼写。

    有几种方法可以做你想做的事。由于您没有提到 Javascript,因此我提出了一个仅限 PHP 的解决方案。您只需让表单提交给 相同的 PHP 文件,并在那里检测做出了哪个选择。然后让PHP重定向到 选择页面:

    <?php
       if (isset($_GET["genre"])) {
           // User submitted their choice, so redirect to that page
           // Make sure not to echo anything when using header():
           header("Location: " . $_GET["genre"] . ".php");
           // Make sure to not execute any other code in this file
           exit();
       } 
       // User did not yet submit a choice, so present list
    ?>
    <form method="get">
        <p>
            What Genre you want?
            <select name="genre">
                <option value="">Select...</option>
                <option value="FPS">FPS</option>
                <option value="JRPG">JRPG</option>
                <option value="RPG">RPG</option>
                <option value="Sports">Sports</option>
            </select>
            <input type="submit" value="Submit"/>
        </p>
    </form>
    

    【讨论】:

      【解决方案2】:

      将 onchange 添加到 select 标记中,并在 javasctipt 代码下方添加。

      <form method="get" action="">
        <select name="Ganre" onchange="actionChangdde(this)">
          <option value="">Select...</option>
          <option value="FPS">FPS</option>
          <option value="JRPG">JRPG</option>
          <option value="RPG">RPG</option>
          <option value="Sports">Sports</option>
        </select>                     
        <input type="submit" value="Submit" />
      </form>
      
      <script>
          function actionChangdde(sel){
              var getSelVal = sel.value;
              var repAction = getSelVal+'.php';               
              sel.parentElement.setAttribute("action", repAction);                
          }
      </script>
      

      【讨论】:

      • 不错的解决方案!也许应该删除 select 元素的 name 属性以避免其值附加到 URL。
      【解决方案3】:

      试试这个代码:

      <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
      </head>
      <form>
      <p>
        What Genre you want?
      <select name="Ganre" id="genre">
        <option value="">Select...</option>
        <option value="FPS">FPS</option>
        <option value="JRPG">JRPG</option>
        <option value="RPG">RPG</option>
        <option value="Sports">Sports</option>
      </select>
      <input type="submit" value="Submit" id="submit_button"/>
      </p>
      </form>
      <script type="text/javascript">
          $(document).ready(function(){
      
            var dropDownValue = $('#genre').val();
            $('#submit_button').click(function () {
            if($('#genre').val() == "FPS"){
              window.location="FPS.php";
            }
            if($('#genre').val() == "JRPG"){
              window.location="JRPG.php";
            }
            if($('#genre').val() == "RPG"){
              window.location="RPG.php";
            }
            if($('#genre').val() == "Sports"){
              window.location="Sports.php";
            }
            if($('#genre').val() == ""){
              return false;
            }
      
        });
          });
      </script>
      

      【讨论】:

      • 这里不需要涉及jQuery。
      • 我试过代码。当我选择例如 RPG 并单击提交按钮时,它只会清除我在下拉列表中的选择 - 它没有在页面上调用/显示 RPG 文件。
      • 我没有测试过这段代码,只是给你一个概述。你可以这样尝试。
      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多