【问题标题】:PHP comparing form variablesPHP比较表单变量
【发布时间】:2013-12-29 23:48:40
【问题描述】:

我一直在编写一个简单的脚本来学习更多关于 PHP 的知识。为此,我正在尝试创建一个表单处理程序,该处理程序将回显哪个用户的名称较旧,我感到非常困惑,希望你们中的某个人可以看看并给我一些关于我是什么的简单指示做错了。理想情况下,$result 将呼应年龄较大的人的姓名。

我的提交表单 (0001Form.php)

 <html lang="en">
 <head>
 <meta charset="utf-8">

 <title>Test | Form</title>
 <meta name="description" content="php tutorial stuff">
 <meta name="author" content="php tutorial stuff">
 <link rel="stylesheet" href="css/styles.css?v=1.0">
 <!--[if lt IE 9]>
 <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
 <![endif]-->
 </head>
 <body>
 <script src="js/scripts.js"></script>
 <form action="0001FormHandler.php" method="post">
 <p> Name 1:  <input type="text" name="userNameA" /> </p>
 <p>Age 1: <input type="text" name="userAgeA"/></p>
 <p>Your name 2: <input type="text" name="userNameB" /></p>
 <p>Your age 2: <input type="text" name="userAgeB" /></p>
 <p><input type="submit" /></p>
 </form>
 </body>
 </html>

我第一次尝试表单处理程序 (0001FormHandler.php):

<?php
    //Assign ages to vars for comparison from from
$varA == userAgeA;
$varB == userAgeB;

    //compare vars
if ($varA >= $varB)
{$result == UserAgeA;}
else ($result == userAgeB);

    //If A is older then B, use A name, else B
if ($result == UserAgeA)
{$result = userNameA;}
else ($result = userNameB);
?>


<!doctype html>

<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome <?php echo $result;?></title>
<meta name="description" content="php tutorial stuff">
<meta name="author" content="php tutorial stuff">

<link rel="stylesheet" href="css/styles.css?v=1.0">

<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>

<body>
<script src="js/scripts.js"></script>

<p>
Hello <?php echo htmlspecialchars($_POST['userNameA']); ?>.
You are <?php echo (int)$_POST['userAgeB']; ?> years old.

Hi <?php echo htmlspecialchars($_POST['userNameB']); ?>.
You are <?php echo (int)$_POST['userAgeB']; ?> years old.
</p>
</body>
</html>

我第二次尝试表单处理程序 (0001FormHandler.php):

    <?php
//asign values to evaluate
$varA = ($_POST[userAgeA]);
$varB = ($_POST[userAgeB]);
//If A is Greater then B, then a else b
if ($varA >= $varB)
{$result == UserAgeA;}
else ($result == userAgeB);
//if A then UserA else User B
if ($result == UserAgeA)
{$result = userNameA;}
else ($result = userNameB);
?>

<!doctype html>

<html lang="en">
<head>
<meta charset="utf-8">
//Echo result name in title!
    <title>Welcome <?php echo $result;?></title>
<meta name="description" content="php tutorial stuff">
<meta name="author" content="php tutorial stuff">

<link rel="stylesheet" href="css/styles.css?v=1.0">

<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>

<body>
<script src="js/scripts.js"></script>

<p>
Hello <?php echo htmlspecialchars($_POST['userNameA']); ?>.
You are <?php echo (int)$_POST['userAgeB']; ?> years old.

Hi <?php echo htmlspecialchars($_POST['userNameB']); ?>.
You are <?php echo (int)$_POST['userAgeB']; ?> years old.
</p>
</body>
</html>

【问题讨论】:

  • FIX 这个$varA == userAgeA; PHP 中的赋值是$varA = userAgeA; 只有一个等号。执行此操作,编辑您的代码,然后再次询问。
  • 在表单句柄的第一行中,要从“userAgeA”表单控件获取值,请使用 $_GET 或 $_POST。将值分配给 $varA 只使用一个等号。
  • 基于我有限的理解,我尽可能地尝试修改。
  • 根据下面的评论再次对其进行了重新修订,现在可以使用了。很有教育意义的练习。谢谢。
  • 我已回滚您的编辑;请不要修改您的问题,使其对遇到相同问题的其他人毫无用处。

标签: php forms variables compare


【解决方案1】:

您以错误的方式分配值。您正在使用 POST 方法,因此为了访问您应该使用的提交数据:

$varA = $_POST['userAgeA'];
$varB = $_POST['userAgeB'];

然后

if ($varA >= $varB)
 echo $_POST['userNameA']
else
 echo $_POST['userNameB']

我还注意到您使用 == 而不是 = 为变量赋值。正确的符号是

$varname = somevalue;

== 是一个比较运算符,它比较两个变量是否相等。

【讨论】:

  • 谢谢您,您的 cmets 和方向都是王牌!我在这里学到了很多东西,并将整晚都在玩这个,试图将它融入我的触觉记忆中,等等。非常感谢你。 (今年冬天我参加了我的第一个大学 php 课程,我正在努力降低基本语法,以便我可以专注于困难的事情!谢谢。
【解决方案2】:

您混淆了comparison operator ==assignment operator =。您还必须使用 $_POST 从表单中检索数据。

这段代码:

$varA == userAgeA;
$varB == userAgeB;

应改为(注意==改为=):

$varA = $_POST['userAgeA'];
$varB = $_POST['userAgeB'];

然后比较:

if ($varA >= $varB) {
    $result = $_POST['userNameA'];
}
else {
    $result = $_POST['userNameB'];
}

【讨论】:

    【解决方案3】:

    您的表单处理程序并没有真正从表单中获取数据。您可以通过$_POST variable 访问“POST”数据。这意味着您需要稍微更改您的代码(为了清楚起见,我删除了您的一些重复语句):

    <?php
    //Assign ages to vars for comparison from from
    $varA = isset($_POST["userAgeA"]) ? $_POST["userAgeA"] : 0;
    $varB = isset($_POST["userAgeB"]) ? $_POST["userAgeB"] : 0;
    
    //compare vars
    $result = ($varA >= $varB) ? $varA : $varB;
    
    ?>
    

    【讨论】:

    • 你的代码是说'VarA等于A帖子A(将0更改为年龄a); VarB 等于后 B(将零更改为 B);比较结果帖子哪个更大。这就是它在说的吗?它与我想象的非常不同(我是新手)。
    • 感谢您的澄清 - 非常感谢 - 新年快乐
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2016-08-26
    相关资源
    最近更新 更多