【问题标题】:PHP for HTML forms用于 HTML 表单的 PHP
【发布时间】:2013-03-15 12:12:35
【问题描述】:

我将以下下拉列表作为 HTML 表单的一部分:

Print Options:<br/><select name="printopts">
              <option selected=""></option>
              <option value="Print Longest Answer">Print Longest Answer</option>
              <option value="Print Sorted Order">Print Sorted Order</option>
              </select>

如果用户选择“打印最长答案”,我需要我的 php 脚本来执行 strlen() 函数;如果用户选择“打印排序顺序”,我需要执行 strcmp($str1, $str2)。

我了解这些函数的工作原理,只是不确定在脚本中的何处或如何调用它们。任何帮助都会很棒!干杯!

更新:到目前为止,这是我的脚本/表单。它从一些验证检查开始,但我正在尝试研究如何在这些验证检查发生后让下拉框执行 strlen() 和 strcmp() 函数。

<?php
if (isset ($_POST['answer1'], $_POST['answer2'], $_POST['printopts'])) {
  $errors = array () ;

  $answer1 = $_POST['answer1'];
  $answer2 = $_POST['answer2'];
  $printopts = $_POST['printopts'];

  if (empty($answer1) || empty($answer2) || empty($printopts))  {
    $errors[] = 'All fields are required';
    } else {

      if (strlen($answer1) < 4 ) {
          $errors[] = 'Answer 1 is too short! Please Re-enter';
      }
      if (strlen($answer1) > 6 ) {
          $errors[] = 'Answer 1 is too long! Please Re-enter';
      }
      if (strlen($answer2) < 4) {
          $errors[] = 'Answer 2 is too short! Please Re-enter';
      }
      if (strlen($answer2) > 6) {
          $errors[] = 'Answer 2 is too long! Please Re-enter';
      }
      if (is_numeric($answer1)) {
          $errors[] = 'Answer 1 must only contain letters. Please Re-enter';
      }
      if (is_numeric($answer2)) {
          $errors[] = 'Answer 2 must only contain letters. Please Re-enter';
      }

    if (!empty($errors)) {
        foreach ($errors as $error) {
          echo '<strong>', $error,  '</strong><br/>';
        }
    } 

    else {
          echo 'Thank you for your answers!';
    }
    }


}
?>

<form action="test.php" method="post">
              <p>
              Answer 1:<br/><input type="text" name="answer1"/><br/>
              Answer 2:<br/><input type="text" name="answer2"/><br/>
              Print Options:<br/><select name="printopts">
              <option selected=""></option>
              <option value="Print Longest Answer">Print Longest Answer</option>
              <option value="Print Sorted Order">Print Sorted Order</option>
              </select>
              <br/>
              </p>
              <p><input type="submit" value="Submit" /></p>
              </form>

【问题讨论】:

  • 在您在这里提问之前,请先进行一些搜索。这方面的例子可以在网络上的任何地方找到。 w3schools.com/php/php_syntax.asp
  • 什么脚本?你试过什么?
  • 1.你试过什么? 2.可能只是使用数字而不是字符串作为值,即&lt;option value="1"&gt;Print Longest Answer&lt;/option&gt;
  • 请我的朋友,其他人给出一些答案,但您可以像我们中的许多人一样为自己做很多事情。
  • 我刚刚将我的 php 脚本添加到原始帖子中。我还没有添加下拉列表的功能,因为我不希望它们干扰我在验证检查工作方面已经取得的进展

标签: php html forms strcmp strlen


【解决方案1】:

对,首先你需要在

html标签和方法参数中设置action='myscript.php'(例如:method='get')。 所以它是这样的:
<form action='myscript.php' method='get'>
...
</form>

然后在 myscript.php 中,您将需要检查您的 php 代码:

if($_GET['printopts']=='Print Longest Answer') {
     //do your strlen here
} else {
     //do strcmp here
}

【讨论】:

  • 谢谢玛蒂娜。在我的验证检查之后,我将尝试使用带有 strlen 和 strcmp 的 if/else 语句。非常感谢
【解决方案2】:
function do_print($str1, $str2) {

if ($_GET['printopts'] == "Print Longest Answer") {

   strlen();

} else {

  strcmp($str1,$str2);

}

 }

表单提交后执行do_print。

【讨论】:

  • 感谢反向媒体的回答!我正在尝试调整我的脚本来解决这个问题。真的很感激
猜你喜欢
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多