如何将php if语句添加到我的表单中

时间:2014-06-10 18:09:05

标签: php mysql

我有一个更新表单,用户可以在其中更新其信息,但如果某些信息已经有值,则无法更新某些信息。

根据我的理解,你必须将PHP代码放在表单标签之外,那么表单如何知道数据库字段是否有值?这是否可以在下面猜测它不会

<form>
<?php    
if (empty($user_data['fieldName'])) {
      echo '<label>field name</label>
      <input type="text" name="fieldName">';
      }
?>
</form>

有没有人知道解决这个问题的方法?或者如何在更新区域中显示字段之前检查?

4 个答案:

答案 0 :(得分:1)

这部分代码是正确的,在数组$ user_data中分配用户数据时可能会出现问题。

另一种方法是简单地禁用输入文本,这样您就可以向用户显示信息而无需让他进行更改。

 <form>
    <?php 
       $disabled = "";
       if (empty($user_data['fieldName'])) {
           $disabled = 'disabled="disabled"'
       } ?>
           <label>field name</label>
           <input type="text" name="fieldName" <?php echo $disabled; ?>/>
 </form>

答案 1 :(得分:0)

当然你可以这样做,但如果不存在更新,你应该检查服务器

同样最可读的方法是使用像这样的替代php语法

<form>
  <?php if (empty($user_data['fieldName'])): ?>
      <label>field name</label>
      <input type="text" name="fieldName">
  <?php endif; ?>
</form>
以这种方式你可以看到你的HTML代码的颜色

看到这个链接, Alternative php syntax 该文档适用于codeigniter但适用于干净的PHP

抱歉我的英文不好:)

答案 2 :(得分:0)

如评论中所述,您可以将PHP放在*.php文件中的任何位置,只要它包含在正确的开始和结束标记中即可。

那就是说,这是一个双面的过程:

在表单中我建议简单地禁用输入,因此显示数据,但不可修改:

<form>
<label>field name</label>
      <input type="text" value="<?php echo addslashes($user_data['fieldName']) ?>" name="fieldName" <?php if(!empty($user_data['fieldName'])) { echo 'disabled="disabled"; } ?> />
</form>
<?php /* Off the top of my head I can not remember how exactly to escape this
form value, it may be `htmlspecialchars`, but it eludes me in the immediate
moment.  Sorry. */ ?>

在服务器端,您处理表单发布数据时,您需要仔细检查是否有人没有伪造数据:

if(!empty($user_data['fieldName']) && !empty($_POST['fieldName'])) {
  unset($_POST['fieldName']);
}

这样可以避免人们修改客户端上的表单结构,从而将数据伪造到系统中。你应该总是做类似的检查。

答案 3 :(得分:0)

你应该有一个演示代码,如下所示:

<form>
    <label>field name</label>
    <input type="text" name="fieldName" <?=!empty($user_data['fieldName'])?'disabled="disabled"':''?>>
</form>

要更新的脚本,您必须在更新前检查是否设置了值。