三元运算符使 html 结束标签不可见[重复]

问题描述 投票:0回答:2

我正在使用三元运算符为空字段创建一个非常基本且简单的验证。

代码:

<?php
    echo "<span class='error'>" . $error = (isset($_POST['naam']) && empty($_POST['naam'])) ? 'Required field' : test_input(isset($_POST['naam'])) . "</span>"
?>

全线

echo "<div class='form-group'><Label for='name'>Voorstelling naam</Label><input type='text' name='naam' value='".$row['naam']."' placeholder='Naam'><span class='error'>" . $error = (isset($_POST['naam']) AND empty($_POST['naam'])) ? 'Dit is een verplicht veld' : test_input(isset($_POST['naam'])) . "</span></div>";

代码工作正常,但

</span>
标签在浏览器中不起作用/不可见

php html ternary-operator
2个回答
1
投票

你的代码对我来说似乎不完整。

您可以在 HTML 中添加 PHP 代码:

<!-- PHP INSIDE HTML -->
<span class="error"><?php echo (empty($_POST['naam']))? "Required field" : test_input($_POST['naam']); ?></span>

或在 PHP 中生成 HTML:

<?php
// HTML INSIDE PHP
$html = '<span class="error">'
      . (empty($_POST['naam'])? "Required field" : test_input($_POST['naam']))
      . '</span>';
echo $html;
?>

补充说明:

1 - 我认为你不需要测试

isset
empty
,因为如果变量不存在,
empty
返回
true
,并且我相信如果字段未正确传输,你也想显示错误?

2 - 并且您不需要在对

isset()
函数的调用中使用
test_input()
,因为如果您的脚本到达此步骤,您已经知道
$_POST['naam']
存在并且不为空,通过这样做,您将使用 isset 的返回值作为参数,而不是字段的实际值。


-1
投票

使用更新后的代码,尝试删除

$error =
分配部分。您还将
isset
返回值传递给
test_input
,这可能不是您想要的。

由于

$error =
赋值中的三元组,
"</span></div>"
仅附加到检查失败的情况。

echo "<div class='form-group'><Label for='name'>Voorstelling naam</Label><input type='text' name='naam' value='".$row['naam']."' placeholder='Naam'><span class='error'>" . 
    $error = (isset($_POST['naam']) AND empty($_POST['naam'])) ? 
        'Dit is een verplicht veld' : // No added "</span></div>" here, doesn't close!
        test_input(isset($_POST['naam'])) . "</span></div>"
;
© www.soinside.com 2019 - 2024. All rights reserved.