【问题标题】:else if returning true when falseelse if 为 false 时返回 true
【发布时间】:2016-11-14 20:53:17
【问题描述】:

我试图弄清楚为什么我的 elseif 语句返回 else if $name

<!DOCTYPE html>
<?php



$name = '' ;
$score = '' ;
$message = '';

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

 $name = $_POST["name"];
 $score = $_POST["score"];

 if (!$name || !$score) {

    $message = "Please fill in both name and score!";

 } elseif ($name < 5) {

   $message = "name must be at least 5 characters";


 } elseif ($score < 5) {

     $message = "score must be at least 5 characters";

 } else {

   echo 'Great';

 }

}



?>



<h1>Enter Your info </h1>
<hr>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
    Name: <input type="text" name="name" placeholder="Enter Name" value="<?  php echo $name;  ?>"> <br>
    Score: <input type="text" name="score" placeholder="Enter Score" value="    <?php echo $score;  ?>">
    <hr>
    <input type="submit" name="submit" value="add">

</form>
<p class="error">
  <?php echo $message ;  ?>
</p>




</body>
</html>

【问题讨论】:

  • 你的意思是strlen($name) &lt; 5
  • @u_mulder x-file 已关闭 ;)
  • 您认为'Fred' &lt; 5 应该评估为什么?字符串小于整数?
  • 谢谢,我忘记了,哈哈
  • 好的,只需在输入上尝试pattern="[A-Za-z]{3}"!查找 HTML 输入属性

标签: php html if-statement


【解决方案1】:

问题出在这里:

$name < 5
$score < 5

它们都是字符串,输出是不希望的。要检查长度,请将它们更改为:

strlen($name) < 5
intval($score) < 5

正如 cmets 中提到的,这是一个错误:

value="<?  php

不应该有任何空格。

【讨论】:

  • 还要注意他关于这部分的内容 `value="
  • 拖钓空格?
  • @MarkeseP 看看我编辑的东西...php之前有一个空格@
  • @MarkeseP 分数以整数形式发布,我只是在转换数值。
【解决方案2】:

访问 (How to get int instead string from form?) 基本上你是在比较一个字符串和一个数字, 它应该是一个int

$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2016-05-10
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多