【问题标题】:Accessing a value from HTML form and storing in PHP variable从 HTML 表单访问值并存储在 PHP 变量中
【发布时间】:2017-02-11 05:48:30
【问题描述】:

我试图从 HTML 表单中访问一个值,但它没有被正确导入。 我收到一条错误提示

未定义符号 $numb

(我正在尝试将我的文本输入存储到$numb)。

<html>
<body>
    <?php
        if (isset($_POST['submit'])) $numb=$_POST['text'];

        if($numb<1) {
            echo "Number < 1"; 
        }
        else if (100<$numb) {
            echo "Number > 100";
        }
        else if($numb==2) {
            echo "Prime";
        }
        else if($numb%2==0) {
            echo "Not prime";
        }
        else {
            $flag=0;
        }

        for($count=3;$count<sqrt($numb);$count=$count+2) {
            if($num%$count==0) {
                $flag=1;
            }
            break;
        }
        if($flag==0) {
            echo "Not Prime";
        }
        else {
            echo "Prime";
        }
    ?>
    <form method="post" action="main.php">
        <input type="text" name="text"> <input type="submit" value="Submit" name="submit">
    </form>
</body>

【问题讨论】:

  • 你能粘贴你的代码吗?就像您如何使用 HTML 表单发送数据一样?并使用 php 接收数据?
  • 我收到错误说明 $numb 在行 { $numb=$_POST['text']; 中未定义}
  • 我试过上面的代码。没有看到同样的错误。这是有错误的确切代码吗?如果您修改了代码,能否向我们展示更多您的代码?
  • 100"; } else if($numb==2) { echo "Prime"; } else if($numb%2==0) { echo "Not prime"; } 否则 $flag=0; for($count=3;$count

标签: php html forms http-post


【解决方案1】:

我试过你的代码。问题从这里开始:

if (isset($_POST['submit'])) $numb=$_POST['text'];

如果未设置变量$_POST['submit'],则变量$numb 未初始化。因此之后使用它(即if($numb&lt;1) 语句)将导致Undefined variable: numb

$flag 的类似问题。

如果没有提交表单,我认为没有理由运行打印文本。也许你应该这样重写它:

<html>
<body>
<?php

if (isset($_REQUEST['text'])) {
  $numb=$_REQUEST['text'];

  $flag=0; // initialize $flag to prevent error
  if($numb<1) {
    echo "Number < 1";
  } else if (100<$numb) {
    echo "Number > 100";
  } else if($numb==2) {
    echo "Prime";
  } else if($numb%2==0) {
    echo "Not Prime";
  } else {
    for($count=3;$count<sqrt($numb);$count=$count+2) {
      if($numb%$count==0) {
        $flag=1;
        break;
      }
    }
    if($flag==1) {
      echo "Not Prime";
    } else {
      echo "Prime";
    }
  }
}

?>
<form method="post" action="main.php">
  <input type="text" name="text"> <input type="submit" value="Submit" name="submit">
</form>
</body>
</html>

【讨论】:

  • 你能检查数字是否是素数吗?我没有得到任何回声或任何东西。
  • 您提交表格了吗?
  • 是的。请帮助我提供一个代码,该代码将为我提供我正在寻找的输出。也就是说,如果我在框中输入一个数字并单击提交,它应该返回该数字是否为质数。我正在检查 1 到 100 之间的数字
  • 请重新检查代码。按照目前的逻辑,你需要为每个数字提交表单来检查结果。
  • 假设我在文本框中输入数字 5 并单击提交。我应该得到 Prime 的输出。请注意,我并不是要打印 1 到 100 之间的所有质数。
【解决方案2】:

您在表单中提到的任何输入元素都以键值对的形式发布到服务器(在您的情况下为 php)。输入标签的名称属性成为键,输入元素的值标签成为值。

<?php 

    if(isset($_POST['submit'])) // this will always return false. there is no input named submit in your form 
    { 

        $numb=$_POST['text']; //this will never get initialized, $numb will be always undefined

    } 

?> 

这是正确的检查方法

<?php 

    if(isset($_POST['text'])) 
    { 

        $numb=$_POST['text']; 

    } 

?> 

这应该可以工作

【讨论】:

  • 我收到未定义符号错误,不在 $numb=$_POST['text'];当我尝试访问它时出现错误。请参考我上面的完整代码。
  • yes 要获取 $_POST['text'] 的值,您需要检查是否设置了 $_POST['text']。if(isset($_POST['submit'])) 这将始终返回 false
猜你喜欢
  • 2014-11-25
  • 2013-05-24
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多