繁体   English   中英

输出值的PHP语法错误

[英]PHP syntax error for outputting value

我如何写这篇文章,重点是:

isset($fields['firstName']) 
  ? ' value=" ' . e( $fields['firstName'] ) . '"' 
  : '' ?>

由此:(这是来自包含php的HTML文件)

<input type="text" class="form-control" placeholder="First Name" name="firstName" id="firstName" <?php echo isset($fields['firstName']) ? ' value="' . e($fields['firstName']) . '"' : '' ?>>

进入:(这是来自包含html的php文件)

$output .= '<input type="text" class="form-control" placeholder="Name" id="name" name="name">';

这里的目标是使用第二个语句获得相同的语法,因为我将在函数中返回$ output变量。 因此我不能使用第一个语句并希望转换语法。 提前感谢您的帮助

这是我需要第一个语句的函数的一部分(焦点在于名称输入值):

function get_special_promos_landing_html ($id, $item, $errors, $success, $fields) {
    $output = '';

    $output.= '<form name="couponForm" class="couponForm" method="post"  action="mail/coupon_form.php" novalidate>';
    $output.= '<div class="row">';
    $output.= '<div class="col-md-12">';
    $output.= '<div class="row control-group">';
    $output.= '<div class="form-group col-xs-12 controls">';
    $output.= '<input type="text" class="form-control" placeholder="Name" id="name" name="name" required data-validation-required-message="Please enter your name. **need the above syntax here to retain value when I have an error**. ">';
    //if name error
    if(!empty($errors['name'])) {
        $output.= '<div class="error_notice">';
        $output.= '<ul>';
        $output.= '<li>' . $errors["name"] . '</li> <!--Lists down errors-->';
        $output.= '</ul>';
        $output.= '</div>';
    }   
    $output.= '</div>';
    $output.= '</div>';
    $output.= '</div>';

    $output.= '<div class="col-md-2">';
    $output.= '<div class="row control-group">';
    $output.= '<div class="form-group col-xs-12 controls text-center">';
    $output.= '<button type="submit" class="btn btn-theme-dark">Submit</button>';
    $output.= '</div>';
    $output.= '</div>';
    $output.= '</div>';
    $output.= '</div>';
    $output.= '<div id="success"></div>';
    $output.= '</form>';

    return $output;
}

像这样?

$output .= '<input type="text" class="form-control" placeholder="Name" id="name" name="name" ' . (isset($fields['firstName']) ? ' value="' . e($fields['firstName']) . '"' : '')  . '>';

你从中获取值的位置有点不清楚,并将其放入函数get_special_promos_landing_html()中。

<input type="text" class="form-control" placeholder="First Name" name="firstName" id="firstName" <?php echo isset($fields['firstName']) ? ' value="' . e($fields['firstName']) . '"' : '' ?>>

对于上面的代码,如果您使用的是提交按钮,并且希望保留这些值,则需要在代码中的某个位置执行此类操作。

if ($_POST) {
$somevariable = '<input type="text" class="form-control" placeholder="First Name" name="firstName" id="firstName" value="' . $_POST['firstName'] . '">

}

因为提交后您的字段会自动清除。 使用$ _POST,您可以将值返回到字段中。

另外,您可以在提交后再次重定向到同一页面,以便再次重新加载您的值。 在将所有插入数据库语句等之后,可以将其添加到最后

header('Location: ' . $_SERVER['PHP_SELF']);

尝试:

$output= '<input type="text" class="form-control" placeholder="Name" id="name" name="name">';
echo $output;

看起来像是这样的:

<input 
  type="text" 
  class="form-control" 
  placeholder="First Name" 
  name="firstName" 
  id="firstName" 
<?php 
  echo isset($fields['firstName']) ? 
    ' value="' . e($fields['firstName']) . '"' 
    : '' 
?>>

您已经在回声字符串中使用了ternary operator的错误语法, ternary operator符(在echo / print中使用时)应该如下表示:

echo (true ? "TRUE" : "FALSE");

并不是:

echo true ? "TRUE" : "FALSE";

我确定你可以看到那里有什么问题,并且使用isset只会根据数据返回一个true OR false

所以只需在echo周围添加括号,如下所示:

<?php 
  echo (isset($fields['firstName']) ? 
    ' value="' . e($fields['firstName']) . '"' 
    : '')
?>>

这应该解决它。 :~)

你要的是:

$output .= 
"<input type='text'class='form-control' placeholder='First Name' name='firstName' id='firstName'"
. (isset($fields['firstName']) ? " value='{$fields['firstName']}'");

(如有错误请在评论中报告,谢谢)

如果使用PHP和HTML(PHP作为var容器)我建议使用HEREDOC ,因为它使您的代码看起来更清晰,更容易阅读, 例如: (PHP的字符串插值不够强大,无法在HEREDOC内部使用三元运算符,但是,你可以预先设置值,如果Heredoc出现错误,请告诉我,因为Heredoc很痛苦。)

$value = (isset($fields['firstName']) ? "value='{$fields['firstName']'" : "");

$output .= <<<IDENTIFIER_FOR_HEREDOC;
  <input 
    type="text" 
    class="form-control" 
    placeholder="First Name" 
    name="firstName" 
    id="firstName" 
    value="{$value}"
IDENTIFIER_FOR_HEREDOC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM